# video_process2_prod **Repository Path**: yethyeth/video_process2_prod ## Basic Information - **Project Name**: video_process2_prod - **Description**: YouTube视频下载与处理 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-14 - **Last Updated**: 2025-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频处理工具 一个功能强大的多模式视频处理平台,基于 Node.js、yt-dlp 和 FFmpeg 构建。支持 YouTube 视频下载、智能视频处理、文件管理和原生桌面应用,提供完整的视频工作流解决方案。 ## 安装步骤 ### 1. 安装 yt-dlp #### Windows ```bash # 使用 pip 安装 pip install yt-dlp # 或者下载可执行文件 # 从 https://github.com/yt-dlp/yt-dlp/releases 下载 yt-dlp.exe # 并将其添加到系统 PATH 中 ``` #### macOS ```bash # 使用 Homebrew brew install yt-dlp # 或使用 pip pip install yt-dlp ``` #### Linux ```bash # 使用 pip pip install yt-dlp # Ubuntu/Debian sudo apt install yt-dlp # Arch Linux sudo pacman -S yt-dlp ``` ### 2. 安装项目依赖 ```bash # 安装 Node.js 依赖 npm install ``` ## 使用方法 ### Web 界面 1. 启动 Web 服务器: ```bash npm run serve ``` 2. 在浏览器中打开 `http://localhost:3001` 3. 输入 YouTube 视频或播放列表 URL 4. 选择下载选项: - 视频质量 - 音频格式 - 是否仅下载音频 - 是否下载播放列表 - 是否下载字幕 5. 点击"开始下载" 6. **查看下载文件**: - 下载完成后可在文件管理页面查看所有下载的文件 - 视频文件会自动显示时长信息(格式:分:秒 或 时:分:秒) - 支持视频文件的进一步处理和格式转换 ### 命令行界面 ```bash # 启动命令行界面 npm start ``` 然后按照提示操作: - 选择下载单个视频或播放列表 - 输入 URL - 选择质量和其他选项 - 开始下载 ## 重要依赖:FFmpeg ### 为什么需要 FFmpeg? FFmpeg 是视频处理的核心工具,用于: - **合并最高质量视频流和音频流**:确保下载的视频具有最佳画质和音质 - **避免文件分离问题**:防止视频和音频被下载为两个独立文件 - **支持更多格式**:提供更好的兼容性和转换选项 ### 快速安装 FFmpeg **Windows 用户(推荐使用 Chocolatey):** ```bash # 以管理员身份运行 PowerShell choco install ffmpeg ``` **详细安装指南:** 请参考 [FFMPEG_INSTALL_GUIDE.md](./FFMPEG_INSTALL_GUIDE.md) ### FFmpeg 状态检测 应用会自动检测 FFmpeg 是否可用: - ✅ **有 FFmpeg**:使用 `bestvideo+bestaudio` 组合,获得真正的最高质量 - ⚠️ **无 FFmpeg**:使用单一格式下载,质量稍低但仍然不错 ## 视频合并工具 如果您已经下载了分离的视频和音频文件,可以使用内置的合并工具: ### 扫描分离文件 ```bash node src/video-merger.js scan ``` ### 自动合并所有分离文件 ```bash node src/video-merger.js merge-all ``` ### 合并指定目录 ```bash node src/video-merger.js merge-dir "downloads/2025-07-23/视频标题" ``` ## 配置选项 ### 视频质量选项 - `best` - 最佳质量 (推荐) - 自动选择最高质量的视频和音频并合并 - `2160p` - 4K (2160p) 分辨率 - 超高清质量 - `1440p` - 2K (1440p) 分辨率 - 高清质量 - `1080p` - 1080p 分辨率 - 全高清质量 - `720p` - 720p 分辨率 - 高清质量 - `480p` - 480p 分辨率 - 标清质量 - `360p` - 360p 分辨率 - 低清质量 - `worst` - 最低质量 - 文件最小但质量最差 **注意**:选择"最佳质量"时,系统会自动下载最高质量的视频流和音频流,然后合并为MP4格式,确保获得YouTube上提供的最佳画质和音质。 ### 音频格式选项 - `mp3` - MP3 格式 - `m4a` - M4A 格式 - `wav` - WAV 格式 - `flac` - FLAC 格式 ### 字幕语言选项 - `en` - 英语 - `zh` - 中文 - `zh-CN` - 简体中文 - `zh-TW` - 繁体中文 - `ja` - 日语 - `ko` - 韩语 - `es` - 西班牙语 - `fr` - 法语 - `de` - 德语 ## 🖥️ 桌面应用 现在支持 Electron 桌面应用,提供更好的用户体验: ### 快速启动 ```bash # 双击运行(Windows) start-desktop.bat # 或使用命令行 npm run electron ``` ### 桌面应用特性 - ✨ **原生桌面体验** - 独立应用,无需浏览器 - 🚀 **自动服务器管理** - 应用启动时自动启动后端服务 - 📋 **原生菜单** - 完整的桌面应用菜单系统 - ⌨️ **快捷键支持** - 支持常用快捷键操作 - 📁 **文件系统集成** - 直接打开下载文件夹 - 🌍 **跨平台支持** - Windows、macOS、Linux ### 构建安装包 ```bash # 构建应用包 npm run pack # 构建完整安装包 npm run dist ``` ## 🌟 核心功能 ### 📥 YouTube 下载模式 - 🎥 **单个视频下载** - 支持高质量视频和音频下载 - 📋 **播放列表下载** - 批量下载整个播放列表 - 🔍 **搜索下载** - 通过关键词搜索并选择性下载视频 - 📝 **批量URL下载** - 同时处理多个视频链接 - 🎵 **纯音频下载** - 支持 MP3、M4A、WAV、FLAC 格式 - 📝 **多语言字幕** - 自动下载中英日韩等多种语言字幕 - ⚡ **并发下载** - 可配置的多线程下载加速 - 📊 **实时进度** - 详细的下载进度和状态监控 ### 🎬 视频处理模式 - 🔄 **格式转换** - 支持主流视频格式互转 - ✂️ **视频剪切** - 精确的时间段剪切功能 - 🔗 **视频合并** - 智能合并多个视频文件 - 📐 **分辨率调整** - 自定义输出分辨率和比特率 - 🎨 **滤镜效果** - 内置多种视频滤镜和特效 - 📊 **批量处理** - 工作流队列支持批量操作 - 🔍 **元数据提取** - 完整的视频信息分析 ### 📁 文件管理模式 - 📂 **智能分类** - 按日期、类型、大小自动分类 - 🔍 **高级搜索** - 支持文件名、元数据搜索 - 📊 **详细信息** - 显示文件大小、时长、分辨率、比特率等 - 🗂️ **多视图模式** - 列表、网格、时间线视图 - 🏷️ **标签管理** - 自定义文件标签和分类 - 📈 **存储统计** - 磁盘使用情况和文件统计 ### 🖥️ 桌面应用 - ✨ **原生体验** - 基于 Electron 的跨平台桌面应用 - 🚀 **自动服务管理** - 智能启动和管理后端服务 - 📋 **系统集成** - 原生菜单、快捷键、文件关联 - 🔔 **通知系统** - 任务完成通知和状态提醒 - 📁 **文件系统集成** - 直接打开文件夹和文件 - 🌍 **离线使用** - 本地处理,无需网络连接 ## 系统要求 - Node.js 16.0 或更高版本 - yt-dlp(需要单独安装) - FFmpeg(通过 @ffmpeg-installer/ffmpeg 自动安装) - FFprobe(通过 @ffprobe-installer/ffprobe 自动安装) ## API 接口 ### 检查 yt-dlp 状态 ``` GET /api/check ``` ### 获取视频信息 ``` POST /api/info Content-Type: application/json { "url": "https://www.youtube.com/watch?v=..." } ``` ### 开始下载 ``` POST /api/download Content-Type: application/json { "url": "https://www.youtube.com/watch?v=...", "options": { "quality": "best", "audioOnly": false, "audioFormat": "mp3", "playlist": false, "subtitles": false, "subtitleLang": "en" } } ``` ### 获取下载文件列表 ``` GET /api/downloads ``` **响应示例:** ```json [ { "name": "视频文件.mp4", "size": 16777216, "created": "2025-01-15T10:30:00.000Z", "isVideo": true, "duration": 356.5 }, { "name": "音频文件.mp3", "size": 5242880, "created": "2025-01-15T10:25:00.000Z", "isVideo": false } ] ``` **字段说明:** - `name`: 文件名 - `size`: 文件大小(字节) - `created`: 创建时间 - `isVideo`: 是否为视频文件 - `duration`: 视频时长(秒,仅视频文件包含此字段) ## 🏗️ 技术架构 ### 核心技术栈 - **后端框架**: Node.js + Express.js - **前端技术**: 原生 JavaScript + HTML5 + CSS3 - **桌面应用**: Electron (跨平台) - **数据库**: SQLite (better-sqlite3) - **视频处理**: FFmpeg + FFprobe - **下载引擎**: yt-dlp - **实时通信**: Socket.IO - **文件处理**: fs-extra + multer ### 项目结构 ``` video_process2/ ├── 📁 src/ # 后端核心代码 │ ├── 🚀 server.js # Express 服务器和 REST API │ ├── 📥 downloader.js # YouTube 下载器 (yt-dlp 封装) │ ├── 🎬 videoProcessor.js # 视频处理引擎 (FFmpeg 封装) │ ├── 📊 videoInfoHelper.js # 视频元数据提取工具 │ ├── 🔗 video-merger.js # 视频合并专用工具 │ └── 💻 index.js # 命令行界面入口 ├── 📁 public/ # 前端资源 │ ├── 🌐 index.html # 主界面 (SPA) │ ├── 🎨 styles.css # 响应式样式表 │ └── ⚡ script.js # 前端逻辑 (10000+ 行) ├── 📁 assets/ # 应用资源 │ ├── 🖼️ icon.ico # 应用图标 │ └── 🖼️ icon.svg # 矢量图标 ├── 📁 data/ # 数据存储 │ └── 💾 saved-links.json # 保存的链接记录 ├── 📁 downloads/ # 下载文件目录 ├── 📁 outputs/ # 处理输出目录 ├── 🖥️ main.js # Electron 主进程 ├── 🔧 preload.js # Electron 预加载脚本 ├── 🚀 start-server.js # 智能服务器启动器 ├── 📦 package.json # 项目配置和依赖 └── 📚 README.md # 项目文档 ``` ### 系统架构图 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Electron App │ │ Web Browser │ │ Command Line │ │ (Desktop UI) │ │ (Web UI) │ │ Interface │ └─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘ │ │ │ └──────────────────────┼──────────────────────┘ │ ┌─────────────┴─────────────┐ │ Express Server │ │ (REST API + Socket.IO) │ └─────────────┬─────────────┘ │ ┌─────────────────────────┼─────────────────────────┐ │ │ │ ┌───────▼────────┐ ┌──────────▼──────────┐ ┌────────▼────────┐ │ YouTubeDownloader │ │ VideoProcessor │ │ FileManager │ │ (yt-dlp wrapper) │ │ (FFmpeg wrapper) │ │ (SQLite DB) │ └────────────────────┘ └─────────────────────┘ └─────────────────┘ ``` ## 📦 核心依赖 ### 🚀 生产依赖 - **Web 服务器** - `express` - 高性能 Web 服务器框架 - `cors` - 跨域资源共享中间件 - `socket.io` - 实时双向通信 - `multer` - 多媒体文件上传处理 - **视频处理** - `@ffmpeg-installer/ffmpeg` - FFmpeg 二进制文件自动安装 - `@ffprobe-installer/ffprobe` - FFprobe 二进制文件自动安装 - `fluent-ffmpeg` - FFmpeg Node.js 高级封装 - **数据存储** - `better-sqlite3` - 高性能 SQLite 数据库 - `fs-extra` - 增强的文件系统操作 - **工具库** - `uuid` - 唯一标识符生成 - `node-fetch` - HTTP 请求客户端 - `iconv-lite` - 字符编码转换 - `jschardet` - 字符编码检测 ### 🛠️ 开发依赖 - **桌面应用** - `electron` - 跨平台桌面应用框架 - `electron-builder` - 应用打包和分发工具 - **开发工具** - `nodemon` - 开发时自动重启服务器 - `jest` - JavaScript 测试框架 - `webpack` - 模块打包工具 - `webpack-cli` - Webpack 命令行工具 - **样式处理** - `css-loader` - CSS 文件加载器 - `style-loader` - 样式注入加载器 - `html-webpack-plugin` - HTML 模板插件 ## 🔧 开发脚本 ### 服务器相关 ```bash # 启动开发服务器(自动重启) npm run dev # 启动生产服务器 npm run serve # 智能启动服务器(自动处理端口冲突) npm run server # 运行命令行界面 npm start ``` ### 桌面应用相关 ```bash # 启动桌面应用(开发模式) npm run electron-dev # 启动桌面应用(生产模式) npm run electron # 打包应用(不安装) npm run pack # 构建完整安装包 npm run dist ``` ### 构建和测试 ```bash # 构建前端资源 npm run build # 运行测试套件 npm test # 安装应用依赖 npm run postinstall ``` ## 注意事项 1. **版权声明**:请确保您有权下载相关内容,并遵守 YouTube 的服务条款。 2. **网络要求**:下载速度取决于您的网络连接和 YouTube 服务器的响应速度。 3. **存储空间**:确保有足够的磁盘空间存储下载的文件。 4. **yt-dlp 更新**:定期更新 yt-dlp 以确保兼容性: ```bash pip install --upgrade yt-dlp ``` ## 故障排除 ### yt-dlp 未找到 - 确保 yt-dlp 已正确安装并添加到系统 PATH - 尝试重新安装 yt-dlp ### 下载失败 - 检查网络连接 - 确认 URL 是否有效 - 尝试更新 yt-dlp - 检查视频是否有地区限制 ### 服务器启动失败 - 确保端口 3001 未被占用 - 检查 Node.js 版本是否符合要求 ### 视频时长显示异常 - 确保 FFprobe 正确安装(通过 npm install 自动安装) - 检查视频文件是否损坏或格式不支持 - 查看服务器日志中的 FFprobe 错误信息 ### 视频处理功能异常 - 确保 FFmpeg 正确安装(通过 npm install 自动安装) - 检查系统是否有足够的磁盘空间进行视频处理 - 确认视频文件格式受支持 ## 🚀 快速开始 ### 1. 环境准备 ```bash # 确保已安装 Node.js 16+ node --version # 安装 yt-dlp pip install yt-dlp # 克隆项目 git clone cd video_process2 ``` ### 2. 安装依赖 ```bash # 安装所有依赖 npm install # 验证 FFmpeg 安装 ffmpeg -version ``` ### 3. 启动应用 **Web 版本**: ```bash npm run server # 访问 http://localhost:3001 ``` **桌面版本**: ```bash npm run electron # 或双击 start-desktop.bat (Windows) ``` **命令行版本**: ```bash npm start ``` ## ❓ 常见问题 ### Q: 下载失败怎么办? A: 1. 检查网络连接和 YouTube 访问 2. 更新 yt-dlp: `pip install --upgrade yt-dlp` 3. 确认视频 URL 有效且无地区限制 4. 检查磁盘空间是否充足 ### Q: 视频处理失败? A: 1. 确认 FFmpeg 正确安装 2. 检查输入文件是否损坏 3. 确保有足够的临时存储空间 4. 查看处理日志中的详细错误信息 ### Q: 桌面应用无法启动? A: 1. 确认 Node.js 版本 >= 16 2. 重新安装依赖: `npm install` 3. 检查端口 3001 是否被占用 4. 查看控制台错误信息 ### Q: 如何提高下载速度? A: 1. 启用并发下载(批量模式) 2. 选择合适的视频质量 3. 确保网络连接稳定 4. 关闭不必要的网络应用 ### Q: 支持哪些视频格式? A: - **下载**: MP4, WEBM, MKV 等 YouTube 支持的格式 - **处理**: MP4, AVI, MOV, MKV, WEBM, FLV 等主流格式 - **音频**: MP3, M4A, WAV, FLAC, AAC 等 ## 📞 技术支持 - 📧 **问题反馈**: 通过 GitHub Issues 提交 - 📚 **文档**: 查看项目 Wiki 和代码注释 - 🔧 **开发**: 欢迎提交 Pull Request - 💬 **讨论**: GitHub Discussions 参与讨论 ## 📄 许可证 MIT License - 详见 [LICENSE](LICENSE) 文件 ## 🤝 贡献指南 我们欢迎所有形式的贡献! ### 如何贡献 1. Fork 本仓库 2. 创建特性分支: `git checkout -b feature/amazing-feature` 3. 提交更改: `git commit -m 'Add amazing feature'` 4. 推送分支: `git push origin feature/amazing-feature` 5. 提交 Pull Request ### 贡献类型 - 🐛 Bug 修复 - ✨ 新功能开发 - 📚 文档改进 - 🎨 UI/UX 优化 - 🔧 性能优化 - 🌐 国际化支持 --- ## 💝 支持项目 如果这个项目对您有帮助,欢迎通过以下方式支持项目发展: ### ⭐ GitHub Star 给项目点个 Star,这是对我们最大的鼓励! ### ☕ 请开发者喝杯咖啡
| 支付宝 | 微信支付 | |:---:|:---:| | ![支付宝](https://github.com/yethyeth/drama_public/raw/main/doc/assets/alipay.jpg) | ![微信支付](https://github.com/yethyeth/drama_public/raw/main/doc/assets/wechatpay.jpg) |
### 🤝 其他支持方式 - 🐛 提交 Bug 报告 - 💡 提出功能建议 - 📝 改进项目文档 - 🔧 贡献代码 ---
**⭐ 如果这个项目对你有帮助,请给个 Star!⭐** *Built with ❤️ by the community*
## 📈 更新日志 ### v2.0.0 (当前版本) - 全功能视频处理平台 - 🎬 **全新视频处理模式** - 完整的视频工作流系统 - 支持格式转换、剪切、合并、滤镜等操作 - 批量处理和队列管理 - 实时处理进度监控 - 📁 **智能文件管理系统** - SQLite 数据库支持,快速文件索引 - 完整的视频元数据显示(时长、分辨率、比特率等) - 多种视图模式和高级搜索功能 - 智能文件分类和标签管理 - 🖥️ **原生桌面应用** - 基于 Electron 的跨平台桌面应用 - 自动服务器管理和智能端口处理 - 原生菜单系统和快捷键支持 - 系统通知和文件系统集成 - 🔍 **增强搜索下载** - YouTube 关键词搜索功能 - 批量选择和下载管理 - 搜索结果分页和排序 - 智能视频信息提取 - 🚀 **性能和稳定性提升** - 全局状态管理系统 - 模块化架构设计 - 改进的错误处理和日志系统 - 内存优化和资源管理 ### v1.1.0 - ⏱️ **视频时长显示功能** - 自动检测视频文件并显示时长 - 支持多种时间格式显示 - FFprobe 集成获取准确元数据 - 🎬 **文件管理增强** - 智能视频文件识别 - 改进的文件列表界面 - 优化文件信息展示 - 🔧 **技术栈升级** - FFmpeg/FFprobe 自动安装 - fluent-ffmpeg 集成 - 错误处理机制改进 ### v1.0.0 - 🎯 **核心功能实现** - YouTube 视频和播放列表下载 - Web 界面和命令行界面 - 实时下载进度显示 - 基础文件管理功能