我一直在努力使用 FFMPEG 和 x264 对视频进行编码。在 Quicktime 中播放时输出会卡顿,而在 VLC 中,它会在 Quicktime 卡顿的相同位置显示大量压缩伪影。因此,Quicktime 似乎结结巴巴,因为它试图抑制损坏/伪影。
视频中有很多随机运动,包括 75% 的像素将以随机间隔变化的帧(视频是软件生成的,因此它是真正的伪随机)。在这些可能错误地检测到“场景剪辑”的地方,压缩似乎令人窒息。它似乎也每隔一段时间就会窒息,我猜它正在做一个关键帧。
我的编码预设基于 FFMPEG 附带的 x264-hq 预设。我试过关闭场景切换检测,并使用keyint
/g
和keyint_min
选项。设置g
为 1 使其工作,但会破坏文件大小。我已经尝试过无损预设,但它们在 Quicktime 中根本无法播放。奇怪的是,在处理较低分辨率的测试视频 (1440x810) 时,我没有遇到任何问题。
这是我现在拥有的预设,它可以工作,但产生的文件比(非工作)hq 预设产生的文件大约大 60%。有什么办法可以改善这一点吗?文件大小并不重要,我只想要可以在任何地方播放并且质量非常高的东西。
编码器=1 标志=+循环 cmp=+色度 分区=+parti8x8+parti4x4+partp8x8+partp4x4+partb8x8 我的方法=嗯 子q=8 me_range=16 g=1 keyint_min=1 sc_threshold=0 i_qfactor=0.71 b_strategy=1crf=20 qcomp=0.6 qmin=20 qmax=51 qdiff=4 BF=16 参考=4 格子=1 flags2=+dct8x8+wpred+bpyramid+mixed_refs wpredp=2
这是命令:
ffmpeg \ -r 60 -i "frame-%06d.tiff" \ -vcodec libx264 -vpre my_preset \ -线程0 \ -r 60 -an -f out.mp4