【问题标题】:ffmpeg rtmp broadcast on youtube speed below 1xffmpeg rtmp 在 youtube 上播放速度低于 1x
【发布时间】:2021-01-09 06:09:49
【问题描述】:

我制作了一个 python 和 opencv 程序,它以 MJPEG 输出格式产生每秒大约 8-15fps 的帧,其中 MJPEG 地址在 localhost webserver (0.0.0.0:5000) 上提供,并且我尝试将其帧广播到 rtmp 服务器,例如youtube 使用 ffmpeg 所以基本上我确实将 MJEG 转换为 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 参数可以加快写入速度?谢谢

【问题讨论】:

    标签: python opencv ffmpeg video-streaming rtmp


    【解决方案1】:

    通常会为原始视频分配 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

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多