iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python基于moviepy实现音视频剪辑
  • 135
分享到

python基于moviepy实现音视频剪辑

pythonmoviepypython音频剪辑python视频剪辑 2022-06-02 22:06:47 135人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录实践步骤完整代码参考实践步骤 寻找合适的python库(安装是否麻烦、使用是否简便、执行会不会太久) moviepy 音视频库。分析需要用的api:代码示例 定义输入输出 输入:

目录
  • 实践步骤
  • 完整代码
  • 参考

实践步骤

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

  • moviepy 音视频库。分析需要用的api:代码示例

定义输入输出

  • 输入:一个音视频文件的地址,需要剪出来的时间段
  • 输出:剪辑片段的文件

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

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

结论:时间太久,片段多长就花了多久的时间;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.

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

  • 这个函数中输入的起止时间参数只能是数字,不能是字符串,而库基本使用的接口函数传入的是字符串。看源码发现是有个把时间字符串转换成数字的装饰器的,一步步找就可以找到那个转换的函数了。

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

  • 但并不明白为什么快了这么多

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

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

优化:每段时间配上名字

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

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

  • 校验输入地址是合法文件
  • 校验时间段(没什么必要)
    • 不可以小于0
    • 不可以大于视频时间
    • 起小于止

完整代码

需要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)

参考

  • moviepy的文档
    • moviepy中文文档
    • 英文文档
    • gitHub地址
  • 博文:用moviepy将视频剪掉一段
  • stack overflow Concat videos too slow using Python MoviePY

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

--结束END--

本文标题: python基于moviepy实现音视频剪辑

