Python视频编辑库MoviePy的使用


Posted in Python onApril 01, 2020

moviepy官网:

https://pypi.org/project/moviepy/

是一个用于视频编辑的Python库:切割、连接、标题插入、视频合成、非线性编辑,视频处理和定制效果的创建。

Github:

https://github.com/Zulko/moviepy

MoviePy

MoviePy是一个关于视频编辑的python库,主要包括:剪辑,嵌入拼接,标题插入,视频合成(又名非线性编辑),视频处理,和自定制效果。可以看gallery中的一些实例来了解用法。MoviePy可以读写所有的音频和视频格式,包括GIF,通过python2.7+和python3可以跨平台运行于window/Mac/Linux,下面是一个在IPython notebook的运行实例。

Python视频编辑库MoviePy的使用

实例

在这个例子中,我们打开一个视频文件,在t = 50s的时刻和t = 60s的时刻之间选择子剪辑,在屏幕中心添加一个标题,并将结果写入一个新文件:

from moviepy.editor import *
video = VideoFileClip("myHolidays.mp4").subclip(50,60)
# Make the text. Many more options are available.
txt_clip = ( TextClip("My Holidays 2013",fontsize=70,color='white')
       .set_position('center')
       .set_duration(10) )
result = CompositeVideoClip([video, txt_clip]) # Overlay text on video
result.write_videofile("myHolidays_edited.webm",fps=25) # Many options...

安装

MoviePy依赖于python的模块:numpy,imageio,Decorator和tqdm,随着MoviePy的安装都会自动安装,FFMPEG软件 应该在第一次使用MoviePy的时候被自动安装(下载将会花几秒钟)。如果你想用FFMPEG的特定版本,请查看config_default.py的说明,在出现问题的时候,可以及时反馈。
手动安装:下载源代码,既可以通过PyPI,或者如果你想要一个开发版本,可以通过github下载,解压到一个文件夹,打开终端,然后输入:

$ (sudo) python setup.py install

通过pip进行安装:如果你安装了pip,仅仅在终端中输入:

$ (sudo) pip install moviepy

如果你setuptools和ez_setup两个都没安装,上面的命令会失效,在这种情况下请先在终端下输入:

$ (sudo) pip install ez_setup

输入代码

import imageio
imageio.plugins.ffmpeg.download()
import win_unicode_console
win_unicode_console.enable()
import sys,os
from PyQt5.QtCore import *
from PyQt5.QtWidgets import (QWidget, QPushButton, QLineEdit,QLabel,
               QApplication,QFileDialog)
from moviepy.video.io.VideoFileClip import VideoFileClip


class login(QWidget):
  def __init__(self):
    super(login,self).__init__()
    self.initUI()

  def initUI(self):
    #源文件选择按钮和选择编辑框
    self.source_btn = QPushButton('源文件', self)
    self.source_btn.move(30, 30)
    self.source_btn.resize(60,30)
    self.source_btn.clicked.connect(self.select_source)
    self.source_le = QLineEdit(self)
    self.source_le.move(120, 30)
    self.source_le.resize(250,30)

    # 存储文件选择按钮和选择编辑框
    self.target_btn = QPushButton('目标路径', self)
    self.target_btn.move(30, 90)
    self.target_btn.resize(60, 30)
    self.target_btn.clicked.connect(self.select_target)
    self.target_le = QLineEdit(self)
    self.target_le.move(120, 90)
    self.target_le.resize(250, 30)

    #截切开始时间输入框和提示
    self.startLabel = QLabel(self)
    self.startLabel.move(30, 150)
    self.startLabel.resize(60,30)
    self.startLabel.setText("开始秒")
    self.start_le = QLineEdit(self)
    self.start_le.move(120,150)
    self.start_le.resize(50,30)

    # 截切结束时间输入框和提示
    self.stopLabel = QLabel(self)
    self.stopLabel.move(230, 150)
    self.stopLabel.resize(60,30)
    self.stopLabel.setText("结束秒")
    self.stop_le = QLineEdit(self)
    self.stop_le.move(320,150)
    self.stop_le.resize(50,30)

    #保存按钮,调取数据增加函数等
    self.save_btn = QPushButton('开始',self)
    self.save_btn.move(30, 210)
    self.save_btn.resize(140, 30)
    self.save_btn.clicked.connect(self.addNum)

 

    #执行成功返回值显示位置设置
    self.result_le = QLabel(self)
    self.result_le.move(30, 270)
    self.result_le.resize(340, 30)


    #整体界面设置
    self.setGeometry(400, 400, 400, 400)
    self.setWindowTitle('视频剪切')#设置界面标题名
    self.show()

  # 打开的视频文件名称
  def select_source(self):
    target,fileType = QFileDialog.getOpenFileName(self, "选择源文件", "C:/")
    self.source_le.setText(str(target))
  #保存的视频文件名称,要写上后缀名
  def select_target(self):
    target,fileType = QFileDialog.getSaveFileName(self, "选择保存路径", "C:/")
    self.target_le.setText(str(target))


  def addNum(self):
    source = self.source_le.text().strip()#获取需要剪切的文件
    target = self.target_le.text().strip()#获取剪切后视频保存的文件
    start_time = self.start_le.text().strip()#获取开始剪切时间
    stop_time = self.stop_le.text().strip()#获取剪切的结束时间
    video = VideoFileClip(source)#视频文件加载
    video = video.subclip(int(start_time), int(stop_time))#执行剪切操作
    video.to_videofile(target, fps=20, remove_temp=True)#输出文件
    self.result_le.setText("ok!")#输出文件后界面返回OK
    self.result_le.setStyleSheet("color:red;font-size:40px")#设置OK颜色为红色,大小为四十像素
    self.result_le.setAlignment(Qt.AlignCenter)#OK在指定框内居中

if __name__=="__main__":
  app = QApplication(sys.argv)
  ex = login()
  sys.exit(app.exec_())

效果

Python视频编辑库MoviePy的使用

选择要分割的视频以及目标路径(带后缀),然后设置开始与结束时间,单位为秒。

Python视频编辑库MoviePy的使用

点击开始

Python视频编辑库MoviePy的使用

到此这篇关于Python视频编辑库MoviePy的使用的文章就介绍到这了,更多相关Python MoviePy内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python调用微信公众平台接口操作示例
Jul 08 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
解决DataFrame排序sort的问题
Jun 07 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
python flask几分钟实现web服务的例子
Jul 26 Python
python字典的setdefault的巧妙用法
Aug 07 Python
python递归下载文件夹下所有文件
Aug 31 Python
python列表推导式入门学习解析
Dec 02 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
如何学习Python time模块
Jun 03 Python
python json.dumps中文乱码问题解决
Apr 01 #Python
Django Admin后台添加数据库视图过程解析
Apr 01 #Python
pyqt5中动画的使用详解
Apr 01 #Python
django项目中新增app的2种实现方法
Apr 01 #Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 #Python
django API 中接口的互相调用实例
Apr 01 #Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 #Python
You might like
PHP中常用数组处理方法实例分析
2008/08/30 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
php中rename函数用法分析
2014/11/15 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
js实现简单扫雷
2020/11/27 Javascript
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
我的动漫时代的创业计划书范文
2014/01/27 职场文书
自我鉴定总结
2014/03/24 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
培根随笔读书笔记
2015/07/01 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
Python pandas求方差和标准差的方法实例
2021/08/04 Python