x265:当frame-threads = 1时我会得到更小的文件大小吗?

问题描述 投票:0回答:2

根据 x265 命令行选项文档 关于

-F
/
--frame-threads
选项:

使用单帧线程在压缩方面略有改进, 因为整个参考系始终可用于运动 补偿,但它会严重影响性能。

这会显着影响文件大小吗?

ffmpeg libx265
2个回答
2
投票

不值得

对于显着更多的编码时间,您可以获得微不足道的质量改进,并且几乎没有文件大小差异。

您随时可以进行测试

使用 x265 编码。命令 #1 使用默认值

--frame-threads
。该值由核心数自动确定。对于我的老年硬件,它正在使用
--frame-threads 3

time x265 input.y4m -o default.hevc
real    0m58.430s
user    6m34.437s
sys     0m2.409s

time x265 --frame-threads 1 input.y4m -o frame-threads1.hevc
real    1m29.684s
user    5m38.404s
sys     0m2.992s

尺寸基本相同:

24858360 (24M) default.hevc
24859280 (24M) frame-threads1.hevc

使用

--frame-threads 1
速度明显变慢。就我而言,慢了 3 倍,但我的 CPU 很旧,所以这对你来说可能是一个更大的差异。

通过视觉比较和通过 VMAF、PSNR、SSIM 或任何喜欢确定质量的方式进行比较。

ffmpeg -v error -i input.y4m -i default.hevc -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf" -f null -
VMAF score: 82.979207

ffmpeg -v error -i input.y4m -i frame-threads1.hevc -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf" -f null -
VMAF score: 82.986954

VMAF 分数越高越好,但只有 0.007747 的差别,我看不出来。


0
投票

我会注意到frame-threads=1的一个用途——稳定性。在 Ubuntu 上运行具有 x265 输出的 ffmpeg,这是我使用的第一个具有 4 个以上核心/线程的系统(带有 4C/8T 的 Ryzen),ffmpeg 运行得很好,但是如果您运行了 ffmpeg 的多个副本,或者在 ffmpeg 运行时加载了系统,您失败率约为 1-5% 左右。我咒骂 AMD 有一些 CPU 错误,并用一些 Linux 内核设置或其他设置来关闭超线程。无论如何,这只会使编码速度减慢约 5%。但这不是 CPU 的错——自从(使用 Intel CPU)以来,我有 2 个系统,如果您运行 3、4 个 ffmpeg 副本,它们就会在代码中的同一位置退出。

我将其设置为使用frame-threads=1,一切都很好。在我的 Coffee Lake 系统 (6C/12T) 上,它的编码速度仍然很快,而且只需要 2 次编码就可以充分利用 CPU。

© www.soinside.com 2019 - 2024. All rights reserved.