简单350 发表于 2022-3-26 10:25:04

PyQt+moviepy音视频剪辑实战1:多个音视频合成顺序播放或同屏播放的视频文


[*]专栏:Python基础教程目录
[*]专栏:使用PyQt开发图形界面Python应用
[*]专栏:PyQt+moviepy音视频剪辑实战
[*]专栏:PyQt入门学习
[*]老猿Python博文目录
[*]老猿学5G博文目录
一、引言

在《moviepy音视频剪辑:音视频的加载和输出》、《moviepy音视频剪辑:多个视频合成一个视频》、《moviepy音视频剪辑:使用VideoFileClip、AudioFileClip和write_videofile、write_audiofile进行音视频的加载和输出》和《moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频》介绍了音视频文件加载和输出以及多视频合成一个视频的方法,本节将使用PyQt和moviepy结合开发一个音视频合成的GUI应用。
二、功能及界面设计

2.1、主界面


以mainwindow为基础设计窗口主界面,包含一个菜单和对应工具条,用于选择要合成的文件、去除选中的文件、合成参数配置和执行合成操作等功能。
本次对该界面的信号处理没有使用UI界面来定义信号和槽的关联,因为线条太多会不好修改,相关信号和槽的连接主要通过代码实现。
2.2、参数配置界面


根据选择的不同合成类型,可选配置不同的参数,也可以不配置,关于这些参数的说明请参考引言中提到的博文介绍。
2.3、输出信息窗

老猿为准备开发的视频工具提供了一个统一的输出信息窗,moviepy本身的输出信息将全部被接管到该输出信息窗显示。界面设计如图:

关于输出信息截获请参考《在Python实现print标准输出sys.stdout、stderr重定向及捕获的简单办法》以及《PyQt(Python+Qt)学习随笔:print标准输出sys.stdout以及stderr重定向QTextBrowser等图形界面对象》。
三、代码实现

3.1、主界面构造方法

class mainWin(QtWidgets.QMainWindow,ui_mixClips.Ui_ui_mainWin):    def __init__(self):      super().__init__()      self.setupUi(self)      self.initValues() #完成初始化成员变量      self.initSignalAndSlots() #完成信号和槽的连接      self.initPublicFrame()#完成公共框架相关变量初始化 上面代码调用很简单,相关方法都好理解,只有initPublicFrame方法比较特殊,这是因为为了支持工具的开发只关注工具本身的功能,老猿单独开发了几个单独的模块用于所有工具都能使用,这些功能包括显示About窗口信息、截获标准输出、显示或关闭信息输出窗、信息输出窗与应用本身的QMainWindow对象关联(作为一个QDockWidget对象,关于QDockWidget请参考《第三十一章、containers容器类部件QDockWidget停靠窗功能介绍》或参考免费专栏《PyQt入门知识目录》相关章节的介绍)等功能,在此就不详细介绍了。
3.2、界面输入内容校验方法

    def validateAllInput(self,isOutputMessage=False):      #效验所有文件是否都存在      ret = True      fileList = self.videoFileListModel.stringList()      if fileList:            count = len(fileList)            ifcount
页: [1]
查看完整版本: PyQt+moviepy音视频剪辑实战1:多个音视频合成顺序播放或同屏播放的视频文