我做了一个python和opencv程序,每秒产生大约8-15fps的帧,输出格式为MJPEG,其中MJPEG地址在本地主机per服务器上(0.0.0.0:5000),我确实尝试使用ffmpeg将其帧广播到rtmp服务器,如youtube,所以基本上我将MJEG转换为flv,并使用以下命令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转发到rtmp服务器,但不幸的是,youtube流有太多的缓冲,大约每5秒发生一次,ffmpeg终端告诉写入速度只有0.317x左右(预计与youtube同步约0.99-1x),我的问题是
有没有办法在没有缓冲的情况下实时传输8-15fps的视频,并自动与youtube rtmp服务器同步,因为我认为youtube需要大约30fps,而我的fps只有9-15fps,这可能会导致缓冲。有没有像这样的额外的ffmpeg参数,可以加快写入速度?谢谢


发布于 2020-09-23 13:13:14
原始视频通常会被指定为25的帧率。但你的信号源是可变帧率。您需要将挂钟时间指定为时间戳,并为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
https://stackoverflow.com/questions/64021212
复制相似问题