分类:N05_python
import subprocess
import os
def compress_video(input_file, output_file, codec="libx264", crf=23, resolution=None):
"""
压缩视频文件
:param input_file: 输入视频文件路径
:param output_file: 输出视频文件路径
:param codec: 使用的编解码器,默认为 "libx264"(H.264)
:param crf: 恒定速率因子,范围从 0 到 51,默认值为 23。值越小,输出质量越高,文件也越大。
:param resolution: 输出视频的分辨率,格式为 "width:height",例如 "1280:720"。如果为 None,则保留原始分辨率。
"""
command = [
"ffmpeg",
"-i", input_file,
"-vcodec", codec,
"-crf", str(crf),
"-movflags", "frag_keyframe+empty_moov",
"-pix_fmt", "yuv420p",
"-f", "mp4" # 显式指定输出格式为 mp4
]
if resolution:
command.extend(["-vf", f"scale={resolution}"]) # 调整视频分辨率
command.append(output_file)
# subprocess.run(command, check=True)
try:
subprocess.run(command, check=True)
print("压缩完成!")
except subprocess.CalledProcessError as e:
print("压缩失败:", e)
if __name__ == "__main__":
# input_video = "path_to_your_input_video.mp4" # 替换为你的输入视频文件路径
# output_video = "compressed_video.mp4" # 压缩后的视频文件路径和名称
input_video = "E:/kitchen_copy.mp4" # 输入视频文件路径
output_video = "E:/kitchen_copy_compressed.mp4" # 输出视频文件路径
compress_video(input_video, output_video)