根目录--main.py(前端组件)
-
功能简介:
main
用于组合一个图形用户界面 (GUI)的主窗口类(Mainwindow),主要用于视频处理中的滤镜设置。包含按钮、文本输入、列表、复选框等元件,支持添加/移除文件、选择输出文件夹、设置视频编码参数等功能。 -
功能说明
-
初始化应用: 设置窗口尺寸(1280x720)、导航栏宽度、窗口标题。
-
模块导入: 引入了必要的Qt库组件、PySide6模块及自定义模块,包括日志配置、各功能模块接口(如视频编解码、自动剪辑、设置界面等)。
-
日志配置: 通过不同处理器将日志信息分别输出至文件和控制台。
-
窗口类 (mainWindow): 继承
FluentWindow
,负责初始化窗口状态、UI组件、导航项及应用设置,并调用各子界面模块进行集成。 -
界面结构: 通过
init_navigation
方法组织了左侧导航菜单,分成了主要功能区域和底部工具项。 -
应用配置初始化: 在实例化前,会调用
init_ffpath
和init_autopath
来自定义或初始化FFmpeg路径及其他应用配置。 -
应用启动: 程序执行时创建QApplication实例,构建
mainWindow
实例并显示主窗口,最终进入事件循环。
-
-
关键技术栈
-
PySide6 (GUI库)
-
qFluentWidgets (美化组件库)
-
Modules--Ui_xxInterface.py(前端组件)
-
功能简介:
Ui_xxInterface
用于配置一个图形用户界面 (GUI)的窗口类(Widget),主要用于视频处理中的各项设置。包含按钮、文本输入、列表、复选框等元件,支持添加/移除文件、选择输出文件夹、设置视频编码参数等功能。 -
功能说明:
- 标题栏:显示界面标题。
- 显示区:说明滤镜处理信息。
- 按钮:开始处理视频、停止处理、解锁或关闭按钮。
- 文件操作区:添加文件、清除列表 、选择输出文件夹、文件列表展现已选文件。
- 编码设置区:自定义编码配置文本框、预设好的视频编码命令行参数示例、、自定义滤镜输入区等。
- UI结构:使用垂直和水平布局管理器 (
QVBoxLayout
,QHBoxLayout
) 来安排元素,以及一个滚动区域 (ScrollArea
) 包裹主要界面内容以实现窗口大小适应,特别是在小屏幕上显示时。
Modules--xxInterface.py(前后端绑定组件)
-
功能简介:
xxInterface.py
用于将PySide6库与Python,即前后端进行绑定。程序通过用户交互来配置参数,并使用后端API库执行视频编辑任务。 -
功能说明:
-
Worker类 (继承自QObject):定义了一个用于执行后台任务(即视频处理)的工作单元。利用信号和槽机制通知UI线程关于任务状态变化(开始、完成、中断)。它与由后端API构建的实例协同工作,并在接收到中断信号时能够暂停或终止当前视频处理作业。
-
WorkerThread类 (继承自QThread):管理Worker实体的执行环境,使得程序在运行中不会因为线程阻塞而假死。当Worker被中断时,确保线程能安全退出。
-
xxInterface类 (继承自QWidget和Ui_xxInterface):实现用户界面逻辑,包括:
- 初始化界面、连接事件处理函数。
- 定义视频处理参数的设置及其变更处理函数(如编解码器选择、视频剪辑时间调整等)。
- 实现文件操作接口(打开文件、清除列表)。
- 提供开始、暂停/中断视频处理任务的按钮控制,伴有相应的响应逻辑。
- 用户界面控件状态管理以响应任务进程(冻结解冻界面元素)。
-
-
关键功能:
- 允许用户通过图形界面定制视频处理的详细参数,例如视频编码格式、比特率、音频设置,以及视频的裁剪、速度调整等,然后启动或中断后台的视频处理任务。编辑命令基于用户的选择动态构建并通过命令行工具执行。
Modules--logger_config.py(后端组件)
-
功能说明:该模块主要负责日志系统的配置。它使用Python标准库中的
logging
模块来设定日志记录的行为,包括日志级别、输出目标及格式化方式。 -
核心逻辑
-
初始化日志器: 使用
logging.getLogger(__name__)
获取名为__name__
的日志记录器,设置其默认日志级别为DEBUG,意味着将捕获从DEBUG到CRITICAL级别的所有日志信息。 -
目录检查与创建: 检查路径'log'是否存在,如果不存在,则通过
os.mkdir('log')
创建该目录来存放日志文件。 -
文件处理器配置:
- 创建
RotatingFileHandler
实例,该处理器会将日志写入到文件'log/log.txt'中。 - 设置处理的最大文件大小为5MB(
maxBytes=1024 * 1024 * 5
),当达到最大尺寸时,会自动创建新文件(最多保留5个备份文件,backupCount=5
)。 - 文件日志采用的格式是时间-模块名-日志级别-消息内容。
- 创建
-
控制台处理器配置:
- 添加
StreamHandler()
,用于在控制台上输出日志信息。 - 控制台日志级别设置为INFO,格式简化为只显示日志级别和消息内容。
- 添加
-
添加处理器: 将上述定义的文件处理器和控制台处理器都添加到日志器中,使得日志既会被写入文件也会输出到控制台。
-
测试日志输出: 执行一条DEBUG级别的日志输出,仅包含换行符,用于确认配置是否生效。
-
Modules--config.py(后端组件)
-
功能说明:
config.py
负责管理与配置相关的功能,特别是处理FFmpeg工具路径(包括ffmpeg.exe
,ffprobe.exe
)和Auto-Editor应用程序路径。 -
功能说明:
-
导入必要库:
- 导入
os
,configparser
用于文件操作和解析配置文件,以及自定义的日志模块logger
。
- 导入
-
初始化函数:
-
init_ffpath
: 若配置文件中的FFmpeg路径未设,则设置默认路径并写回配置文件。 -
init_autopath
: 同理,处理Auto-Editor路径初始化。
-
-
类定义:
-
ffpath
类: 提供对FFmpeg路径操作的方法,包括初始化时读取路径和手动重置路径。 -
autopath
类: 类似于ffpath
,但针对Auto-Editor路径。
-
-
配置修改函数:
-
set_config
: 允许用户自定义设置FFmpeg的ffmpeg_path
和ffprobe_path
。 -
set_auto_path
: 允许用户设置Auto-Editor的执行文件路径auto_path
。
-
-
Modules--ffmpegApi.py(后端组件)
-
功能说明:
ffmpegApi.py
是一个Python模块,设计用于与FFmpeg命令行工具交互,以便执行一系列视频处理任务,包括但不限于视频截取、合并、转码、提取音频等。 -
功能说明:
-
类
FFmpeg
:提供了一个面向对象的接口来调用 FFmpeg 的各项功能。-
初始化方法
__init__
:设置FFmpeg和FFprobe的路径,定义中断控制机制与回调函数。 -
方法
run
:使用subprocess库执行FFmpeg命令,实时监听命令执行过程中的输出,并支持命令过程中中断并回调处理逻辑。 -
方法
update_interrupt_flag
,check_interrupt_flag
,interrupt_run
:构成中断处理机制,允许外部随时停止正在进行的FFmpeg进程。 -
异常处理:通过try-except结构确保异常情况下的友好反馈,例如错误日志记录与特定异常处理(如文件未找到、权限问题)。
-
线程管理:使用守护线程监控中断标志,提高程序响应性与用户控制能力。
-
-
音视频编码参数: 支持自定义视频编码参数(如码率、分辨率等),提供了基础音频处理选项。
-
视频截取与合并功能:支持根据时间戳截取单个视频或文件夹内多个视频,并实现多个视频片段的合并,可自适应调整分辨率、帧率等。
-
视频时长获取: 使用
ffprobe
提取输入视频文件的时长,支持视频处理中需要时长相关动态参数的应用场景。 -
旋转与过滤: 定义了多种视频旋转并叠加图像的方案,如横屏转竖屏或叠加模糊背景,满足不同视频编辑需求,并且自动调整视频比例和大小。
-