Jump to content

Recommended Posts

Posted

Что-то не выходит каменный цветок.

Запускаю VLC с конфигурационным файлом (опция --vlm-conf), в файле указано следующее:

new C313 broadcast enabled loop
setup C313 input rtsp://usr:pwd@10.102.3.13
setup C313 output #transcode{vcodec=h264,scale=Auto,width=1280,height=720}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://a.rtmp.youtube.com/live2/key}
control C313 play

Без transcode не работает, ругается на размеры и еще что-то.

С transcode как-то непонятно.

Запускается, открывает входной поток, буферизует его. tcpdump в этом момент фиксирует обмен трафиком с YouTube.

Затем буфер наполняется:

[0xab5948] [Media: C313] main input debug: Buffering 100%
[0xab5948] [Media: C313] main input debug: Stream buffering done (1038 ms in 1000 ms)
[0xab5948] [Media: C313] main input debug: Decoder buffering done in 0 ms

и более ничего не происходит, в таком состоянии VLC висит, пока не остановишь, трафик на YouTube не ходит.

На самом YouTube трансляция не ведется.

Если перезапускать VLC несколько раз, добившись от IP-камеры отказов в подключении, то VLC начинает проводить повторные попытки подключения и в этот момент трафик между сервером и YouTube активно ходит и на YouTube появляется сообщение, что вещание вот-вот начнется.

Но как только подключение к камере осуществляется успешно и потом буферизуется, снова ничего не происходит.

Posted

Попробовал сделать так:

ffmpeg \
  -i rtsp://usr:pwd@10.102.3.13 \
  -vcodec libx264 -pix_fmt yuv420p -preset feryfast -r 30 -g 2000k -b:v 1000k \
  -f flv "rtmp://a.rtmp.youtube.com/live2/key"

Теперь трафик на YouTube вроде бы уходит. На YouTube трансляция в статусе "Запуск", но картинки нет.

Posted

Добавил аудиодорожку (-acodec libmp3lame -ar 44100 -threads 6 -qscale 3 -b:a 712000 -bufsize 512k), не помогло.

Либо YT хочет настоящий звук, либо дело в чем-то другом.

Posted

Хотелось бы обойтись минимумом.

Я в интернете видел, что у людей и на голом vlc или ffmpeg получается вещать.

И я вроде бы делаю также, но почему-то не работает.

И в YT нет никакой информации, что именно ему не нравится.

Posted

Сделал так:

ffmpeg -re -rtsp_transport tcp \
  -i "$SRC" \
  -acodec libmp3lame -ab 128k -ar 44100 \
  -vcodec copy -threads 2 -bufsize 512k \
  -f flv "$DST/$KEY"

При запуске индикатор трансляции на YouTube на несколько секунд становится зеленым.

Но картинка так и не появляется, а еще через несколько секунд индикатор снова становится серым.

 

Posted

Не совсем, аудиодорожки на самом деле нет (если судить по отладочному выводу ffmpeg).

Если делаю так:

ffmpeg -re -rtsp_transport tcp \
  -i "$SRC" \
  -f lavfi -i anullsrc \
  -acodec libmp3lame -ab 128k -ar 44100 \
  -vcodec libx264 -pix_fmt yuv420p -preset veryfast -threads 2 -bufsize 512k -r 30 -g 2000k -b:v 1000k \
  -f flv "$DST/$KEY"

то получаю ошибку

Input #0, rtsp, from 'rtsp://***@10.102.3.13/live/main':
  Metadata:
    title           : IPCAM
  Duration: N/A, start: 0.041000, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuvj420p, 1280x720, 24.92 tbr, 90k tbn, 180k tbc
[Parsed_anullsrc_0 @ 0x1e8dd20] Cannot select sample rate for the link between filters Parsed_anullsrc_0 and out.
anullsrc: Invalid argument

(указывать параметры для anullsrc я пробовал, anullsrc=channel_layout=stereo:sample_rate=44100 дает такую же ошибку)

 

Если строку с lavfi вообще убрать (как в предыдущем сообщении), то ошибки нет и ffmpeg запускается, но аудиодорожки в выводе нет:

Input #0, rtsp, from 'rtsp://***@10.102.3.13/live/main':
  Metadata:
    title           : IPCAM
  Duration: N/A, start: 0.042000, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuvj420p, 1280x720, 24.92 tbr, 90k tbn, 180k tbc
Output #0, flv, to 'rtmp://a.rtmp.youtube.com/live2/***':
  Metadata:
    title           : IPCAM
    encoder         : Lavf54.29.104
    Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 1280x720, q=-1--1, 1000 kb/s, 1k tbn, 30 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)

Как правильно "приделать" аудиодорожку к видеопотоку (если причина в том, что YouTube хочет видео+аудио)?

Posted
22 часа назад, paradox_ сказал:

стянуть последнюю версию исходников и скомпилить с нужными ключами

