Ubuntu 24.04下FFmpeg视频重编码性能低于Win11的优化方法咨询
看起来你已经做了不少基础测试了——mprime能拉满功耗说明硬件本身和系统的功耗限制没问题,但FFmpeg用libx265编码时功耗上不去、速度比Windows慢,确实挺闹心的。结合你的i7-14700K+Z790主板的硬件配置,我整理了几个可以尝试的优化方向:
检查libx265的CPU指令集支持:Ubuntu官方仓库提供的ffmpeg和libx265可能没有充分适配14代酷睿的AVX-512、AMX等高级指令集,这会大幅限制编码性能。你可以尝试手动编译FFmpeg和libx265,编译时添加
--enable-gpl --enable-libx265 --enable-avx512 --enable-amx这类参数,确保用上CPU的全部硬件加速能力;也可以找针对现代CPU优化的预编译FFmpeg包来替代官方版本。优化线程调度适配大小核架构:14700K是大小核设计,默认的线程分配可能没有充分利用性能核(P核)。你可以用
taskset命令将FFmpeg进程绑定到所有性能核上,比如:taskset -c 0-7 ffmpeg -i input.mp4 -c:v libx265 -crf 27 output.mp4(注:不同系统的核心编号可能有差异,你可以通过
lscpu查看P核对应的核心ID)
另外,也可以在FFmpeg参数里显式指定线程数和CPU指令集,比如添加-threads 24 -cpuflags +avx512f,+avx512bw,+amx来强制启用高级指令集并利用全部线程。确认电源管理的细节设置:虽然你已经开启了性能模式,但可以再检查下CPU频率 governor 设置,确保所有核心都处于
performance模式:sudo cpupower frequency-set -g performance同时建议进入主板BIOS,确认CPU的PL1(长期功耗墙)、PL2(短期功耗墙)设置和Windows下一致——FFmpeg的负载类型和mprime不同,可能默认的BIOS功耗限制在编码场景下没有完全放开。
调整x265编码参数:除了
-crf 27,可以尝试添加x265的专属优化参数,比如:ffmpeg -i input.mp4 -c:v libx265 -crf 27 -preset fast -x265-params "threads=24,pool=2" output.mp4-preset fast会在画质损失极小的前提下提升编码速度,pool=2则是针对大小核架构优化的线程池模式,能更高效地调度核心资源。验证NVMe存储性能:虽然编码主要依赖CPU,但如果源文件在NVMe上,确保Ubuntu下NVMe的读写性能没有被限制。可以用
dd命令测试:dd if=/dev/zero of=test_nvme bs=1G count=1 oflag=direct && rm test_nvme对比Windows下的测试结果,同时确认已经开启NVMe的TRIM功能(Ubuntu默认开启,但可以用
sudo fstrim /手动触发一次)。
你可以先从检查libx265的指令集支持和线程调度开始,这两个是最容易快速见效的优化点。如果选择手动编译FFmpeg,记得提前安装好依赖库(比如libx265-dev、yasm、nasm等),确保编译过程能正确识别并启用CPU的全部优化选项。
备注:内容来源于stack exchange,提问作者Charon ME

