import sys import subprocess def combine_videos_with_music(videos, music_file, output_file="output.mp4"): if len(videos) < 2: print("Please provide at least two video files.") sys.exit(1) if not music_file: print("Please provide a background music file.") sys.exit(1) # Construct ffmpeg input arguments input_args = [] for video in videos: input_args.extend(["-i", video]) input_args.extend(["-i", music_file]) # background music # Build filter_complex string concat_count = len(videos) video_inputs = "".join([f"[{i}:v:0]" for i in range(concat_count)]) filter_complex = f"{video_inputs}concat=n={concat_count}:v=1:a=0[v]" # Final ffmpeg command cmd = [ "ffmpeg", *input_args, "-filter_complex", filter_complex, "-map", "[v]", "-map", f"{concat_count}:a", # use bg.mp3 as audio "-shortest", "-y", output_file ] # Run ffmpeg subprocess.run(cmd) if __name__ == "__main__": if len(sys.argv) < 4: print("Usage: python combine_videos_with_music.py v1.mp4 v2.mp4 v3.mp4 bg.mp3") sys.exit(1) *video_files, bg_music = sys.argv[1:] combine_videos_with_music(video_files, bg_music)