- 项目名称: FFmpeg UI
- 项目类型: Qt6 C++ 桌面应用程序
- 核心功能: 提供图形化界面调用 FFmpeg 进行音视频处理
- 目标用户: 需要进行音视频转换、提取等操作的用户
- 窗口尺寸: 800 x 600 像素 (最小尺寸)
- 窗口标题: FFmpeg UI
- 主布局: 垂直布局,分区展示
+--------------------------------------------------+
| 标题栏 |
+--------------------------------------------------+
| [文件选择区] |
| 输入文件: [_______选择文件_______] [浏览按钮] |
| 输出目录: [_______选择目录_______] [浏览按钮] |
| 输出名称: [____________输入名称____________] |
+--------------------------------------------------+
| [快速功能区] |
| [音视频转换 ▼] [提取音频] [提取视频] [播放测试] |
+--------------------------------------------------+
| [参数输入区] |
| FFmpeg参数: [_______________________________] |
| (此处显示快速功能自动填充的参数,用户可修改) |
+--------------------------------------------------+
| [执行区] |
| [执行] [查看输出] [取消] |
| 进度: [=============> ] 50% |
+--------------------------------------------------+
| [日志区] |
| (实时显示FFmpeg执行输出) |
+--------------------------------------------------+
- 输入文件: LineEdit + PushButton, 点击浏览打开文件对话框
- 输出目录: LineEdit + PushButton, 点击浏览打开目录对话框
- 输出名称: LineEdit, 默认与输入文件同名(不含扩展名)
- 转换下拉框: 常见格式转换
- MP4 转 MP3
- MP4 转 WAV
- MP4 转 AVI
- MP4 转 MKV
- MP3 转 WAV
- WAV 转 MP3
- 提取音频: 从视频中提取音频流
- 提取视频: 从视频中提取视频流(仅视频)
- 截图: 从视频中截取指定时间的图片
- 参数输入: TextEdit, 显示当前FFmpeg命令参数
- 支持手动修改
- 执行按钮: 开始执行FFmpeg
- 查看输出按钮: 打开输出文件所在目录
- 取消按钮: 取消正在执行的FFmpeg进程
- 进度条: 显示执行进度 (通过FFmpeg输出解析)
- 日志文本框: QTextEdit, 只读, 显示FFmpeg的标准输出和错误输出
- 自动滚动到底部
- 主题: 浅色主题
- 字体: 系统默认字体
- 按钮风格: 扁平化
- 间距: 8px 边距, 4px 间距
-
文件选择
- 选择输入文件 (支持常见音视频格式: mp4, avi, mkv, mov, mp3, wav, flac, aac 等)
- 选择输出目录
- 输入自定义输出文件名
-
快速功能
- 格式转换: 自动生成对应FFmpeg参数
- 提取音频:
-vn -acodec copy - 提取视频:
-vcodec copy -an - 截图:
-ss {time} -vframes 1
-
参数编辑
- 自动填充快速功能生成的参数
- 支持手动修改参数
-
执行FFmpeg
- 使用 QProcess 执行 FFmpeg 命令
- 实时捕获输出并显示
- 解析进度信息
- 支持取消执行
- 输入文件不存在: 提示错误
- 输出目录不存在: 提示错误
- FFmpeg未安装: 提示用户安装FFmpeg
- 执行失败: 在日志区显示错误信息
- Qt版本: Qt6
- 构建系统: CMake
- FFmpeg调用: QProcess
- 编码: UTF-8
- 程序可以正常启动
- 可以选择输入文件和输出目录
- 快速功能可以正确生成FFmpeg参数
- 执行按钮可以启动FFmpeg并显示输出
- 进度条可以显示进度
- 取消按钮可以停止FFmpeg执行