Это как-бы непросто.

Сервер довольно старый (Debian 7), там кучу всего нужно обновлять, чтобы ffmpeg скомпилировать.

Пока что просто подсунул файл silent.wav с тишиной.

 

21 час назад, Brainiac сказал:

Может эти  две ссылки наведут на мысль.

Спасибо, поизучаю.

Пока что запустить не удается:

Input #0, wav, from './silent.wav':
  Duration: 00:00:02.00, bitrate: 352 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 22050 Hz, mono, s16, 352 kb/s
[rtsp @ 0x2047be0] Estimating duration from bitrate, this may be inaccurate
Input #1, rtsp, from 'rtsp://***@10.102.3.13/live/main':
  Metadata:
    title           : IPCAM
  Duration: N/A, start: 0.051000, bitrate: N/A
    Stream #1:0: Video: h264 (Main), yuvj420p, 1280x720, 25.42 tbr, 90k tbn, 180k tbc
[libx264 @ 0x203c420] VBV maxrate unspecified, assuming CBR
[libx264 @ 0x203c420] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0x203c420] profile High, level 3.1
[libx264 @ 0x203c420] 264 - core 132 - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options:  cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=2 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=2000000 keyint_min=30 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=cbr mbtree=1 bitrate=1500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=1500 vbv_bufsize=512 nal_hrd=none ip_ratio=1.40 aq=1:1.00
Output #0, flv, to 'rtmp://a.rtmp.youtube.com/live2/***':
  Metadata:
    encoder         : Lavf54.29.104
    Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 1280x720, q=-1--1, 1500 kb/s, 1k tbn, 30 tbc
    Stream #0:1: Audio: mp3 ([2][0][0][0] / 0x0002), 44100 Hz, mono, s16, 128 kb/s
Stream mapping:
  Stream #1:0 -> #0:0 (h264 -> libx264)
  Stream #0:0 -> #0:1 (pcm_s16le -> libmp3lame)

Скорее всего из-за того, что аудиофайл маленькой продолжительности (2 секунды).

А зацикливать аудио ffmpeg не умеет.

Posted

Ура.

Подсунул файл с 30 минутами тишины (wav на 90 МБ) и наконец получил картинку на YT.

Правда на ней много артефактов, но это уже нужно будет подбирать параметры кодера.

И нужно будет найти способ обеспечить хотя бы часовую трансляцию (я тогда буду ее перезапускать каждый час).

В крайнем случае сделаю wav-файл на 200 МБ, но хотелось бы что-то более адекватное.

Posted

Решил использовать rtsp.me.

Прямой доступ к камерам давать не хочется, решил их запроксировать.

В VLC использую такую конфигурацию:

new C313 broadcast enabled loop
setup C313 input rtsp://usr:pwd@10.102.3.13/live/main
setup C313 output #rtp{sdp=rtsp://x.y.z.90:8554/c313.sdp}
control C313 play

Подключаюсь, соответственно, к rtsp://x.y.x.90:8554/c313.sdp.

Для проверки подключаюсь с помощью VLC на другой машине.

При попытке подключения что-то происходит, ресайзится окно плеера (то есть параметры видеопотока приходят), даже картинка появляется, но очень низкого качества (сплошные артефакты каждые несколько секунд).

Нет идей, из-за чего такое происходит?

Дело точно не на входе, так как на этом же сервере этот же VLC ретранслирует камеры в мультикастовый IPTV:

new CAM-313 broadcast enabled loop
setup CAM-313 input rtsp://usr:pwd@10.102.3.13/live/main
setup CAM-313 output #std{access=udp,dst=239.0.3.13:1234}
control CAM-313 play

И в IPTV трансляция идет гладко.

 

То есть проблема на выходе. Но на сервере гигабитный ненагруженный линк.

Posted

Судя по всему, нужно общаться с ТП сервиса.

Или параметры потока чем-то не устраивают, или нужно подбирать площадку (датацентр).

Для информации текущее состояние:

new CAM-313 broadcast enabled loop
setup CAM-313 input rtsp://usr:pwd@10.102.3.13/live/main
setup CAM-313 output #duplicate{dst=std{access=udp,dst=239.0.3.13:1234},dst=rtp{sdp=rtsp://x.y.z.90:8554/c313.sdp}}
control CAM-313 play

В IPTV воспроизводится хорошо.

На внешнем ПК (то есть не в одной сети с сервером, а подключенным через интернет) VLC по ссылке rtsp://x.y.z.90:8554/c313.sdp воспроизводит хорошо.

А вот на сервисе rtsp.me картинки пока нет.

 

 

(ДОБАВЛЕНО)

 

Все оказалось просто. Нужно было выбрать транспорт udp.

Если кому интересно:

https://rtsp.me/embed/6bDkF45T/

https://rtsp.me/embed/2etb85rK/

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...