moviepy 视频剪切,拼接,音频处理

官网

使用matplotlib — moviepy-cn 文档

案例

from moviepy.editor import *
from moviepy.video.fx import resize
from PIL import Image

file1=r"D:\xy_fs_try\video_to_deal\spider_video\file\vedeo3.mp4"
file2=r"D:\xy_fs_try\video_to_deal\spider_video\file\vedeo4.mp4"
file4=r'D:\xy_fs_try\video_to_deal\spider_video\file\qianlong.mp4'

file3=r'D:\xy_fs_try\video_to_deal\spider_video\file\source.mp4'
file5=r'D:\xy_fs_try\video_to_deal\spider_video\file\source1.mp4'
file6=r'D:\xy_fs_try\video_to_deal\spider_video\file\source2.mp4'

def extract_frames_on_original(video_path, output_path, fps=1):
    original_clip = VideoFileClip(video_path)
    frames = original_clip.iter_frames(fps=fps)
    extracted_clips = []

    for frame in frames:
        extracted_clip = VideoFileClip(video_path).set_duration(1/fps).set_start(len(extracted_clips) / fps)
        extracted_clips.append(extracted_clip)

    # 将原视频和抽帧视频拼接起来
    final_clip = clips_array([[original_clip], [clips_array([extracted_clips])]])
    final_clip.write_videofile(output_path, codec='libx264')

# 使用示例
# video_file = r"D:\xy_fs_try\video_to_deal\spider_video\file\vedeo3.mp4"  # 替换为你的视频文件路径
# output_video = "./extracted_video.mp4"  # 替换为你想要保存的抽帧后的视频路径
# extract_frames_on_original(video_file, output_video, fps=1)  # 抽取帧并生成视频,每秒一帧

def concatenate_videos(video1_path, video2_path, output_path):
    '''视频拼接'''
    audio=VideoFileClip(file3).audio
    video = VideoFileClip(file3).without_audio()
    video2 = VideoFileClip(file5).without_audio()
    video3 = VideoFileClip(file6).without_audio()
    re_video=video.subclip(1,25)
    ba_video=video.subclip(26,56.7)
    # # 拼接两个视频剪辑
    final_clip = concatenate_videoclips([re_video, video2,video3,ba_video],method='compose')
    final_clip=final_clip.set_audio(audio)
    final_clip.write_videofile(output_path, codec='libx264')
    final_clip.reader.close()
    final_clip.audio.reader.close_proc()

video1_file = file3  # 替换为第一个视频文件路径
video2_file = file4  # 替换为第二个视频文件路径
output_video = "./concatenated_video.mp4"  # 替换为输出的合并视频路径
concatenate_videos(video1_file, video2_file, output_video)  # 将两个视频拼接成一个新视频



总结

moviepy使用的还是比较方便的,比起opencv需要自己去遍历处理,视频拼接原理与列表切分原理是一样的,灵活性比较高,内置一些其他的函数叠加,使用还是比较方便的

最近更新

  1. STM32学习和实践笔记(39):I2C EEPROM实验

    2023-12-08 21:32:03       0 阅读
  2. Python面试题:请解释什么是反射(reflection)?

    2023-12-08 21:32:03       0 阅读
  3. Rudolf and k Bridges——Codeforces Round 933 (Div. 3) E

    2023-12-08 21:32:03       0 阅读
  4. 墨烯的C语言技术栈-C语言基础-010

    2023-12-08 21:32:03       1 阅读
  5. html5路由如何在nginx上部署(vite+vue3)

    2023-12-08 21:32:03       1 阅读
  6. nodejs学习之glob

    2023-12-08 21:32:03       1 阅读

热门阅读

  1. almaLinux centos8 下载ffmpeg离线安装包、离线安装

    2023-12-08 21:32:03       44 阅读
  2. 【Kotlin】

    2023-12-08 21:32:03       42 阅读
  3. 真正理解面向对象、面向过程编程

    2023-12-08 21:32:03       42 阅读
  4. springboot集成字典注解

    2023-12-08 21:32:03       43 阅读
  5. 用stl写一个自动打分比赛的案例

    2023-12-08 21:32:03       40 阅读
  6. cmake编译数据库

    2023-12-08 21:32:03       43 阅读
  7. arXiv学术速递笔记12.8

    2023-12-08 21:32:03       30 阅读
  8. 【数据结构】链表算法总结

    2023-12-08 21:32:03       42 阅读