video - 高动态 1080p 视频的影院质量 ffmpeg/x264 编码

标签 video encoding ffmpeg h.264 x264

我一直在努力使用 FFMPEG 和 x264 对视频进行编码。在 Quicktime 中播放时输出会卡顿,而在 VLC 中,它会在 Quicktime 卡顿的相同位置显示大量压缩伪影。因此,Quicktime 似乎结结巴巴,因为它试图抑制损坏/伪影。

视频中有很多随机运动,包括 75% 的像素将以随机间隔变化的帧(视频是软件生成的,因此它是真正的伪随机)。在这些可能错误地检测到“场景剪辑”的地方,压缩似乎令人窒息。它似乎也每隔一段时间就会窒息,我猜它正在做一个关键帧。

我的编码预设基于 FFMPEG 附带的 x264-hq 预设。我试过关闭场景切换检测,并使用 keyint/gkeyint_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

最佳答案

如果可能,使用多 channel 编码,这将使 H264 有机会检测场景变化并为它们做好准备。

你为什么要设置 sc_threshold归零?

不要太容忍大文件,如果瞬时比特率超过存储设备(包括网络)的传输率,就会发生卡顿。 1080p 内容应该很容易以低于 10mbit/sec 的速度进行编码。

关于video - 高动态 1080p 视频的影院质量 ffmpeg/x264 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8273322/

相关文章:

docker - 在 docker 容器内运行 pulseaudio 以记录系统音频

ios - 快速获取修剪视频的缩略图

video - 播放视频后自动播放嵌入式Youtube视频并且不显示建议的视频

CSS - 为不同的字符编码指定多种字体 -

ffmpeg - 动画 Webp - 改变帧率

C#如何获取流ffmpeg视频?

opencv - 有没有办法访问用opencv拍摄的帧进行加密?

.net - 2 个视频的 FFMPEG 覆盖问题,第二个输入中缺少声音

查询字符串参数的 Java URL 编码

python - “ascii”编解码器在执行 bs 时无法解码字节 0xcb