python剪切视频与合并视频的实现


Posted in Python onMarch 03, 2020

windows10/python3.6环境需安装imageio,ffmpeg(视频中有教下载)文字中不体现太麻烦,看起来也不方便!

剪切代码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(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这个库
from moviepy.editor import *
import os

# 定义一个数组
L = []

# 访问 video 文件夹 (假设视频都放在这里面)
for root, dirs, files in os.walk("./video"):
 # 按文件名排序
 files.sort()
 # 遍历所有文件
 for file in files:
  # 如果后缀名为 .mp4
  if os.path.splitext(file)[1] == '.mp4':
   # 拼接成完整路径
   filePath = os.path.join(root, file)
   # 载入视频
   video = VideoFileClip(filePath)
   # 添加到数组
   L.append(video)

# 拼接视频
final_clip = concatenate_videoclips(L)

# 生成目标视频文件
final_clip.to_videofile("./target.mp4", fps=24, remove_temp=False)

在线观看视频更清楚学得更快更好!

到此这篇关于python剪切视频与合并视频的实现的文章就介绍到这了,更多相关python剪切合并视频内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python模块学习 datetime介绍
Aug 27 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
使用Python写一个贪吃蛇游戏实例代码
Aug 21 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
python操作MySQL 模拟简单银行转账操作
Sep 27 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
Python 读取用户指令和格式化打印实现解析
Sep 02 Python
python 项目目录结构设置
Feb 14 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 #Python
基于python 等频分箱qcut问题的解决
Mar 03 #Python
python实现快递价格查询系统
Mar 03 #Python
使用python 计算百分位数实现数据分箱代码
Mar 03 #Python
利用Python计算KS的实例详解
Mar 03 #Python
python如何提取英语pdf内容并翻译
Mar 03 #Python
Pycharm如何运行.py文件的方法步骤
Mar 03 #Python
You might like
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
PHP添加MySQL数据记录代码
2008/06/07 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
javascript 隔行换色函数代码
2010/10/24 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
js闭包的9个使用场景
2020/12/29 Javascript
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
python对url格式解析的方法
2015/05/13 Python
Django Highcharts制作图表
2016/08/27 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
捐助感谢信
2015/01/22 职场文书
档案接收函格式
2015/01/30 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android