一键制作外网热评视频(网友评论,油管评论),免费开源!
开源项目地址:https://gitee.com/mou18/DukeyYG
DukeyYG 是一款专为短视频创作者设计的自动化合成工具。它能够智能提取视频标题,利用 AI 生成高质量的多语言互动评论,并结合 FFmpeg 实现专业级的视频渲染与合成。
🚀 核心功能
- 智能标题提取:自动从文件名中提取纯净标题,智能过滤序号(如
001_)、标签(#)、技术后缀及标点符号。 - AI 驱动评论:集成智谱 AI (GLM-4),根据视频标题自动生成符合外网风格的多语言(中英/中泰等)互动评论。
- 专业级合成:基于 FFmpeg 实现视频渲染,支持:
- 自动换行标题:标题超长自动换行,完美适配 UI。
- 双语字幕渲染:支持自定义位置、颜色、阴影及描边。
- 画中画布局:支持背景视频与覆盖层的比例调整。
- 批量处理:支持文件夹级批量导入,多线程并发处理(可控并发数)。
- 缓存管理:自动管理隐藏缓存文件夹
_videocache,保持输出目录整洁。
🛠️ 环境要求
- 运行时:.NET 8.0 Desktop Runtime
- FFmpeg:程序会自动寻找
bin/ffmpeg/ffmpeg.exe,或请确保系统 PATH 中已安装 FFmpeg。 - API Key:需准备 智谱 AI 的有效 API Key。
📖 使用指南
- 初始化配置:
- 运行程序,在设置中填入智谱 AI 的 API Key。
- 导入视频:
- 点击“浏览”选择包含待处理视频的文件夹。
- 参数微调(可选):
- 在界面上调整 AI 提示词(Prompt)或评论内容。
- 选择预设的视频模板(位于
tpl/目录下)。
- 开始生成:
- 点击“一键生成视频”,程序将自动完成:提取标题 -> AI 生成评论 -> FFmpeg 合成 -> 输出到指定目录。
📁 项目结构
Services/: 包含VideoService(视频处理) 和ZhipuAIService(AI 接口)。ViewModels/: 基于 MVVM 架构的界面逻辑处理。tpl/: 视频模板资源库,每个模板包含my.json配置、字体及背景图。.docs/: 详细的开发文档及更新日志。
⚠️ 注意事项
- 路径限制:请避免在路径中使用过多的特殊字符,以免 FFmpeg 处理异常。
- 并发建议:根据机器配置,建议并发任务数设置为 1-3 个,以平衡生成速度与系统负载。
DukeyYG/
├── .docs/ # 开发文档与更新日志
│ ├── 开发文档.md
│ └── 更新日志.md
├── Models/ # 数据模型
│ ├── CommentInfo.cs # 评论信息模型
│ └── VideoFileInfo.cs # 视频文件信息模型
├── Services/ # 服务层
│ ├── VideoService.cs # 视频处理核心(FFmpeg 复杂滤镜构建)
│ └── ZhipuAIService.cs # 智谱AI服务(线程安全请求)
├── ViewModels/ # 视图模型
│ └── MainViewModel.cs # 业务逻辑与 UI 绑定
├── tpl/ # 视频模板资源库
│ └── ygpl1/ # 模板实例(含配置、字体、素材)
├── App.xaml # 全局样式与资源
├── MainWindow.xaml # 主窗口界面(Fluent Design 风格)
└── DukeyYG.csproj # 项目文件
```
## 依赖包
| 包名 | 版本 | 用途 |
|------|------|------|
| FFMpegCore | 5.4.0 | FFmpeg 视频处理封装 |
| Newtonsoft.Json | 13.0.3 | 配置与数据序列化 |
| System.Text.Json | 8.0.x | 现代高性能 JSON 处理(处理 JsonElement) |
## 核心逻辑说明
### 1. FFmpeg 复杂滤镜构建 (VideoService)
针对标题长文本换行,采用了将标题写入临时文件,并利用 `textfile` 参数加载的方式:
// 示例:构建 drawtext 滤镜
string drawtextFilter = $"drawtext=fontfile='{fontPath}':textfile='{tempTitleFile}':" +
$"fontcolor={color}:fontsize={size}:x={x}:y={y}:" +
$"line_spacing=5:borderw=1:bordercolor=black";
```
### 2. 线程安全 AI 请求 (ZhipuAIService)
为了防止多线程环境下并发修改 `HttpClient.DefaultRequestHeaders` 导致的崩溃,采用 `HttpRequestMessage` 实例化的方式:
```csharp
using var request = new HttpRequestMessage(HttpMethod.Post, "https://open.bigmodel.cn/api/paas/v4/chat/completions");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _apiKey);
request.Content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
var response = await _httpClient.SendAsync(request);
```
temperature = 0.7
};
更多推荐


所有评论(0)