我在 HP Compaq 8000 Elite CMT PC 上运行 Debian GNU/Linux 11 (bullseye) x86_64,它有一个旧的 CPU(Intel Core 2 Duo E8400 (2) @ 3.000GHz)和一个 GPU (GeForce GT 730) 不不支持视频编码,所以别考虑我有 GPU 的事实。
我有一百零九张 5184*3888px JPEG 图片,我想在 FFmpeg 中缩小。运行此命令会导致我的计算机完全出现故障:
ffmpeg -i *.JPG -vf scale=1296:972 *.JPG
我无法移动鼠标,无法退出程序,什么都没有。这发生在我确认我想覆盖同名文件之后。
由于在我重新启动计算机后我看不到任何文件被更改,我假设 FFmpeg 在停止之前没有输出任何内容。我已经尝试过几次这个过程,但每次我的电脑都死机了。
我如何告诉 FFmpeg “慢慢来”而不是填满我的 CPU,你能估计一个我应该使用以获得最佳性能的好设置吗?
使用 ImageMagic 而不是 FFmpeg。
为什么要使用 FFmpeg 来处理图像?您正在使用主要用于处理视频的工具来处理静态图像。
是的,我知道 FFmpeg 可以做你想做的事,但这不是很多人在这种情况下会使用的工具。
只需安装ImageMagick并运行此命令:
find
这是我用于调整图像大小的基本脚本,效果很好!如果此脚本仍然阻塞您的系统,请使用
sleep
暂停命令的每个循环。这是上述命令的修改版本,在每个循环之间添加了一个简单的 1 秒暂停。或者,如果这些东西使用起来似乎很复杂——在我看来它只是更健壮和灵活——你可以只使用
for
你正在使用的循环的这个变体,而不是像这样使用 ImageMagick:解决此问题的一种方法是使用简单的单行 Bash for 循环,如下所示:
该
for i in *.JPG;
部分可以翻译成英文为:“对于所有以 '.JPG' 结尾的文件(顺便说一下,将名称的其余部分分配给变量i)。”do ffmpeg -i "$i"
可以翻译为:“这样做:调用 ffmpeg 并输入名称与i的值相对应的所有文件,即所有以 .JPG 结尾的文件。” 该-vf scale=1296:972
部分翻译为:“应用‘缩放’视频过滤器,使用 1296 x 972 的尺寸(默认情况下以像素为单位)。” 该"$i"-scaled.jpg
部分翻译为“所有输出的文件都应以其原始名称命名,后跟字符串‘-scaled.jpg’”。最后一部分,done
,不应该被遗漏,因为这是结束 for 循环的部分,导致 Bash 命令的执行终止。