菜单
本页目录

架构图.jpg

根目录--main.py(前端组件)

  • 功能简介main 用于组合一个图形用户界面 (GUI)的主窗口类(Mainwindow),主要用于视频处理中的滤镜设置。包含按钮、文本输入、列表、复选框等元件,支持添加/移除文件、选择输出文件夹、设置视频编码参数等功能。

  • 功能说明

    • 初始化应用: 设置窗口尺寸(1280x720)、导航栏宽度、窗口标题。

    • 模块导入: 引入了必要的Qt库组件、PySide6模块及自定义模块,包括日志配置、各功能模块接口(如视频编解码、自动剪辑、设置界面等)。

    • 日志配置: 通过不同处理器将日志信息分别输出至文件和控制台。

    • 窗口类 (mainWindow): 继承FluentWindow,负责初始化窗口状态、UI组件、导航项及应用设置,并调用各子界面模块进行集成。

    • 界面结构: 通过init_navigation方法组织了左侧导航菜单,分成了主要功能区域和底部工具项。

    • 应用配置初始化: 在实例化前,会调用init_ffpathinit_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_pathffprobe_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提取输入视频文件的时长,支持视频处理中需要时长相关动态参数的应用场景。

    • 旋转与过滤: 定义了多种视频旋转并叠加图像的方案,如横屏转竖屏或叠加模糊背景,满足不同视频编辑需求,并且自动调整视频比例和大小。