concat_clip.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import os
  2. from moviepy.editor import VideoFileClip, concatenate_videoclips
  3. def concat_videos(clips_path, output_path):
  4. """
  5. 拼接多个视频文件为一个视频。
  6. :param clips_path: 视频文件路径列表,例如 ['1.mp4', '2.mp4']
  7. :param output_path: 输出视频文件路径,例如 'output.mp4'
  8. """
  9. clips = []
  10. for path in clips_path:
  11. if not os.path.isfile(path):
  12. raise FileNotFoundError(f"视频文件不存在: {path}")
  13. clips.append(VideoFileClip(path))
  14. # 拼接所有视频片段
  15. final_clip = concatenate_videoclips(clips, method="compose") # 使用 compose 可处理不同尺寸
  16. # 写入输出文件
  17. final_clip.write_videofile(
  18. output_path,
  19. codec='libx264',
  20. audio_codec='aac',
  21. temp_audiofile='temp-audio.m4a',
  22. remove_temp=True
  23. )
  24. # 关闭所有 clip 以释放资源
  25. for clip in clips:
  26. clip.close()
  27. final_clip.close()
  28. if __name__ == "__main__":
  29. clips_path = ["./output/run_20251222_091230/video_clips/scene0_len0.mp4", "./output/run_20251222_091230/video_clips/scene0_len1.mp4"]
  30. output_path = "video.mp4"
  31. concat_videos(clips_path, output_path)