如何使用ffmpeg降低多个JPEG图像文件的质量?

时间:2016-02-05 14:10:48

标签: batch-file ffmpeg

我想降低当时一堆图像的质量。使用-q:v x,其中x是1到30之间的数字(数字越大,质量越差)。即使使用x=1,我也可以节省大量空间。现在,当涉及到处理多个文件时,我陷入困境。

我已经尝试了这两个批处理文件:

mkdir processed
for f in *.jpg;
    do name=`echo $i | cut -d'.' -f1`;
    echo $name;
    ffmpeg -i $i -q:v 1 processed/$name.jpg;
done

mkdir processed
for f in *.jpg;
    do ffmpeg -i "$f" -q:v 1 processed/"${f%.jpg}.jpg"; 
done

两者都只创建已处理的文件夹,但没有别的。

3 个答案:

答案 0 :(得分:5)

感谢@Squashman指出我的愚蠢错误。这是我解决问题的方法。

mkdir processed
for %%F in (*.jpg) do (

    ffmpeg -i %%F -q:v 10 processed/%%F"
)

我减轻了80%的重量。

答案 1 :(得分:0)

这是一个解决方案,在python脚本中使用ffmpeg。更详细,但更易于阅读。

from pathlib import Path
import os
suffix = ".jpg"
input_path= Path.home() / "Downloads"
file_paths= [subp for subp in input_path.rglob('*') if  suffix == subp.suffix]
file_paths.sort()

output_path =  Path.home() / "Downloads/processed"
output_path.mkdir(parents=True, exist_ok=True)


for file_p in file_paths:
    input = str(file_p)
    output = str(  output_path / file_p.name  ) 
    command = f"ffmpeg -i {input} -q:v 10 {output}"
    os.system(command)

答案 2 :(得分:0)

对于 linux 你可以制作这个脚本 如果您的所有图片都在此目录中 images

制作一个包含以下代码的script.sh

mkdir images/processed
for f in images/*.jpg images/*.png images/*.jpeg
 do
        ffmpeg -i $f -q:v 10 processed/$f -y
done