【问题标题】:Use FFMPEG to restream RTMP source to YouTube - no video stream in output使用 FFMPEG 将 RTMP 源重新流式传输到 YouTube - 输出中没有视频流
【发布时间】:2025-12-24 21:40:06
【问题描述】:

我正在尝试从 nginx-rtmp 服务器获取 .m3u8 文件并将其传递给 YouTube rtmp。我相信这是可能的(例如这里:https://*.com/a/11978820/1552594 虽然这是在同一台主机上)。我使用的命令是:

ffmpeg -analyzeduration 0 -i \
http://source.rtmp.server/hls/stream.m3u8 -pix_fmt yuv420p \ 
-f flv rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx

但输出仅包含音频,YouTube 不喜欢它。该命令产生以下内容:

您可以在输出元数据中看到没有视频流,流映射仅显示音频,并且跟踪显示 0kb 视频对应 651kb 音频

非常感谢任何帮助

更多信息

从本文中提取的命令的改进版本:

https://judge2020.com/restreaming-a-m3u8-hls-stream-to-youtube-using-ffmpeg/

“使用 FFMPEG 将 m3u8 HLS 流重新流式传输到 Youtube”AKA 正是我想要做的。

我现在发送的命令是:

ffmpeg -re -i "http://source.rtmp.server/hls/stream.m3u8" \ 
-strict -2 -c:v copy -c:a aac -ar 44100 -ab 128k -ac 2 -flags \ 
+global_header -bsf:a aac_adtstoasc -bufsize 3000k -f flv \ 
"rtmp://a.rtmp.youtube.com/live2/xxx-xxxx-xxxx-xxxx"

除了使用 aac 编解码器读取和输出音频之外,我得到了几乎完全相同的响应。

更多更多信息

我发现添加映射可以强制视频流进入输出:

ffmpeg -re -i "http://source.rtmp.server/hls/stream.m3u8" \
-strict -2 -c:v copy -c:a -map 0:0 -map 0:1 -ar 44100 -ab 128k -ac 2 \ 
-flags +global_header -bsf:a aac_adtstoasc -bufsize 1000k \
-f flv "rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx"

这引发了可能导致视频流被静默丢弃的错误:

【问题讨论】:

    标签: nginx video ffmpeg youtube rtmp


    【解决方案1】:

    终于解决了。上面的最后一个问题是一个红鲱鱼,是由于缺少音频-c:a 的编解码器参数。

    完整的工作命令如下:

    ffmpeg -probesize 100M -analyzeduration 20M -re \ 
    -i "http://source.rtmp.server/hls/stream.m3u8" -strict -2 -c:v \ 
    libx264 -pix_fmt yuv420p -c:a aac -map 0:0 -map 0:1 -ar 44100 \ 
    -ab 128k -ac 2 -b:v 2567k -flags +global_header -bsf:a aac_adtstoasc \ 
    -bufsize 1000k -f flv "rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx"
    

    重要的部分是-probesize-analyeduration——它们需要调整直到它们起作用。 -re 标志对于指示重新流式传输很重要。各种视频编解码器声明也很重要 - -c:v libx264 -pix_fmt yuv420p 否则它将引发有关输出大小为 0x0 的错误。最后,映射标志确保两个流都包含在输出中:-map 0:0 -map 0:1

    【讨论】:

    • 嗨,我正在尝试将我自己的 rtmp 服务器数据发送到 youtube,但它无法启动 $ffmpeg -i rtmp://{url}/live/ -f flv rtmp://a.rtmp。 youtube.com/live2/key