compress video by python

3 阅读1分钟
# python -m pip install moviepy==1.0.3

from moviepy.editor import VideoFileClip

def compress_video(input_path, output_path, target_size_mb=10):
    """
    使用 moviepy 压缩视频文件到目标大小。

    :param input_path: 输入视频路径
    :param output_path: 输出视频路径
    :param target_size_mb: 目标文件大小(MB)
    """
    clip = VideoFileClip(input_path)
    duration = clip.duration  # 视频时长(秒)
    
    # 计算目标比特率
    target_bitrate = (target_size_mb * 8 * 1024) / duration  # kbps

    # 使用 write_videofile 压缩视频
    clip.write_videofile(
        output_path,
        bitrate=f"{int(target_bitrate)}k",
        audio_codec='aac',
        threads=4,
        preset='medium'
    )
    print(f"视频已成功压缩并保存为 {output_path}")

if __name__ == "__main__":
    input_video = "1.mp4"
    output_video = "2.mp4"
    compress_video(input_video, output_video, target_size_mb=20)