Jump to content
Калькуляторы

Вещание в YouTube с помощью VLC

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

Запускаю 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 появляется сообщение, что вещание вот-вот начнется.

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

Share this post


Link to post
Share on other sites

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

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 трансляция в статусе "Запуск", но картинки нет.

Share this post


Link to post
Share on other sites

есть подозрения что ютуб хочет полноценный стрим видео+аудио

если чего то одного нет, то не пропускает

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Видел кучу инструкций, как вещать на Youtube комбинацией VLC и OBS Studio.

 

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

Сделал так:

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

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

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

 

Share this post


Link to post
Share on other sites

сначала у вас было правильное видео но не было аудио

теперь есть аудио но неправильное видео

остается третья попытка

Share this post


Link to post
Share on other sites

Не совсем, аудиодорожки на самом деле нет (если судить по отладочному выводу 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 хочет видео+аудио)?

Share this post


Link to post
Share on other sites

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

очевидно нет 

--enable-filter=anullsrc

скорее всего

Share this post


Link to post
Share on other sites

Буквально недавно читал про публикацию потоков на ютуб.

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

 

Кстати есть ютубовский форум

Share this post


Link to post
Share on other sites

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 не умеет.

Share this post


Link to post
Share on other sites

Ура.

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

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

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

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

Share this post


Link to post
Share on other sites

Решил использовать 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 трансляция идет гладко.

 

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

Share this post


Link to post
Share on other sites

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

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

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

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/

Share this post


Link to post
Share on other sites

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.