两个视频逐帧交替播放

功能

把两个视频逐帧交替剪辑,导出为一个新的视频。

from moviepy.audio.AudioClip import CompositeAudioClip
from moviepy.editor import VideoFileClip
from moviepy.video.io.ImageSequenceClip import ImageSequenceClip

# 加载两个视频
video1 = VideoFileClip("video1.mp4")
video2 = VideoFileClip("video2.mp4")

# 获取视频中较短的一方的总帧数
min_frames = int(min(video1.duration * video1.fps, video2.duration * video2.fps))

# 初始化一个空的视频列表
clips = []

# 遍历每一帧,并交替将它们加入到视频列表中
for i in range(min_frames):
# 交替播放视频1和视频2的帧
clips.append(video1.get_frame(i / video1.fps))
clips.append(video2.get_frame(i / video2.fps))

# 将所有帧合并成一个新的视频,为保证原视频速度,帧率设置为原来的2倍
final_clip = ImageSequenceClip(clips, fps=60)

# 按帧取音频进行拼接卡顿感严重,那就直接两个音频并行吧
audio_clip1 = video1.audio.subclip(0, min_frames / video1.fps)
audio_clip2 = video2.audio.subclip(0, min_frames / video2.fps)
combined_audio = CompositeAudioClip([audio_clip1, audio_clip2])

final_clip = final_clip.set_audio(combined_audio)

# 保存新的视频文件
final_clip.write_videofile("result_video.mp4")