本文链接: https://www.lsjlt.com/news/10941.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python基于moviepy实现音视频剪辑
    目录实践步骤完整代码参考实践步骤 寻找合适的Python库(安装是否麻烦、使用是否简便、执行会不会太久) moviepy 音视频库。分析需要用的API:代码示例 定义输入输出 输入:...
    99+
    2022-06-02
    python moviepy python 音频剪辑 python 视频剪辑
  • 基于Python实现丝滑换装视频剪辑
    目录软硬件、技能需求颜色变换说明Python 应用插件思路流程MiVOS 模块交互式看到人家用PR什么编辑软件做这种丝滑一键换装的视频,自己也想尝试一下。不过PR这破玩意太难用了,还...
    99+
    2022-11-13
  • 基于Python怎么实现丝滑换装视频剪辑
    本篇内容介绍了“基于Python怎么实现丝滑换装视频剪辑”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!软硬件、技能需求CPU最好是I7-87...
    99+
    2023-06-29
  • iOS基于AVFoundation制作用于剪辑视频项目
    目录项目效果图功能实现一、选取视频并播放二、按帧获取缩略图初始化视频轨道三、视频指定时间跳转四、播放器监听五、导出视频最近做了一个剪辑视频的小项目,踩了一些小坑,但还是有惊无险的实现...
    99+
    2022-11-12
  • Python 音视频剪辑快速入门教程
    目录一、引言二、Moviepy 简介三、Moviepy 安装四、音视频的加载和保存五、音视频数据的访问六、音视频变换1、Clip 的 fl 方法2、Clip 的 fl_time 方法...
    99+
    2022-11-12
  • iOS基于AVFoundation 制作用于剪辑视频项目
    目录项目效果图功能实现一、选取视频并播放二、按帧获取缩略图初始化视频轨道三、视频指定时间跳转四、播放器监听五、导出视频最近做了一个剪辑视频的小项目,踩了一些小坑,但还是有惊无险的实现...
    99+
    2022-05-29
    iOS AVFoundation 剪辑 视频
  • iOS基于AVFoundation怎样制作用于剪辑视频项目
    iOS基于AVFoundation怎样制作用于剪辑视频项目,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。最近做了一个剪辑视频的小项目,踩了一些小坑,但还是有惊无...
    99+
    2023-06-21
  • C#实现视频的批量剪辑功能
    篇首,完全没有技术含量的帖子,高手略过,只为十几年后重新捡起的我爱好玩玩。。。 起因,一个朋友说他下载了很多短视频,但只需要要其中的一小截,去头掐尾,在软件里搞来搞去太麻烦,让我帮忙...
    99+
    2023-03-23
    C#视频批量剪辑 C#视频剪辑
  • C#基于NAudio怎么实现对Wav音频文件剪切
    这篇文章主要讲解了“C#基于NAudio怎么实现对Wav音频文件剪切”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#基于NAudio怎么实现对Wav音频文件剪切”吧!前言C#基于NAudi...
    99+
    2023-06-21
  • 实现快剪辑功能的短视频应用
    超级简单易用的短视频SDK,为开发者提供短视频编辑、视频直播、特效、录屏、编解码、视频转换,等多种解决方案,涵盖PC、iOS、Android多平台。以市场为导向,不断打磨并创新技术,在稳定性,兼容性,硬件设备效率优化上千捶百炼。使产品技术一...
    99+
    2023-06-04
  • Python如何实现视频裁剪
    小编给大家分享一下Python如何实现视频裁剪,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!环境依赖本文主要使用到的不是ffmpeg,而是ffprobe也在上面这...
    99+
    2023-06-28
  • 3行Python代码实现剪辑音乐
    目录前言1.音量变化2.重复片段3.渐进渐出4.反转音乐前言 你没看错,Python剪辑音乐,只需要3行语句就能瞬间完成,比如我要剪辑33秒到1分10秒的音乐片段: from pyd...
    99+
    2022-11-11
  • C# 基于NAudio实现对Wav音频文件剪切(限PCM格式)
    目录前言实现代码效果图前言 C#基于NAudio工具对Wav音频文件进行剪切,将一个音频文件剪切成多个音频文件 注:调用方法前需要导入NAudio.dll或者在NuGet程序管理器搜...
    99+
    2022-11-12
  • 使用Golang和FFmpeg实现视频剪辑的方法
    要使用Golang和FFmpeg实现视频剪辑,可以通过调用FFmpeg的命令行工具来完成操作。下面是一个示例的代码:gopackag...
    99+
    2023-10-20
    Golang
  • C#如何实现视频的批量剪辑功能
    今天小编给大家分享一下C#如何实现视频的批量剪辑功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一,采用预置数据data....
    99+
    2023-07-05
  • 基于python实现去除视频的水印
    我们再搬运视频的时候常常会遇到视频有水印的问题 如下 下面就通过python来实现对视频水印的去除 在pycharm新建一个项目,创建image,video目录其他不用 必要条件 在终端下载相关依赖包 pip install moviep...
    99+
    2023-09-14
    python 音视频 numpy
  • 基于Python实现视频分辨率转换
    目录前言环境依赖代码验证一下前言 本文提供将视频调整分辨率的Python代码,一如既往的实用主义。 环境依赖 ffmpeg环境安装,可以参考文章:windows ffmpeg安装部署...
    99+
    2022-11-12
  • 基于Python实现视频去重小工具
    同级目录下新建dup_video import json import os import shutil import cv2 import imagehash from PIL ...
    99+
    2023-03-24
    Python实现视频去重工具 Python视频去重 Python视频
  • Python中使用moviepy进行视频分割的实现方法
    场景 moviepy官网: https://pypi.org/project/moviepy/ 是一个用于视频编辑的Python库:切割、连接、标题插入、视频合成、非线性编辑,视频处...
    99+
    2022-11-12
  • 使用Golang和FFmpeg实现视频片段剪辑的技巧
    要使用Golang和FFmpeg实现视频片段剪辑,可以使用以下技巧:1. 安装FFmpeg并确保它可以在命令行中使用。2. 在Gol...
    99+
    2023-10-10
    Golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作