import threading
import os
def zip():
input_file_path = "C:/Users/123/Videos/Captures/1234.mp4"
output_file_path = "C:/Users/123/Videos/Captures/123.mp4"
compress = "ffmpeg -i {} -r 30 -c:v libx264 -preset veryslow -profile:v baseline -crf 24 -c:a copy {}".format(input_file_path, output_file_path)
isRun = os.system(compress)
if isRun != 0:
return (isRun,"没有安装ffmpeg")
return True
thr = threading.Thread(target=zip)
thr.start()
-i 要转换的文件路径,即输入文件的路径
注意Windows读取文件可以用\,但是在字符串中\是被当作转义字符来使用,所以用/,在Windows和Linux下都可以用
-c 编码器或解码器
-c:a代表对音频(audio),常用acc,但音频部分一般不算大,也可直接用copy(不压缩)
-c:v代表对视频(video),常用libx264。libx264是一个自由的H.264编码库,是x264项目(x264是符合H.264标准的一个开源项目)的一部分,ffmpeg的H.264实现就是用的libx264
-profile
H.264有四种画质级别,分别是baseline, extended, main, high
-b 比特率
与-c相同,可分别指定 -b:a -b:v
-r 帧率
–preset 有10个选项:ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo
主要调节编码速度和质量的平衡
-crf 取值范围0~51
全称:Constant Rate Factor,其中0为无损模式,数值越大,画质越差,生成的文件越小。18~28是一个合理的范围。18被认为是视觉无损的,它的输出视频质量和输入视频相当。
最后加上输出文件的路径即可