场景

moviepy官网:

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

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

Github:

https://github.com/Zulko/moviepy

实现

首先你需要安装moviepy

打开cmd输入:

pip install moviepy

其次需要安装ffmpeg,因为网络问题,这里使用豆瓣镜像

pip install imageio-ffmpeg -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

如果之前那么没有安装过PyQt5,你还需要:

pip install PyQt5 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

然后新建python文件,输入代码

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(, )
self.source_btn.resize(,)
self.source_btn.clicked.connect(self.select_source)
self.source_le = QLineEdit(self)
self.source_le.move(, )
self.source_le.resize(,) # 存储文件选择按钮和选择编辑框
self.target_btn = QPushButton('目标路径', self)
self.target_btn.move(, )
self.target_btn.resize(, )
self.target_btn.clicked.connect(self.select_target)
self.target_le = QLineEdit(self)
self.target_le.move(, )
self.target_le.resize(, ) #截切开始时间输入框和提示
self.startLabel = QLabel(self)
self.startLabel.move(, )
self.startLabel.resize(,)
self.startLabel.setText("开始秒")
self.start_le = QLineEdit(self)
self.start_le.move(,)
self.start_le.resize(,) # 截切结束时间输入框和提示
self.stopLabel = QLabel(self)
self.stopLabel.move(, )
self.stopLabel.resize(,)
self.stopLabel.setText("结束秒")
self.stop_le = QLineEdit(self)
self.stop_le.move(,)
self.stop_le.resize(,) #保存按钮,调取数据增加函数等
self.save_btn = QPushButton('开始',self)
self.save_btn.move(, )
self.save_btn.resize(, )
self.save_btn.clicked.connect(self.addNum) #执行成功返回值显示位置设置
self.result_le = QLabel(self)
self.result_le.move(, )
self.result_le.resize(, ) #整体界面设置
self.setGeometry(, , , )
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=, 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中使用pip安装库时提示:远程主机强迫关闭了一个现有的连接:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100851841

imageio.ffmpeg.download() has been deprecated. Use 'pip
install im ageio-ffmpeg' instead.':

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100853266

Imageio:
'ffmpeg-win32-v3.2.4.exe' was not found on your computer; downloading it
now.:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100857437

ffmpeg-win32-v3.2.4exe.zip:

https://download.csdn.net/download/badao_liumang_qizhi/11747539

Python中使用moviepy进行视频分割的更多相关文章

  1. 在Python中使用moviepy进行视频剪辑时输出文件报错 ‘NoneType‘ object has no attribute ‘stdout‘问题

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 movipy输出文件时报错 'NoneType' ...

  2. 在Python中使用moviepy进行音视频剪辑混音合成时输出文件无声音问题

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在使用moviepy进行音视频剪辑时发现输出成功但 ...

  3. Python中通过多个字符分割(split)字符串的方法

    python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('-|_','sharejs_ha ...

  4. Python中通过多个字符分割(split)字符串的方法--转载

    Python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('_#|','this_is#a| ...

  5. 第11.22节 Python 中re模块的字符串分割器:split函数

    一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullm ...

  6. PyQt+moviepy音视频剪辑实战文章目录

    ☞ ░ 前往老猿Python博文目录 ░ 本专栏为moviepy音视频剪辑合成相关内容介绍的免费专栏,对应的收费专栏为<moviepy音视频开发专栏>. 一.moviepy基础能力系统介绍 ...

  7. moviepy音视频剪辑:视频剪辑基类VideoClip的__init__构造方法参数has_constant_size的作用

    ☞ ░ 前往老猿Python博文目录 ░ moviepy音视频剪辑模块的视频剪辑基类VideoClip构造方法: __init__(self, make_frame=None, ismask=Fals ...

  8. moviepy音视频剪辑基类VideoClip的write_gif方法opt、fuzz、dispose、colors、loop等参数的作用

    ☞ ░ 前往老猿Python博文目录 ░ moviepy音视频剪辑模块的视频剪辑基类write_gif方法用于将视频剪辑输出到gif文件,调用语法如下: def write_gif(self, fil ...

  9. moviepy音视频剪辑基类VideoClip的write_videofile方法codec、bitrate、preset、audio_bitrate、audio_nbytes等参数的作用

    ☞ ░ 前往老猿Python博文目录 ░ moviepy音视频剪辑模块的视频剪辑基类write_videofile方法用于将视频剪辑输出到文件,调用语法如下: write_videofile(self ...

随机推荐

  1. c#小灶——自动类型转换和强制类型转换

    前面已经认识了不同的数据类型,你们有没有尝试过让不同的数据类型进行运算呢? ; double b = a; Console.WriteLine(b); 运行结果是:1 我们把一个整型的变量赋值给了一个 ...

  2. python案例:实现一个函数版的名片管理系统

    本案例使用了自定义函数以及对字符串的常见操作.判断语句和循环语句等知识. 要求 必须使用自定义函数,完成对程序的模块化. 名片信息至少包括:姓名.电话.住址. 必须完成的功能:增.删.改.查.退出. ...

  3. 自己实现spring核心功能 二

    前言 上一篇我们讲了spring的一些特点并且分析了需要实现哪些功能,已经把准备工作都做完了,这一篇我们开始实现具体功能. 容器加载过程 我们知道,在spring中refesh()方法做了很多初始化的 ...

  4. 16.XML语法、CDATA、约束(DTD、Schema)讲解

    xml主要用来描述数据,比如配置文件,网络之间传输数据等,并且在android中也经常用xml来布局,,接下来便来学习xml常用的东西 1.XML语法 xml语法分为: 1.1 文档声明 必须位于文档 ...

  5. 给 asp.net core 写个中间件来记录接口耗时

    给 asp.net core 写个中间件来记录接口耗时 Intro 写接口的难免会遇到别人说接口比较慢,到底慢多少,一个接口服务器处理究竟花了多长时间,如果能有具体的数字来记录每个接口耗时多少,别人再 ...

  6. 安排:《蚂蚁花呗1234面:Redis+分布式架构+MySQL+linux+红黑树》

    前言: 大厂面试机会难得,为了提高面试通关率,建议朋友们在面试前先复盘自己的知识栈,依据掌握程度划分重要.优先级,系统地去学习!如果不准备充分就去参加面试,既会失去进入大厂的机会,更是对自己的不负责. ...

  7. Codeforces 814D

    题意略. 思路: 由于不重合这个性质,我们可以将每一个堆叠的圆圈单独拿出来考虑,而不用去考虑其他并列在同一层的存在, 在贪心解法下,发现,被嵌套了偶数层的圆圈永远是要被减去的,而奇数层的圆圈是要加上的 ...

  8. Java基础之抽象类与接口

    Java基础之抽象类与接口 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候 ...

  9. Leetcode之回溯法专题-22. 括号生成(Generate Parentheses)

    Leetcode之回溯法专题-22. 括号生成(Generate Parentheses) 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n ...

  10. appium在windows系统下环境搭建

    对于appium的介绍我就不说了,之前的文章介绍过.下面直入主题. 命令版本在安装过程中需要有python2环境,装完你可以装python3来写脚本. 环境要求: JDK >java语言安装包 ...