Нет звука при запуске ffmpeg на YouTube Live - PullRequest
0 голосов
/ 27 мая 2020

Несмотря на мои ограниченные знания в ffmpeg, мне удалось транслировать мою камеру для птиц в прямом эфире на YouTube, используя ffmpeg, работающий на raspberry pi. В камере также есть звук, и при использовании локального vl c в windows с rtsp звук в порядке.

Однако на YouTube нет звука (та же команда rtsp, которая используется локально в windows ), и я вижу это «предупреждение» в студии youtube: «Текущий битрейт (0) аудиопотока ниже рекомендуемого. Мы рекомендуем использовать битрейт 128 Кбит / с для аудиопотока».

Как я могу получить звук через YouTube? Это команда, которую я выполняю. Команда была найдена на net, я адаптировал ее для своего использования, и видео сразу заработало:

pi@raspberrypi:~ $ ffmpeg -f lavfi -i anullsrc -thread_queue_size 512 -rtsp_transport udp -i "rtsp://10.x.x.x:554/user=user&password=password&channel=1&stream=0.sdp?real_stream" -tune zerolatency -vcodec libx264 -use_wallclock_as_timestamps 1 -pix_fmt + -c:v copy -c:a aac -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/mykey
ffmpeg version git-2020-05-01-3c740f2 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 6.3.0 (Raspbian 6.3.0-18+rpi1+deb9u1) 20170516
  configuration: --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree
  libavutil      56. 43.100 / 56. 43.100
  libavcodec     58. 82.100 / 58. 82.100
  libavformat    58. 42.102 / 58. 42.102
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 80.100 /  7. 80.100
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, lavfi, from 'anullsrc':
  Duration: N/A, start: 0.000000, bitrate: 705 kb/s
    Stream #0:0: Audio: pcm_u8, 44100 Hz, stereo, u8, 705 kb/s
Guessed Channel Layout for Input Stream #1.1 : mono
Input #1, rtsp, from 'rtsp://10.x.x.x:554/user=user&password=password&channel=1&stream=0.sdp?real_stream':
  Metadata:
    title           : RTSP Session
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #1:0: Video: h264 (Main), yuvj420p(pc, bt709, progressive), 1920x1080, 20 fps, 20 tbr, 90k tbn, 180k tbc
    Stream #1:1: Audio: pcm_alaw, 8000 Hz, mono, s16, 64 kb/s
Multiple -c, -codec, -acodec, -vcodec, -scodec or -dcodec options specified for stream 0, only the last option '-c:v copy' will be used.
Stream mapping:
  Stream #1:0 -> #0:0 (copy)
  Stream #0:0 -> #0:1 (pcm_u8 (native) -> aac (native))
Press [q] to stop, [?] for help
Output #0, flv, to 'rtmp://a.rtmp.youtube.com/live2/mykey':
  Metadata:
    encoder         : Lavf58.42.102
    Stream #0:0: Video: h264 (Main) ([7][0][0][0] / 0x0007), yuvj420p(pc, bt709, progressive), 1920x1080, q=2-31, 20 fps, 20 tbr, 1k tbn, 90k tbc
    Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc58.82.100 aac
[flv @ 0x2c43750] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly

1 Ответ

0 голосов
/ 28 мая 2020

Ваша команда использует фильтр anullsr c для создания беззвучного звука. YouTube требует аудиопотока. Поэтому пользователи часто используют anullsr c, чтобы сделать звук беззвучным, чтобы выполнить это требование, если на их входе нет звука. ffmpeg использует этот беззвучный звук вместо звука вашей камеры. Удалите anullsr c, потому что он вам не нужен.

Используйте:

ffmpeg -thread_queue_size 512 -rtsp_transport udp -i "rtsp://10.x.x.x:554/user=user&password=password&channel=1&stream=0.sdp?real_stream" -c:v copy -c:a aac -f flv rtmp://a.rtmp.youtube.com/live2/mykey
  • Потому что вы копируете видео с -c:v copy Я удалил ненужные параметры кодировки, которые все равно игнорируются (-tune zerolatency -vcodec libx264 -use_wallclock_as_timestamps 1 -pix_fmt).

  • Я удалил -strict experimental. Раньше он требовался, когда кодировщик FFmpeg AA C считался экспериментальным, но этого не было с 2015 года. Однако очень часто он все еще копируется и вставляется из устаревших ответов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...