# from moviepy.editor import *
from moviepy.video.fx import crop,VideoFileClip,concatenate_videoclips
import os
def video_merge(input_dir, output_file_path, frame_rate):
output_dir = os.path.dirname(output_file_path)
# 定义一个数组
l = []
# 访问 video 文件夹 (假设视频都放在这里面)
for root, dirs, files in os.walk(input_dir):
# 按文件名排序
files.sort()
# 遍历所有文件
for file in files:
# 如果后缀名为 .mp4
if os.path.splitext(file)[1] == '.mp4':
# 拼接成完整路径
input_file_path = os.path.join(root, file)
# 载入视频并裁剪视频
video = crop.crop(VideoFileClip(input_file_path) , x1=250, y1=50, x2=2200, y2=750)
#裁剪视频存为mp4格式文件(也可忽略此步骤,直接使用原始视频)
tmp_output_file_path = os.path.join(output_dir, os.path.splitext(file)[0] + '_temp.mp4')
video.write_videofile(tmp_output_file_path, fps=frame_rate,remove_temp=False)
# 再次载入处理后的mp4视频
video = VideoFileClip(tmp_output_file_path)
# 添加到数组
l.append(video)
os.remove(input_file_path)
# 拼接视频
final_clip = concatenate_videoclips(l)
# 生成目标视频文件
final_clip.write_videofile(output_file_path,fps=frame_rate, remove_temp=True)
# 清理视频
for root, dirs, files in os.walk(output_dir):
for file in files:
if os.path.splitext(file)[-1] == '.mp4':
if os.path.splitext(file)[0][-4:] == 'temp':
os.remove(os.path.join(root, file))
Python 实现多个视频合并
最新推荐文章于 2024-05-09 10:11:12 发布