Files
ffmpeg-gui/功能模块.md
T

419 lines
3.6 KiB
Markdown
Raw Normal View History

2026-07-28 19:43:09 +08:00
## 技术栈:
C++ + Dear ImGui + FFmpeg Library
## 底层模块的划分:
```text
UI层
|
业务层
|
FFmpeg封装层
|
硬件/系统层
```
---
# FFmpeg-GUI 功能设计
## 1. 媒体信息分析(Media Analyzer
### 功能说明
解析输入媒体文件信息,为其他模块提供媒体数据。
### 支持信息
视频:
* 编码格式
* 分辨率
* 帧率
* 比特率
* 色彩空间
* HDR信息
* 视频流数量
音频:
* 编码格式
* 声道
* 采样率
* 比特率
* 音轨数量
字幕:
* 字幕格式
* 字幕语言
* 字幕数量
输出:
提供给:
* 重新封装
* 重新编码
* 字幕烧录
---
# 2. 重新封装(Remux
## 功能说明
仅修改媒体容器,不改变媒体编码。
例如:
```
MKV → MP4
MOV → MP4
TS → MKV
```
## 操作流程
1. 选择输入文件
2. 选择输出格式
支持:
* MP4
* MKV
* MOV
* TS
3. 选择媒体流处理
视频:
* Copy
* 删除
音频:
* Copy
* 删除
字幕:
* Copy
* 删除
4. 开始任务
## 注意
重新封装不需要:
* GPU选择
* 编码参数
因为不存在编码过程。
---
# 3. 重新编码(Encoder
## 功能说明
重新压缩视频流。
支持:
视频编码:
* H264
* H265
* AV1
编码方式:
* NVIDIA NVENC
* Intel QSV
* AMD AMF
* CPU Software Encoder
## 操作流程
1. 选择输入文件
2. 选择输出格式
支持:
* MP4
* MKV
3. 选择编码器
例如:
```
GPU:
RTX 4090
Encoder:
HEVC NVENC
```
4. 设置编码参数
基础:
* 编码格式
* 质量模式
* Preset
* Profile
* Level
视频:
* 分辨率
* 帧率
* 比特率
音频:
* Copy
* 重新编码
5. 开始任务
---
# 4. 字幕烧录(Subtitle Burn
## 功能说明
通过 FFmpeg Filter 将字幕渲染到视频。
字幕成为视频画面的一部分。
## 操作流程
1. 选择视频文件
2. 选择字幕文件
支持:
* ASS
* SSA
* SRT
3. 设置字幕参数
* 字体
* 字号
* 位置
* 编码
4. 选择输出格式
5. 选择编码器
6. 开始任务
---
# 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,不应该让业务直接调用:
```cpp
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
```