经过多次试错,以下解决方案基本完美运行。为确保其 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
配置文件:
background=out.mp4
size=1280x720
bitrate=1500k
key=----KEY----
volume=0.5
编辑-- 以下是旧解决方案
所以我有一个解决方案。
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
重要的部分是位于段落起始处的
-re
,它解决了缓冲问题。
然后是
-framerate 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
好的,这个更新版本应该可以解决流媒体的几乎所有问题。
-vcodec libx264 -pix_fmt yuv420p
更改为H.264编解码器,解决了那个问题。
-g 2
这解决了最后的缓冲问题。