如何确保 ffmpeg 以 1x 以上的速度转码

如何确保 ffmpeg 以 1x 以上的速度转码

我正在尝试使用 hls 流式传输电视。我的设置是 ffmpeg 和 nginx(带有用于 hls 流式传输的 nginx-tx 模块)。我使用下面的命令将视频缩放到 320 的高度,并使用默认值对其进行锐化。我使用下面的命令。

ffmpeg -report -f mpegts -i <input> -vf "scale=trunc(oh*a/2)*2:320,unsharp=lx=3:ly=3:la=1.0" -vcodec libx264 -crf 24 -preset medium -acodec aac -b:a 50k -f mpegts <output>

问题是这个命令给我的速度不同。最初它以高速开始,例如 5 倍,然后减速到 0.6 倍。当我过一段时间重新启动它时,它会以高速开始,然后减速但仍保持在 1 倍以上。那么,我如何确保速度始终高于 1 倍呢?

如果速度低于 1x,我的直播就无法很好地工作,我在浏览器上使用的 videojs 会一直缓冲。

编辑:我还应该说,由于我正在流式传输 3 个不同的频道,因此我运行了 3 个 ffmpeg 实例。第一个没问题,始终高于 1x。但后者存在非确定性行为问题(有时速度 >1x,其他速度 <1x)

有任何想法吗?

相关内容