如何使用 FFmpeg 将网络摄像头直播到 YouTube?

pko*_*kok 6 youtube ffmpeg live-streaming

我想将我的网络摄像头的直播发送到 YouTube。我可以按照YouTube 的指南进行到第 8 步。“流连接”告诉我“没有数据”并且“上线”按钮仍然无法点击。这种情况的截图可以在

图片

作为编码软件,我计划使用 FFmpeg,因为它可以在目标平台上运行,即带有 Raspbian 的 Raspberry Pi。使用支持的 USB 网络摄像头video4linux2

FFmpeg 的 wiki显示流文件可以通过以下方式完成:

ffmpeg -re -i input.mkv \
-c:v libx264 -preset veryfast -maxrate 3000k \
-bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ac 2 \
-ar 44100 -f flv rtmp://live.twitch.tv/app/<stream key>
Run Code Online (Sandbox Code Playgroud)

我通过以下方式修改了这个命令: 1. 它从网络摄像头获取视频流-f v4l2 -i /dev/video0。2.它不广播任何音频-an。3.它广播到YouTube的RTMP服务器,rtmp://a.rtmp.youtube.com/live2/<stream key>

该命令的最终版本现在是:

RTMP_URL="rtmp://a.rtmp.youtube.com/live2"
STREAM_KEY="secr-etse-cret-secr"
OUTPUT=$RTMP_URL/$STREAM_KEY
ffmpeg -re -f v4l2 -i /dev/video0 \
-c:v libx264 -preset veryfast -maxrate 3000k \
-bufsize 6000k -pix_fmt yuv420p -g 50 -an \
-f flv $OUTPUT
Run Code Online (Sandbox Code Playgroud)

当我运行此命令时,我希望“流连接”会在几秒钟后更改为“无数据”以外的其他内容,但这不会发生。

我尝试将流记录到本地文件:

ffmpeg -re -f v4l2 -i /dev/video0 \
-c:v libx264 -preset veryfast -maxrate 3000k \
-bufsize 6000k -pix_fmt yuv420p -g 50 -an \
-f flv test.flv
Run Code Online (Sandbox Code Playgroud)

这工作得很好。这向我表明问题在于让 YouTube 接受视频流。

Aba*_*ael 1

下面的代码在 Windows 下运行得很好,您可以根据需要进行调整

ffmpeg -loglevel debug -threads:v 2 -threads:a 8 -filter_threads 2 \
       -thread_queue_size 512  -f dshow -i video="HP Wide Vision HD" \
       -f dshow -i audio="Microphone Array (Realtek Audio)" -pix_fmt yuv420p \
       -c:v libx264 -qp:v 19 -profile:v high -rc:v cbr_ld_hq -level:v 4.2 \
       -r:v 60 -g:v 120 -bf:v 3 -refs:v 16 \
       -f flv rtmp://youtube_stream_url/stream_key
Run Code Online (Sandbox Code Playgroud)