# createVideo **Repository Path**: rzcgis/create-video ## Basic Information - **Project Name**: createVideo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-08 - **Last Updated**: 2025-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频自动生成器(ffmpeg,Not AI) 这是一个视频自动化工具,旨在通过结合以下元素来创建教育或语言学习视频: - 音频文件(MP3格式) - 字幕(从DAT文本文件创建) - 图像(根据文本中的关键词下载) ## 主要功能 - 将DAT文本文件转换为ASS字幕格式,具有高级处理功能 - 根据提取的关键词从Pexels下载相关图像 - 使用FFmpeg将音频、图像和字幕组合成最终视频 - 支持批量处理多个视频 - 复杂的字幕处理,包括带特殊样式的逐词显示 - 添加视觉效果,如波形可视化和图像间的过渡效果 ## 工作流程 - 将DAT文本文件转换为ASS字幕格式 - 提取关键词并下载相关图像 - 处理图像并准备视频片段 - 使用FFmpeg组合音频、图像和多个字幕轨道 - 添加波形和过渡效果等视觉增强功能 > 该项目特别适用于创建语言学习内容,在其中显示带有原文和翻译的短语或句子,以及相关图像。 ## 项目结构 ``` . ├── input # 输入目录 │ ├── dat/ # .dat文件输入目录 │ ├── images/ # 图片输入目录 │ └── mp3/ # .mp3音频输入目录 ├── output # 输出目录 │ ├── srt/ # .ass字幕输出目录 │ └── videos/ # 视频输出目录 ├── src # 源代码目录 │ ├── utils/ # 工具函数目录 │ ├── clean_image_store.js │ ├── convert_all.js │ ├── convert_dat_to_ass.js # 将.dat文件转换为.ass字幕文件 │ ├── create_video.js │ ├── create_video_with_ffmpeg.js │ ├── download_images.js │ ├── run_video.js │ └── run_video_batch.js ├── test-scripts # 测试脚本目录 └── config.json # 配置文件 ``` ## 安装依赖 ### Node.js 包依赖 - adm-zip (^0.5.9) - 用于处理 ZIP 文件操作 - axios (^1.11.0) - 用于发起 HTTP 请求,主要用于下载图像 - canvas (^2.11.2) - 用于图像处理和操作 - iconv-lite (^0.6.3) - 用于字符编码转换,特别是处理不同文本文件编码 - pexels (^1.2.0) - Pexels 官方 API 客户端,用于下载图像 - pg (^8.16.3) - PostgreSQL 客户端,可能用于单词数据库操作 ### 开发依赖 - eslint (^8.0.0) - 用于代码检查 - eslint-plugin-unused-imports (^3.0.0) - 用于检测未使用的导入 - jscpd (^3.5.0) - 用于检测代码重复 - prettier (^3.6.2) - 用于代码格式化 ### 外部工具依赖 FFmpeg (版本 4.4.1-full) - 核心视频处理工具,用于将音频、图像和字幕组合成最终视频 Postgresql数据库, 配置`dbconfig.js`使用 安装依赖: ```bash npm install ``` ## 快速开始 ``` # 一键完成所有步骤并生成视频文件 npm run run-video # 批量处理指定目录下的所有MP3文件 npm run run-video-bat "目录名称" # 或者分别执行各步骤 npm run convert # 转换文本为字幕 npm run download-images # 下载相关图片 npm run create-video # 创建视频文件 ``` ## 使用方法 ### 方法一:使用 npm 脚本(推荐) ``` # 一键完成所有步骤并生成单个视频文件 npm run run-video # 批量处理指定目录下的所有MP3文件 npm run run-video-bat "商务英语300句" # 转换所有 .dat 文件为 .srt 字幕文件 npm run convert # 下载与字幕相关的图片 npm run download-images # 创建视频文件 npm run create-video <音频编号> <字幕编号> [选项] ``` ### 方法二:直接运行 index.js ``` # 显示帮助信息 node index.js help # 一键完成所有步骤并生成视频文件 node index.js run-video # 批量处理指定目录下的所有MP3文件 node index.js run-video-bat "商务英语300句" # 转换所有 .dat 文件为 .srt 字幕文件 node index.js convert # 下载与字幕相关的图片 node index.js download-images # 创建视频文件 node index.js create-video <音频编号> <字幕编号> [选项] ``` ### 批量处理功能说明 批量处理功能可以自动处理指定主题目录下的所有MP3文件: ```bash npm run run-video-bat "目录名称" ``` 或者: ```bash node index.js run-video-bat "目录名称" ``` 处理流程: 1. 遍历 `input/mp3/目录名称` 下的所有MP3文件 2. 查找 `input/dat/目录名称` 下对应的DAT文件 3. 为每对MP3/DAT文件生成字幕、下载图片并创建视频 4. 输出视频到 `output/videos/目录名称` 目录下 示例: ```bash # 处理商务英语300句目录下的所有文件 npm run run-video-bat "商务英语300句" # 处理新概念英语第二册美音版目录下的所有文件 npm run run-video-bat "新概念第二册美音版" ``` ### 创建视频文件的选项 ``` node index.js create-video <音频编号> <字幕编号> [选项] ``` 选项: - `-i, --images <图片1,图片2,...>` 指定要使用的图片文件 - `-a, --auto-images` 自动使用imgs目录下的所有图片 - `-o, --output <文件名>` 指定输出视频文件名(默认为videos/video\_<音频编号>.mp4) 示例: ``` node index.js create-video 1 1 -a node index.js create-video 2 2 -i img1.jpg,img2.jpg -o my_video.mp4 ``` ### 动态波形显示功能 项目支持在视频底部添加动态音频波形显示,该功能默认关闭,可以通过修改 [config.json](config.json) 文件中的 `waveform` 配置来启用: ```json { "waveform": { "enabled": true, "height": 100, "color": "00ff00", "position": "bottom" } } ``` 配置项说明: - `enabled`: 是否启用波形显示功能 - `height`: 波形显示区域的高度(像素) - `color`: 波形颜色(十六进制颜色代码,不带#) - `position`: 波形显示位置(目前仅支持"bottom") 当启用该功能后,生成的视频将在底部显示动态波形,反映音频的变化。 ### 字幕`alignment`含义 ```plaintext 1: 底部左对齐 2: 底部居中对齐 3: 底部右对齐 4: 中部左对齐 5: 中部居中对齐 6: 中部右对齐 7: 顶部左对齐 8: 顶部居中对齐 9: 顶部右对齐 ```