视频压缩 - ffmpeg【python遍历】

  1. 汇总
# 1 和 3 同时修改
ffmpeg -i yasuo.mp4 -r 20 -s 428*240 out2.mp4
ffmpeg -i yasuo.mp4 -r 20 -vf scale=428:-1 out3.mp4  # 同上

# 1 和 4 同时修改
ffmpeg -i yasuo.mp4 -r 20 -b:v 300k  out6.mp4
  1. 改变帧率【效果好】
ffmpeg -i Desktop/吉他.mp4  -r 20  Desktop/output1.mp4
  -r 20:表示帧率设置为 20fps
  1. 指定文件大小【视频截取-不好】
ffmpeg -i Desktop/吉他.mp4  -fs 15MB  Desktop/output1.mp4
  -fs 20 : 表示文件大小最大值为15MB
  1. 改变分辨率【视频变模糊】
ffmpeg -i Desktop/1.mov -s vga Desktop/1.mp4
  -s vga : 指定分辨率, vga 代表 600*480,也可以换成其他的值

ffmpeg -i 1.mp4 -strict -2 -vf scale=-1:480 4.mp4 
  -1表示按照比例缩放,可保证视屏不会变形
  1. 改变码率【不明显】
ffmpeg -i Desktop/1.mov -b:v 1.5M  Desktop/1.mp4
  -b:v 1.5M : 指定码率 -b:v :指定视频的码率 -b:a : 指定音频的码率1.5M:码率的值 1.5M 表示 1.5Mb/s
  视频的原码率是 2.1Mb/s ,压缩为 1.5Mb/s
  当码率设置为小于 1.5Mb/s 后视频的清晰度会降低很多

# 查看码率
ffmpeg -i Desktop/1.mov

https://zhuanlan.zhihu.com/p/255042580

  1. python遍历
import os
import subprocess

source_dir = '/path/to/source/directory'
output_dir = '/path/to/output/directory'


for root, dirs, files in os.walk(source_dir):
    for file in files:
        input_file = os.path.join(root, file)
        if input_file.endswith('.mp4') or input_file.endswith('.mov'):  # 只处理 MP4 和 MOV 文件
            print(f'正在处理 {input_file}...')
            output_file = os.path.join(output_dir, file)
            subprocess.call(['ffmpeg', '-i', input_file, '-b:v', '1000k', '-fs', '10M', output_file])  # 执行 ffmpeg 命令
            print(f'{input_file} 压缩完成!')


在上述代码中,我们通过 os.path.join 方法创建了输入和输出文件的完整路径,并使用 subprocess.call 方法执行了 ffmpeg 命令。在该命令中,我们指定了输入文件名、目标视频比特率和输出文件大小限制。
请注意,在这个示例中,我们假设您的所有视频文件都是 .mp4 或 .mov 格式。如果您需要处理其他类型的文件,请相应地更改 if input_file.endswith('.mp4') or input_file.endswith('.mov'): 行。
另外,subprocess.call 方法将阻塞主线程,直到 ffmpeg 命令完成。如果您需要同时处理多个视频文件,您可以考虑使用 subprocess.Popen 方法来启动异步进程。
posted @ 2022-03-25 18:38  该显示昵称已被使用了  阅读(99)  评论(0编辑  收藏  举报