我有一个音频流,即时通讯使用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
这会导致输出流中的缓冲。
任何人都知道如何解决它?
帮助将不胜感激。
答案 0 :(得分:2)
所以我有一个解决方案。
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
在开始处理缓冲问题。
那么
“-loop 1”和图像之间的-framerate 2
。这是有效的,我得到一个良好的清洁高品质的流,不缓冲。
希望这有帮助!
修改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
Ok所以这个更新版本应该解决几乎所有流的问题。
-vcodec libx264 -pix_fmt yuv420p
更改为H.264 Codex修复了该问题
-g 2
这解决了最终的缓冲问题。
答案 1 :(得分:0)
最后一个代码非常出色,但是我仍然使用最新命令在youtube Live上收到有关“视频分辨率”的错误消息。我通过替换来解决它:
yuv420p with yuvj420p
我用ffprobe探测了jpg,并返回了上面的yuv420p