音频处理,包括截取、拼接和声音调整
from moviepy.editor import VideoFileClip, concatenate_videoclips
def split_video(input_path, output_folder, start_time, end_time):
"""
切割MP4文件
:param input_path: 输入文件路径
:param output_folder: 输出文件夹
:param start_time: 开始时间
:param end_time: 结束时间
"""
clip = VideoFileClip(input_path)
clip_part = clip.subclip(start_time, end_time)
output_path = f"{output_folder}/output.mp4"
clip_part.write_videofile(output_path)
# 将声音调高
def up_voice(input_path, output_path):
video = VideoFileClip(input_path) # 加载视频文件
audio = video.audio # 提取音频轨道
adjusted_audio = audio.volumex(2)
final_video = video.set_audio(adjusted_audio)
final_video.write_videofile(output_path)
def merge_videos(input_paths, output_path):
"""
合并多个MP4文件
:param input_paths: 输入文件路径列表
:param output_path: 输出文件路径
"""
clips = [VideoFileClip(file) for file in input_paths]
final_clip = concatenate_videoclips(clips)
final_clip.write_videofile(output_path)
# 示例使用
# split_video("input.mp4", "output_folder", 10, 44) # 切割从10秒到20秒的视频
# merge_videos(["output_folder/001.mp4", "output_folder/002.mp4", "output_folder/003.mp4", "output_folder/004.mp4", "output_folder/005.mp4"], "output_folder/merged_005.mp4")
# merge_videos(["output_folder/merged_005.mp4", "output_folder/merged_104.mp4", "output_folder/201.mp4"], "output_folder/merged_origin.mp4")
# up_voice("output_folder/merged_origin.mp4", "output_folder/merged_origin_up_voice2.mp4")
# merge_videos(["output_folder/merged_004.mp4", "output_folder/005.mp4"], "output_folder/merged_005.mp4") # 合并视频
merge_videos(["output_folder/000.mp4", "output_folder/merged_origin_up_voice2.mp4", "output_folder/999.mp4"], "output_folder/merged_final_1.mp4")