• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python基于moviepy实现音视频剪辑

    实践步骤

    1.寻找合适的Python库(安装是否麻烦、使用是否简便、执行会不会太久)

    2.定义输入输出

    3.设计执行流程并一步步实现(定义函数,与使用具体API相关)

    1. 读入并创建clip对象。
    2. 剪辑subclip,输入时间参数可以是时间格式的字符串。
    3. 导出write_videofile。

    4.结论:时间太久,片段多长就花了多久的时间;CPU全跑满了。

    stackoverflowConcat videos too slow using Python MoviePY 里面有个答案说,调用包里封装的ffmpeg函数会快一些:

    You have some functions that perform direct calls to ffmpeg: github.com/Zulko/movie… And are therefore extremely efficient, for simple tasks such as yours.

    5.重新设计和实现,直接使用moviepy.video.io.ffmpeg_tools里的函数:ffmpeg_extract_subclip(源音视频文件,起,止,输出名)。

    6.结论:时间快了很多,几乎是几秒内就完成。

    7.优化:一次处理多个时间段

    1. 输入由一个起止时间,变为一组起止时间
    2. 循环处理每一组起止时间
    3. 输出的文件名按顺序拼接

    8.优化:每段时间配上名字

    1. 输入除了每一组的起止时间,还有后缀名
    2. 文件名+后缀得到输出的文件名

    9.优化:输入输出的合法性校验

    完整代码

    需要pip install moviepy

    简单的使用

    from moviepy.editor import VideoFileClip, concatenate_videoclips
    
    clipOri = VideoFileClip("E:/2020-03-29 19-31-39.mkv")
    
    
    #截取两个subclip再拼接
    #time_length = int(clipOri.duration) 这句可以获取片子的时
    #超过时长会报错,时长默认用秒,也可以写得更细,(00:03:50.54)->3分50秒
    
    cut1 = clipOri.subclip(0, 7053)
    cut2 = clipOri.subclip(7059, 8941)
    
    finalClip = concatenate_videoclips([cut1,cut2])
    
    finalClip.write_videofile("E:/acut.mp4")
    
    import os
    import moviepy.video.io.ffmpeg_tools as fftool
    from moviepy.tools import cvsecs
    
    def add_suffix(file_name, suffix): # 文件名拼接后缀
        index = file_name.rfind('.') # 最后一个点号
        res = file_name[:index] + '_' + suffix + file_name[index:]
        return res
    
    # 输入
    file_name = r"./XXX.mkv"
    output_arr = [
        ('04:20','05:07', '自我介绍'),
        ('05:07','17:47', '项目经历'),
        ('17:37','24:40', 'HTTPS'),
        ('24:40','28:10', '实现读写锁'),
    ]
    
    if not os.path.isfile(file_name): # 校验
        print("不合法的输入", file_name)
    
    for startStr, endStr, suffix in output_arr:
        start = cvsecs(startStr)
        end = cvsecs(endStr)
        
        if start  0 or start >= end: # 校验
            print("不合法的时间",startStr, endStr)
            continue
    
        full_output_name = add_suffix(file_name, suffix)
        print('处理文件:', file_name, '时间:', startStr, '-', endStr)
        fftool.ffmpeg_extract_subclip(file_name,start,end,full_output_name) # 剪辑并输出
        print('处理功成功,输出:',full_output_name)
    

    参考

    以上就是python基于moviepy实现音视频剪辑的详细内容,更多关于python moviepy实现音视频剪辑的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • python用moviepy对视频进行简单的处理
    • MoviePy常用剪辑类及Python视频剪辑自动化
    • MoviePy简介及Python视频剪辑自动化
    • Python视频编辑库MoviePy的使用
    • Python使用pydub模块转换音频格式以及对音频进行剪辑
    • Python竟然能剪辑视频
    • 用python进行视频剪辑
    上一篇:分析语音数据增强及python实现
    下一篇:教你用Python pygame设置窗口标题和图标
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python基于moviepy实现音视频剪辑 python,基于,moviepy,实现,音视频,