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

419 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 技术栈:
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
```