FFMPEG 到 Youtube 直播

Vis*_*sad 8 youtube video ffmpeg video-streaming live-streaming

我有一个音频流,我使用 ffmpeg 将其流式传输到 youtube 直播,并使用以下命令将图像作为背景,

ffmpeg -loop 1 -i x.jpg -i http://xxx.xxx.xxx.xxxx:5305/stream -c:a aac -s 1280x720 -ab 128k -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/xxxxx

但我在 youtube 上收到以下消息,

YouTube is not receiving enough video to maintain smooth streaming. As such, viewers will experience buffering 这会导致输出流中的缓冲。

谁知道怎么修它 ?

帮助将不胜感激。

Jon*_*234 8

经过大量的反复试验,下面的解决方案非常完美。为确保它 24/7 全天候运行,请将其包装在某种描述的服务中。

这是 FFMPEG 的最新版本,包括 -stream_loop -1。
背景是一个mp4文件。
http://localhost:3888= 音频流。

ffmpeg -stream_loop -1 -i $MYPATH/background/$background \
-i http://localhost:3888 -filter:a "volume=$volume" \
-r 24 -g 48 -pix_fmt yuv420p -x264-params keyint=48:min-keyint=48:scenecut=-1 \
-s $size -b:v $bitrate -b:a 128k -ar 44100 -acodec aac \
-vcodec libx264 -preset superfast -bufsize 960k -crf 28 -threads 2 \
-f flv rtmp://a.rtmp.youtube.com/live2/$key
Run Code Online (Sandbox Code Playgroud)

配置文件:

# Config File
background=out.mp4
size=1280x720
bitrate=1500k
key=----KEY----
volume=0.5
Run Code Online (Sandbox Code Playgroud)

编辑 - 下面的旧解决方案

所以我有一个解决方案。

ffmpeg -re -loop 1 -framerate 2 -i test1.jpg -i https://xxxxxxx:8443/live.ogg -c:a aac -s 2560x1440 -ab 128k -maxrate 2048k -bufsize 2048k -framerate 30 -g 60 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/xxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

重要的部分是

-关于

在处理缓冲问题的开始。
那么

- 帧率 2

在“-loop 1”和图像之间。这有效,我得到了一个不缓冲的干净的高质量流。

希望这有帮助!

编辑 1

ffmpeg -re -loop 1 -framerate 2 -i test1.jpg -i https://xxxxxxxxxxx:8443/live.ogg -c:a aac -s 2560x1440 -ab 128k -vcodec libx264 -pix_fmt yuv420p -maxrate 2048k -bufsize 2048k -framerate 30 -g 2 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/xxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

好的 所以这个更新的版本应该可以解决流的几乎所有问题。

-vcodec libx264 -pix_fmt yuv420p

更改为 H.264 Codex 解决了该问题

-g 2

这解决了最终的缓冲问题。