我目前正在使用一个用 Python 编写的小型软件程序,它利用我个人笔记本电脑上的 ffmpeg,该笔记本电脑完全可以运行它(核心 i7、16gb 内存等),但我想将它移到一台除操作系统外已完全重置的旧电脑上。
以下是旧款笔记本电脑的规格:
250GB 硬盘
Windows Vista 家庭高级版
2GB 内存
英特尔迅驰 2 处理器
我想我的主要问题是,ffmpeg 是否支持较旧的操作系统(例如 Windows Vista)和(按今天的标准)相对低端的硬件?我在 ffmpeg.org 或其他地方找不到任何系统要求页面。
该程序处理的视频分辨率相对较低,比特率较低,且时长不超过 2 分 30 秒。
答案1
FFmpeg(和 x264 之类的编解码器)几乎可以在任何设备上编译和运行(它是用相当可移植的 C 语言编写的),唯一的问题只是速度有多快。
如果你只是解码并运行过滤器或类似的东西,你可能会没事,特别是如果不需要实时播放高分辨率视频。
如果您只需要音频,与视频相比,音频的计算量并不大,对于大多数情况来说应该没问题。
旧 CPU 上的视频编码/解码性能:
视频质量(比特率)不是关键点,而是分辨率(多少 RAM 和未压缩帧需要)。此外,处理 2 倍像素只会占用更多 CPU 时间来解码更多宏块。您可能会发现 720p很多比 1080p 更快。
如果你真的没有足够的 RAM 来保存几十或几百帧,当你使用交换空间时,解码/编码速度就会急剧下降。尤其是英文编码时,您希望编码器能够提前做出决定,确定在何处花费位。
另一个更软的阈值是 L3 缓存大小,尤其是考虑到旧 CPU 的内存带宽相对较低。
Centrino 就像 Pentium-M 时代。它早于 SSSE3,因此您没有 SIMD 字节混洗(pshufb
),并且 SIMD 执行单元只有 64 位宽。(psadbw xmm0, xmm1
并行计算 2 组 8 字节的绝对差之和之类的指令将解码为 2 个单独的 uops。)
因此,与几年后的 Nehalem 或 Sandybridge CPU 相比,h.264 解码/编码速度将明显较差(时钟频率相同)。 和很多与具有 AVX2 和非常高效的非对齐矢量加载或 Zen / Zen 2 的现代核心(如 Haswell 或 Skylake)相比,时钟更差。
您的 Centrino 2 可能也只有单核,编码速度几乎与核心数量成线性关系,至少对于前几个核心而言如此。如果您习惯使用四核系统,那么除了每核性能大幅下降之外,速度还会再慢 4 倍。
而且 H.265 编码几乎将无望实现。例如,在获得四核 Skylake(i7-6700k 配备 DDR4-2666)之前,我曾在我的旧 Core 2(E6600 2.4GHz 双核 Conroe 配备 DDR2-566)系统上使用过一些 x265。据我回忆,在 Skylake 上,x265 -preset 较慢大约快 40 倍,对于 1920x1080 编码,速度类似于 crf 25。
但是 x265 对旧 CPU 的支持并不好;与 x264 不同,它是在 Core 2 过时后才开始开发的。对于 x264 来说,Core 2 曾经是顶级产品,因此 x264 对旧 CPU 进行了很好的优化。它应该有针对 Centrino 2 老式 CPU 进行调优的手写汇编,但 CPU 能做的事情并不多。因此,“它能做的最好的事情”仍然不是很好。
答案2
事实上,FFMPEG 的运行没有任何要求。它几乎可以在任何操作系统和硬件上运行。
真正的问题是:它会运行吗出色地执行您尝试执行的功能?虽然您指定的计算机较旧,但 FFMPEG 很可能可以很好地运行低质量视频。
答案3
是的,正如@Keltari所说,ffmpeg
没有任何最低要求。它可以在受支持的操作系统上的任何硬件上运行。
但是由于视频编辑是一项繁重的任务,因此笔记本电脑的规格在高质量视频方面会相当落后。您需要更多的 CPU 来获得更快的速度。默认情况下,它使用最佳线程数。如果您有更多内核,速度和编码将更快。RAM 通常会影响过滤器、比特率和其他编码选项。GPU 也会影响,如果您使用的是 NVidia,那么它最多支持 2 个并行编码。最好使用英特尔 GPU。
对于 Windows 操作系统,Windows XP 支持已终止。Vista 仍受支持。
答案4
确实,任何东西都可以顺利运行 FFMPEG。
但我认为大多数人忽略的是,旧硬件的电气效率更差:执行相同的计算需要更多的电力。
对于您来说,最好还是使用较新的计算机来进行简单的视频渲染,因为完成相同的工作会消耗更少的电量。