使用最快的解码方式编码ffmpeg

14

使用ffmpeg和libx264进行编码时,有没有预设或标志可以优化解码速度?

目前看来,使用Qtkit解码的相似文件大小的视频解码速度非常不同。我想知道是否有编码选项可以使解码速度最大化。


如果您使用切片编码,您的解码器可以利用多线程(假设您的解码器可以通过这种方式加速,例如,在多核CPU上,单个流的解码是瓶颈)。 - Alex Cohn
@AlexCohn - 你能否指出有关使用FFmpeg的“切片编码”方面的任何参考资料吗? - nbubis
1
请参阅http://mewiki.project357.com/wiki/X264_Settings#slices和http://mewiki.project357.com/wiki/X264_Settings#sliced-threads。这种方法可能会将解码时间减少75%,但代价是降低质量。它仅适用于高分辨率帧。例如,蓝光光盘需要4个切片。 - Alex Cohn
@Nathaniel, 你能否更详细地描述你的问题,因为你提到了重新编码。减小分辨率对你来说是一个选项吗? - Dundar
2个回答

14

如果您希望以解码速度为代价来优化视频的解码速度和质量/压缩效率,x264 中提供了 --tune fastdecode(或使用 ffmpeg 时的 -tune fastdecode)。在 libx264 中,调整设置是作为 x264_param_default_preset 的参数之一。


这确实有所帮助(将其从2fps提高到9fps),但仍然不如原始视频播放的良好30fps。不知何故,重新编码会弄乱事情 :( - nbubis
原始编码方式是什么?它是否使用了h264编码?分辨率和比特率是多少?也许可以通过使用ffmpeg dump来更好地理解这些变化。 - Alex Cohn
3
看起来 -tune fastdecode -tune zerolatency 有效!我会接受这个答案,但你可能想要加上 zerolatency。干杯! - nbubis
在我看来,零延迟调优对解码没有太大的帮助。它唯一可能有助于解码的选项是“--sliced-threads”,如果您的解码器不支持帧线程,并且需要独立切片进行多线程解码以及“--bframes 0”,但B帧不应比P帧慢太多。 - nobody555
1
在使用x264_param_default_preset()时,@nmxprime请指定它以获取默认参数。或者通过查看libx264中它更改的参数来自行更改所需的参数。[http://git.videolan.org/gitweb.cgi?p=x264.git;a=blob;f=common/common.c;h=a9e1c7325246cb594d71a4f5d47ee4fde0649f34;hb=HEAD#l369] - nobody555

3

我以前使用过这个:

-b (去除B帧计算)

-maxrate 8M (我认为这很重要,因为有时平均比特率具有大的分布,如果您将8M设置为平均值,您仍然可能会发现15M峰值)

-tune fastdecode(上面已经解释过了)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接