在youtube上播放ffmpeg rtmp,速度低于1x

2024-09-29 00:14:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我制作了一个python和opencv程序,用MJPEG输出格式生成每秒8-15fps的帧,其中MJPEG地址在本地主机Web服务器(0.0.0.0:5000)上提供,我尝试使用ffmpeg将其帧广播到rtmp服务器,如youtube,所以基本上我会使用以下命令将MJPEG转换为flv并转发到rtmp服务器ffmpeg -f mjpeg -i http://0.0.0.0:5000/video_feed -f lavfi -i anullsrc -c:v libx264 -vf "scale=trunc(oh*a/2)*2:320,unsharp=lx=3:ly=3:la=1.0" -crf 24 -c:a aac -ac 1 -f flv rtmp://a.rtmp.youtube.com/live2/xxx-xxx-xxx但不幸的是,youtube流有太多的缓冲,大约每5秒发生一次,而ffmpeg终端告诉我们,写入速度只有0.317x左右(预计与youtube的同步速度约为0.99-1x),我的问题是

有没有一种方法可以在不使用缓冲的情况下,以8-15fps左右的速度传输“实时”,并自动与youtube rtmp服务器同步,因为我认为youtube需要30fps左右,而我的fps只有9-15fps,这可能会导致缓冲。 有没有像ffmpeg这样的附加参数可以加快写入速度?谢谢

enter image description here

enter image description here


Tags: 命令程序服务器webyoutube地址格式opencv
1条回答
网友
1楼 · 发布于 2024-09-29 00:14:40

原始视频的帧率通常为25。但您的源是可变帧速率。您需要将wallclock时间指定为时间戳,并为YT生成恒定的帧速率输出

ffmpeg -f mjpeg -use_wallclock_as_timestamps true -i http://0.0.0.0:5000/video_feed -f lavfi -re -i anullsrc -vsync cfr -r 25 -c:v libx264 -vf "scale=trunc(oh*a/2)*2:320,unsharp=lx=3:ly=3:la=1.0" -crf 24 -c:a aac -ac 1 -f flv rtmp://a.rtmp.youtube.com/live2/xxx-xxx-xxx

相关问题 更多 >