# 火炬格式转换器 2.0.0
**基于 FFmpeg 和 Tauri 2.0 的跨平台媒体格式转换工具**
[](https://v2.tauri.app/)
[](https://www.rust-lang.org/)
[](LICENSE)
## ✨ 特性
- 🎬 **多格式支持** - 支持视频、音频、图片等多种格式转换
- ⚙️ **丰富参数** - 自定义编码器、分辨率、帧率、比特率等
- 🚀 **高性能** - 基于 Rust + Tauri 2.0,原生性能
- 🎨 **现代化 UI** - 使用 Tailwind CSS + Lucide 图标
- 📊 **实时进度** - 转换进度实时显示
- 🖥️ **跨平台** - 支持 Windows、macOS、Linux
- 🔄 **批量转换** - 支持多文件批量处理
- 💾 **智能输出** - 自动检测或自定义输出路径
## 🚀 快速开始
### 系统要求
#### 必需依赖
1. **FFmpeg** - 核心转换引擎
- Windows: 从 [ffmpeg.org](https://ffmpeg.org/download.html) 下载并添加到 PATH
- macOS: `brew install ffmpeg`
- Linux: `sudo apt install ffmpeg`
2. **Rust** - 编译 Tauri 后端
- 安装:`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`
- 或访问 [rustup.rs](https://rustup.rs/)
3. **Node.js** - 前端构建工具
- 推荐版本:v18 或更高
- 下载:[nodejs.org](https://nodejs.org/)
#### Tauri 系统依赖
请参考 [Tauri 2.0 官方文档](https://v2.tauri.app/start/prerequisites/) 安装对应平台的系统依赖。
### 安装步骤
1. **克隆项目**
```bash
git clone
cd format-converter
```
2. **安装依赖**
```bash
npm install
```
> 这会自动下载并安装所有 Node.js 依赖到 `node_modules` 文件夹
3. **开发模式运行**
```bash
npm run dev
```
4. **构建发布版本**
```bash
npm run build
```
> 构建完成后,安装包位于 `src-tauri/target/release/bundle/` 目录
## 📖 使用说明
### 基本流程
1. **添加文件**
- 点击拖放区域选择文件
- 或直接拖放文件到窗口
2. **配置转换参数**
- 选择目标格式(MP4、MP3、JPG 等)
- 设置编码参数(可选)
- 选择输出位置
3. **开始转换**
- 点击"开始转换"按钮
- 查看实时进度
4. **完成**
- 转换完成后自动打开输出文件夹(可选)
### 支持的格式
#### 视频格式
- **输入**: MP4, AVI, MKV, MOV, WebM, FLV, WMV, MPEG 等
- **输出**: MP4, MKV, MOV, AVI, WebM, FLV, WMV
#### 音频格式
- **输入**: MP3, WAV, AAC, FLAC, OGG, WMA, M4A 等
- **输出**: MP3, AAC, FLAC, WAV, OGG, Opus, WMA
#### 图片格式
- **输入**: JPG, PNG, WebP, GIF, BMP, TIFF, ICO 等
- **输出**: JPG, PNG, WebP, GIF, BMP, TIFF, ICO
## 🏗️ 项目结构
```
format-converter/
├── src/ # 前端源代码
│ ├── index.html # 主页面(使用 Tailwind CSS)
│ ├── style.css # 自定义样式(动画和特效)
│ ├── main.js # 前端逻辑(ES6 模块)
│ └── thumbnail-helper.js # 缩略图辅助工具
├── src-tauri/ # Tauri 后端
│ ├── src/
│ │ ├── main.rs # Rust 后端主程序
│ │ └── ffmpeg_installer.rs # FFmpeg 自动安装器
│ ├── icons/ # 应用图标
│ ├── Cargo.toml # Rust 依赖配置
│ └── tauri.conf.json # Tauri 配置
├── node_modules/ # Node.js 依赖(自动生成,不要提交到 Git)
├── package.json # Node.js 项目配置
├── package-lock.json # 依赖版本锁定文件
├── README.md # 项目说明文档
└── TESTING_FFMPEG.md # FFmpeg 测试指南
```
### 关键文件说明
- **`node_modules/`** - Node.js 依赖包文件夹,由 `npm install` 自动生成,包含所有前端依赖(Tailwind CSS、Lucide 等)。不要手动修改,也不要提交到 Git。
- **`package.json`** - 定义项目依赖和脚本命令
- **`package-lock.json`** - 锁定依赖版本,确保团队成员使用相同版本
- **`src/index.html`** - 主页面,使用 Tailwind CSS CDN 和 Lucide 图标
- **`src/style.css`** - 精简的自定义样式,只包含动画和特殊效果(199 行)
- **`src/main.js`** - 前端业务逻辑,使用 ES6 模块
- **`src-tauri/src/main.rs`** - Rust 后端,处理文件分析、格式转换等
## 🛠️ 技术栈
### 前端
- **HTML5** - 页面结构
- **Tailwind CSS** - 现代化 CSS 框架(utility-first)
- **Lucide Icons** - 轻量级图标库
- **Vanilla JavaScript** - ES6+ 模块化
### 后端
- **Rust** - 系统编程语言
- **Tauri 2.0** - 桌面应用框架
- **FFmpeg** - 多媒体处理引擎
### 开发工具
- **npm** - 包管理器
- **Cargo** - Rust 包管理器
## 🔧 开发指南
### 开发模式
```bash
npm run dev
```
这会启动 Tauri 开发服务器,支持热重载。
### 调试
- **后端日志**: 在终端中查看 Rust 输出
- **前端调试**: 按 F12 打开 DevTools
- **Tauri API**: 使用 `console.log` 调试前端逻辑
### 构建
```bash
npm run build
```
构建产物位于 `src-tauri/target/release/bundle/`:
- **Windows**: `.msi` 或 `.exe`
- **macOS**: `.dmg` 或 `.app`
- **Linux**: `.deb`, `.AppImage` 等
## 📝 脚本命令
```bash
# 开发模式(热重载)
npm run dev
# 构建发布版本
npm run build
# 运行 Tauri CLI
npm run tauri
```
## 🐛 常见问题
### Q: FFmpeg 未安装怎么办?
A: 应用会自动检测 FFmpeg,如果未安装会显示安装引导。您也可以手动安装:
- macOS: `brew install ffmpeg`
- Windows: 下载并添加到 PATH
- Linux: `sudo apt install ffmpeg`
### Q: 图标不显示?
A: 确保网络连接正常,Lucide CDN 需要联网加载。或检查浏览器控制台是否有错误。
### Q: 转换失败?
A: 检查:
1. FFmpeg 是否正确安装
2. 输入文件是否损坏
3. 输出路径是否有写入权限
4. 查看终端日志获取详细错误信息
### Q: node_modules 文件夹很大?
A: 这是正常的,`node_modules` 包含所有前端依赖。不要提交到 Git(已在 `.gitignore` 中)。
## 📄 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 🙏 致谢
- [FFmpeg](https://ffmpeg.org/) - 强大的多媒体处理框架
- [Tauri](https://tauri.app/) - 现代化桌面应用框架
- [Tailwind CSS](https://tailwindcss.com/) - 实用优先的 CSS 框架
- [Lucide](https://lucide.dev/) - 精美的开源图标库
## 📮 联系方式
- 官网: [meshel.cn](https://www.meshel.cn)
- 问题反馈: [GitHub Issues](https://github.com/your-repo/issues)
---
**火炬格式转换器** - 让格式转换更简单
Made with ❤️ by Meshel