场景

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. web 上读取图片,并转化为指定格式

    一. 转换为 base64 public static string ObtainBase64FromWeb(string domain, string path) { string url = &q ...

  2. 为什么不建议在hbase中使用过多的列簇

    我们知道,hbase表可以设置一个至多个列簇(column families),但是为什么说越少的列簇越好呢? 官网原文: HBase currently does not do well with ...

  3. springboot搭建通用mapper

    对于搭建一个小项目自己测试玩如果采用传统的SSM框架配置起来太过于繁琐,使用springboot简化配置再搭配通用mapper简直不要太方便,话不多说,直接上代码. 首先是pom文件,直接去sprin ...

  4. 高级脚本进阶—使用case的多功能选择性脚本

    应用场景: 在应用脚本决解实际的运维问题时,单功能脚本有很多的不同应用环境,如不同的运行环境,不同的系统版本等,这时,就需要对脚本的功能进行选择,一个脚本实现多功能多版本系统的维护,以减少沟通成本,而 ...

  5. 企查查app (二)

    企查查app sign算法破解 已删除!!!! 这次我们又找到设备id,现在就只差aXM这个了. 关注小白公众号,小白带你成长.

  6. CodeForces 909E

    题意略. 思路:一个拓扑排序的题目吧.肯定是要先处理后面那个任务,再处理前面那个任务,我的思路是尽力先把主处理器能操作的先操作完,然后再把副处理器能操作完的再操作完,这样循环,直到处理完全部. 定义t ...

  7. Java集合框架之LinkedList浅析

    Java集合框架之LinkedList浅析 一.LinkedList综述: 1.1LinkedList简介 同ArrayList一样,位于java.util包下的LinkedList是Java集合框架 ...

  8. [C#] 改进SqliteHelper, 减少拼接SQL语句

    说明:开始几个是基本的方法,后面稍微封装了下 public class SqliteHelper { //连接字符串 private static readonly string str = Conf ...

  9. js 调用手机摄像头或相册并展示图片

    效果图 手机浏览器.微信打开该网页,都支持调用摄像头拍照和打开相册. 先看最终结果: 每次点击“点击上传”,可以选择相册或者拍照,选完以后可以多展示一张图片,同时上传服务器. 点击“重新上传”,清空所 ...

  10. volatile底层实现原理

    前言 当共享变量被声明为volatile后,对这个变量的读/写操作都会很特别,下面我们就揭开volatile的神秘面纱. 1.volatile的内存语义 1.1 volatile的特性 一个volat ...