Files
ffmpeg-gui/功能模块.md
T
2026-07-28 19:43:09 +08:00

3.6 KiB
Raw Blame History

技术栈:

C++ + Dear ImGui + FFmpeg Library

底层模块的划分:

UI层
 |
业务层
 |
FFmpeg封装层
 |
硬件/系统层

FFmpeg-GUI 功能设计

1. 媒体信息分析(Media Analyzer

功能说明

解析输入媒体文件信息,为其他模块提供媒体数据。

支持信息

视频:

  • 编码格式
  • 分辨率
  • 帧率
  • 比特率
  • 色彩空间
  • HDR信息
  • 视频流数量

音频:

  • 编码格式
  • 声道
  • 采样率
  • 比特率
  • 音轨数量

字幕:

  • 字幕格式
  • 字幕语言
  • 字幕数量

输出:

提供给:

  • 重新封装
  • 重新编码
  • 字幕烧录

2. 重新封装(Remux

功能说明

仅修改媒体容器,不改变媒体编码。

例如:

MKV → MP4

MOV → MP4

TS → MKV

操作流程

  1. 选择输入文件

  2. 选择输出格式

支持:

  • MP4
  • MKV
  • MOV
  • TS
  1. 选择媒体流处理

视频:

  • Copy
  • 删除

音频:

  • Copy
  • 删除

字幕:

  • Copy
  • 删除
  1. 开始任务

注意

重新封装不需要:

  • GPU选择
  • 编码参数

因为不存在编码过程。


3. 重新编码(Encoder

功能说明

重新压缩视频流。

支持:

视频编码:

  • H264
  • H265
  • AV1

编码方式:

  • NVIDIA NVENC
  • Intel QSV
  • AMD AMF
  • CPU Software Encoder

操作流程

  1. 选择输入文件

  2. 选择输出格式

支持:

  • MP4
  • MKV
  1. 选择编码器

例如:

GPU:
RTX 4090

Encoder:
HEVC NVENC
  1. 设置编码参数

基础:

  • 编码格式
  • 质量模式
  • Preset
  • Profile
  • Level

视频:

  • 分辨率
  • 帧率
  • 比特率

音频:

  • Copy
  • 重新编码
  1. 开始任务

4. 字幕烧录(Subtitle Burn

功能说明

通过 FFmpeg Filter 将字幕渲染到视频。

字幕成为视频画面的一部分。

操作流程

  1. 选择视频文件

  2. 选择字幕文件

支持:

  • ASS
  • SSA
  • SRT
  1. 设置字幕参数
  • 字体
  • 字号
  • 位置
  • 编码
  1. 选择输出格式

  2. 选择编码器

  3. 开始任务


5. 硬件管理(Hardware Manager

功能

GPU检测

支持:

  • NVIDIA
  • Intel
  • AMD

获取:

  • GPU名称
  • 显存
  • 可用编码器

编码器检测

检测:

GPU

↓

支持编码

↓

可用参数

例如:

RTX 4090

支持:

H264 NVENC

HEVC NVENC

AV1 NVENC

硬件优先级

例如:

1. NVIDIA GPU

2. Intel QSV

3. CPU

6. 任务管理(Task Manager

功能说明

管理 FFmpeg 工作任务。

功能

任务创建:

  • 添加任务
  • 设置任务参数

任务控制:

  • 开始
  • 暂停
  • 停止
  • 删除

状态:

  • 等待
  • 执行中
  • 已完成
  • 失败
  • 已取消

显示:

  • 当前文件
  • 操作类型
  • 编码器
  • 当前帧
  • FPS
  • 进度
  • 剩余时间

7. FFmpeg核心封装层(新增)

这个建议加入。

因为你使用 FFmpeg Library,不应该让业务直接调用:

avcodec_xxx()
avformat_xxx()

应该封装:

FFmpeg Core

├── Decoder
├── Encoder
├── Muxer
├── Filter
└── MediaInfo

提供:

Encode()

Remux()

BurnSubtitle()

Analyze()

上层不关心 FFmpeg API。


8. 软件设置

硬件设置

  • GPU检测
  • GPU优先级
  • 默认编码器

输出设置

  • 默认输出目录
  • 文件命名规则

UI设置

  • 主题
  • 深色/浅色

实现范围

核心必须

媒体信息分析

FFmpeg Core封装

重新封装

重新编码

字幕烧录

硬件管理

任务管理

程序内部:

Hardware Manager
        |
        ↓
Encoder List

hevc_nvenc
av1_nvenc
h264_qsv
libx265