python基于moviepy实现音视频剪辑

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

实践步骤

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

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

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.优化:输入输出的合法性校验

  • 校验输入地址是合法文件
  • 校验时间段(没什么必要)
    • 不可以小于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)

参考

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

(0)

相关推荐

  • 如何利用python操作注册表

    注册表是windows管理配置系统运行参数的一个核心数据库.在这个数据库里整合集成了全部系统和应用程序的初始化信息:其中包含了硬件设备的说明.相互关联的应用程序与文档文件.窗口显示方式.网络连接参数.甚至有关系到计算机安全的网络共享设置 . 1.读取 读取用的方法是OpenKey方法:打开特定的key winreg.OpenKey(key,sub_key,res=0,sam=KEY_READ) 例子:此例子是显示了本机网络配置的一些注册表项 import winreg key = winreg.

  • Python视频编辑库MoviePy的使用

    moviepy官网: https://pypi.org/project/moviepy/ 是一个用于视频编辑的Python库:切割.连接.标题插入.视频合成.非线性编辑,视频处理和定制效果的创建. Github: https://github.com/Zulko/moviepy MoviePy MoviePy是一个关于视频编辑的python库,主要包括:剪辑,嵌入拼接,标题插入,视频合成(又名非线性编辑),视频处理,和自定制效果.可以看gallery中的一些实例来了解用法.MoviePy可以读写

  • Python竟然能剪辑视频

    大家好,我是辰哥. 辰哥之前就想着Python可不可以剪辑视频(提取视频的音频,视频截取等等),然后辰哥在网上一搜,还真找到了Python的一个处理音频的库-MoivePy MoivePy能干嘛呢,下面辰哥来给大家简单介绍一下. 提取音频 视频截取 视频合并 视频叠加 添加字幕 追踪人脸,打马赛克 炫酷的特效 阴影效果 ....... 01提取音频 平时我们在刷短视频或者看到一些视频的时候(视频里才有,网上搜不到这种剪辑的音频时),希望能够把视频里面的音频提取出来当背景音乐或者想平时听听但是不想

  • Python使用pydub模块转换音频格式以及对音频进行剪辑

    前言 近端时间看了一个短视频,觉得视频的背景音乐片段很不错,想把这个背景音乐得到,虽然小编运用Python爬虫肯定能得到这首音乐,但是这个音乐片段肯定是得不到的,于是网上看一下相关官方文档,没想到python真的有模块可以满足要求,这又让我想起自己CSDN界面的那段话了,"在Python面前,只有你想不到的,没有Python做不到的". 1.需要下载的Python模块和ffmpeg多媒体处理工具 需要的Python模块是标题上提到的那个,pydub,这个模块可以实现对音频文件的剪辑.转

  • python用moviepy对视频进行简单的处理

    楔子 随着自媒体时代,现在对视频的处理变得越来越常见.我们可以使用Adobe的一些专业工具,但是效率不高:如果只是对视频进行一些简单的处理的话,或者视频的数量非常多的话,那么使用专业软件显然就不太适合了. 而python中有专门用于处理视频的库:moviepy,可以非常方便地对视频进行一些简单处理,下面我们就来看一看. 首先是安装:pip install moviepy -i https://pypi.tuna.tsinghua.edu.cn/simple,个人推荐安装的时候使用清华源,因为mo

  • MoviePy常用剪辑类及Python视频剪辑自动化

    视频地址:https://www.bilibili.com/video/BV1mv411k7Qv?p=4 导入方式 所有的剪辑类都可以从moviepy.editor模块中导入 Clip 所有剪辑类的基类, 也可以简单的将它称为: VideoClip 所有视频剪辑的基类, 可以简单的将它称为: 很少用, 除非你要从零开始一帧一帧地构建视频. VideoFileClip 最常用的视频剪辑类, 用于导入视频文件(mp4.avi等格式皆可) ImageClip 常用的剪辑类, 用于导入图片文件(png.

  • MoviePy简介及Python视频剪辑自动化

    视频地址:https://www.bilibili.com/video/BV1mv411k7Qv?p=1 moviepy是啥 MoviePy是一个用于视频编辑的Python模块. 可用于基本操作(如剪切.拼接.字幕插入).视频合成.视频处理或创建高级效果等. 它可以读写最常见的视频(甚至GIF).音频格式. 在一定程度上,它可以取代Premiere. moviepy能做啥 批量加片头.片尾 比如你有一堆已经做好的视频,你想给它们加上片头,但不想用PR一个个地处理: 轻松从MV中提取音乐 比如你有

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

    目录 实践步骤 完整代码 参考 实践步骤 1.寻找合适的Python库(安装是否麻烦.使用是否简便.执行会不会太久) moviepy 音视频库.分析需要用的API:代码示例 2.定义输入输出 输入:一个音视频文件的地址,需要剪出来的时间段 输出:剪辑片段的文件 3.设计执行流程并一步步实现(定义函数,与使用具体API相关) 读入并创建clip对象. 剪辑subclip,输入时间参数可以是时间格式的字符串. 导出write_videofile. 4.结论:时间太久,片段多长就花了多久的时间:CPU

  • Python 音视频剪辑快速入门教程

    目录 一.引言 二.Moviepy 简介 三.Moviepy 安装 四.音视频的加载和保存 五.音视频数据的访问 六.音视频变换 1.Clip 的 fl 方法 2.Clip 的 fl_time 方法 3.剪辑颜色变换 4.剪辑大小变换 5.剪辑内容变换 七.剪辑合成 1.概述 2.将多个剪辑拼接 3.多个剪辑同屏播放 4.将一系列图像构造成视频 5.其他几种生成视频方法简介 八.小结 一.引言 在这个短视频和自媒体大行其道的年代,音视频剪辑成为了大佬们的必备工具,现在有很多音视频剪辑的软件,如剪

  • python工具快速为音视频自动生成字幕(使用说明)

    为音视频自动生成字幕的 python 工具 autosub 是一个能自动为音视频生成字幕的 python 包,以下为其简介和使用说明. autosub autosub原本使用 python 2.X 开发,仅支持 linux 和 macos 系统,现已停止维护 其原理是对音视频文件进行语音活动检测以查找说话的区域,然后并行调用 Google Web Speech API 进行转录,(可选)翻译成目标语言,并将结果存储下来. autosub3 基于 autosub,升级到 python 3.X 版本

  • python批量下载抖音视频

    本文实例为大家分享了python批量下载抖音视频的具体代码,供大家参考,具体内容如下 知识储备:博主是在Pycharm下进行的 文件夹:dou_ying 1:在文件夹doy_ying下新建第一个文件:dou_ying_video_download.py 代码: # coding=utf-8 """ @author: jiajiknag 程序功能:批量下载抖音视频 """ import requests import bs4 import os i

  • 使用python爬取抖音视频列表信息

    如果看到特别感兴趣的抖音vlogger的视频,想全部dump下来,如何操作呢?下面介绍介绍如何使用python导出特定用户所有视频信息 抓包分析 Chrome Deveploer Tools Chrome 浏览器开发者工具 在抖音APP端,复制vlogger主页地址, 比如: http://v.douyin.com/kGcU4y/ , 在PC端用chrome浏览器打卡,并模拟手机,这里选择iPhone, 然后把复制的主页地址,放到浏览器进行访问,页面跳转到 https://www.iesdouy

  • Python如何将图像音视频等资源文件隐藏在代码中(小技巧)

    下午有同学Python学习群里说,使用pyinstaller打包源码时,因为代码中使用了图像.音频.视频等资源文件,无法将程序打包成单一的可执行文件.有没有方法将这些资源文件按保存在代码中呢?我想了一下,应该是可以的.于是乎,花了一个小时,写出了下面的代码,算是抛砖引玉吧. 这段代码可以将二进制文件转存为python脚本文件,供其他脚本引用.代码最后附有使用的例子,演示用的图片可以随便照一张.除了转存二进制数据,还提供了两个方法: get_fp():返回二进制的IO对象(类文件对象) save(

  • python爬取抖音视频的实例分析

    现在抖音的火爆程度,大家都是有目共睹的吧,之前小编在网络上发现好玩的事情,就是去爬取一些网站,因此,也考虑能否进行抖音上的破案去,在实际操作以后,真的实现出来了,利用自动化工具,就可以轻松实现了,后有小伙伴提出把appium去掉瘦身之后也是可以实现的,那么看下详细操作内容吧. 1.mitmproxy/mitmdump抓包 import requests path = 'D:/video/' num = 1788 def response(flow): global num target_urls

  • python基于tkinter制作m3u8视频下载工具

    这是我为了学习tkinter用python 写的一个下载m3u8视频的小程序,程序使用了多线程下载,下载后自动合并成一个视频文件,方便播放. 目前的众多视频都是m3u8的播放类型,只要知道视频的m3u8地址,就可以完美下载整个视频. m3u8地址获取 打开浏览器,点开你要获取地址的视频 重要的来了,右键>>审查元素或者按F12也可以 根据开发或测试的实际环境选择相应的设备,选择iphone6 plus 选择好了以后,刷新页面,点击漏斗,选择media,一定刷新之后再点击,没出来的话切换几下选项

  • python一键去抖音视频水印工具

    无水印视频下载 方法一: 无水印视频下载很简单,有一个通用的方法,就是使用去水印平台即可. 我使用的去水印平台是:http://douyin.iiilab.com/ 在输入框中输入视频链接点击视频解析,就可以获得无水印视频链接. 这个网站当初我写代码的时候是好使的,当初用这个网站下了一些无水印视频,不过写这篇文章的时候发现这个取水印平台无法正常解析了,等它修复好了再用这个功能吧. 这个平台不仅包括抖音视频去水印,还支持火山.快手.陌陌.美拍等无水印视频.所以做一个这个网站的接口还是很合适的. 简

  • Python+uiautomator2实现自动刷抖音视频功能

    工具准备 Python3.7.7 adb(Android debug bridge) uiautomatorviewer 安装adb 官网地址:https://developer.android.google.cn/studio/command-line/adb 下载好解压后设置环境变量即可 安装uiautomatorviewer 参照此篇文章:https://www.cnblogs.com/corsacsherry/p/10609339.html 调试工具 手机通过USB连接到电脑上开启开发者

随机推荐