首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在youtube上运行ffmpeg时没有声音

在youtube上运行ffmpeg时没有声音
EN

Stack Overflow用户
提问于 2020-05-27 20:17:23
回答 1查看 1.5K关注 0票数 2

尽管我在ffmpeg方面的知识有限,我还是成功地使用了运行在覆盆子圆周率上的ffmpeg将我的鸟盒相机上传到youtube上。相机也有音频,通过在带有rtsp的窗口中使用本地vlc,音频是可以的。

然而,在youtube上没有声音(与窗口中本地使用的rtsp命令相同),我在youtube studio中看到了这样的“警告”:“当前音频流的比特率(0)低于建议的比特率。我们建议对音频流使用128 Kbps的比特率。”

我怎样才能通过youtube获得声音?这是我运行的命令。这个命令是在网络上找到的,我在使用时采用了这个命令,并立即播放了视频:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-05-28 19:35:42

您的命令是使用anullsrc过滤器生成无声音频。YouTube需要一个音频流。因此,如果输入没有音频,用户通常使用anullsrc制作静音以满足这个要求。ffmpeg使用的是这个无声的音频,而不是你相机的音频。删除anullsrc,因为您不需要它。

使用:

代码语言:javascript
复制
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 AAC编码器被认为是实验时,它是必需的,但自2015年以来就没有这样的情况了。然而,它仍然经常被复制和粘贴从过时的答案。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62052140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档