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