# 格式转 **Repository Path**: deepin20/davinci-converter ## Basic Information - **Project Name**: 格式转 - **Description**: 格式转 · 一站式格式处理工具(Rust 版):基于 Rust + iced 0.14,编译为单个原生二进制,启动快、占用低、零运行时依赖(仅需系统装有 FFmpeg)。(二次开发,为统信UOSt和deepin25编译打包) - **Primary Language**: Rust - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-02 - **Last Updated**: 2026-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 格式转 · 一站式格式处理工具(Rust 版) 基于 Rust + iced 0.14,编译为单个原生二进制,启动快、占用低、零运行时依赖(仅需系统装有 FFmpeg)。 [生态共建] 用小u写了一个格式转换,在treeland下编译的(开发者:qq4945286):https://bbs.deepin.org/post/301351 ## 功能 ### 视频 - **转 MOV(达芬奇专用)**:视频流无损复制 + 音频转 PCM - **转 GIF**:调色板两步法(palettegen → paletteuse,lanczos 缩放) - **兼容格式 MP4**:H.264 + AAC 通用格式,跨平台兼容 - **压缩到目标大小(MP4)**:按 MB 目标两遍编码 - **GIF 压缩到指定大小**:迭代降质策略 - **提取音频**:WAV(无损)/ MP3 / AAC - **转序列帧**:按帧率输出 PNG 序列 ### 图片 - **无损压缩**:PNG/WebP 真无损再压缩,JPEG 最高质量重编码 - **压缩到指定大小**:WebP 迭代降质 ### 体验 - 批量转换、单文件进度与状态 - 主题自动适配系统深色/浅色,伪毛玻璃半透明效果 - 输出目录可选,文件名自动去重,转换后自动打开文件夹 ## 依赖 - Rust 1.88+(edition 2024) - FFmpeg(系统命令行 `ffmpeg`) - Linux 编译依赖(iced):`build-essential libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libfontconfig1-dev libfreetype6-dev` ## 构建 ```bash # 开发运行 cargo run # 发布编译(优化 + strip) cargo build --release # 产物:target/release/davinci-converter ``` ## 架构与可扩展性 ``` src/ ├── main.rs # iced application 入口(主题自适应 + 透明窗口) ├── theme.rs # 系统深色主题检测 + 配色 ├── app.rs # Converter 状态机 + update/view ├── config.rs # 全局配置常量 ├── message.rs # Message / WorkerEvent 消息类型 ├── converter/ │ ├── mod.rs # ConvertMode trait + Job + default_modes() │ ├── mov.rs # MOV 转换(达芬奇专用) │ ├── gif.rs # GIF 两步法转换 │ ├── compress.rs # 视频压缩到目标大小 │ ├── gif_compress.rs # GIF 压缩到目标大小 │ ├── audio.rs # 提取音频(WAV/MP3/AAC) │ ├── frames.rs # 视频转序列帧 │ ├── compat.rs # 兼容格式 MP4 │ ├── image.rs # 图片无损压缩 / 图片压到指定大小 │ └── worker.rs # 后台转换事件流 └── ui/ ├── mod.rs # view() 装配器 ├── file_list.rs # 文件列表视图 ├── control_panel.rs # 控制面板视图(模式/参数/进度) └── style.rs # 样式函数(主题自适应) ``` **新增转换模式**:实现 `ConvertMode` trait(`id` / `label` / `convert`),在 `default_modes()` 注册即可。