# VideoConcat 快速开始指南

## 环境准备

### 系统要求
- Windows 10/11 或更高版本
- .NET 8.0 Runtime（如果未安装，程序会提示下载）

### 检查环境
```powershell
# 检查 .NET 版本
dotnet --version
```

如果未安装 .NET 8.0，请访问 [.NET 下载页面](https://dotnet.microsoft.com/download) 下载安装。

## 获取项目

### 方式一：克隆仓库
```bash
git clone <repository-url>
cd VideoConcat
```

### 方式二：下载源码
下载项目压缩包并解压到本地目录。

## 编译项目

### 使用 Visual Studio
1. 打开 `VideoConcat.sln`
2. 选择 Release 或 Debug 配置
3. 点击"生成" → "生成解决方案" (Ctrl+Shift+B)

### 使用命令行
```powershell
# Debug 编译
dotnet build

# Release 编译
dotnet build -c Release
```

## 运行项目

### 方式一：Visual Studio
1. 按 F5 或点击"启动"按钮
2. 程序会自动编译并运行

### 方式二：命令行
```powershell
# Debug 运行
dotnet run

# 或直接运行可执行文件
.\bin\Debug\net8.0-windows\VideoConcat.exe
```

### 方式三：Release 版本
```powershell
.\bin\Release\net8.0-windows\VideoConcat.exe
```

## 功能使用

### 1. 视频拼接功能

#### 准备工作
准备视频文件，建议的文件夹结构：
```
视频文件夹/
├── 文件夹1/
│   ├── 视频1.mp4
│   ├── 视频2.mp4
│   └── 视频3.mp4
├── 文件夹2/
│   ├── 视频A.mp4
│   └── 视频B.mp4
└── output/  (自动创建，用于存放输出文件)
```

#### 操作步骤
1. **启动程序**
   - 运行 VideoConcat.exe

2. **选择功能**
   - 在主界面选择"视频"标签

3. **选择文件夹**
   - 点击"选择文件夹"按钮
   - 选择包含视频子文件夹的目录（不是选择单个视频文件）

4. **选择拼接模式**
   - **组合拼接模式**: 从每个文件夹随机选择视频进行组合
     - 例如：文件夹1有3个视频，文件夹2有2个视频
     - 可以生成 3×2=6 种组合
   - **顺序拼接模式**: 按索引顺序从每个文件夹选择对应位置的视频
     - 要求所有文件夹的视频数量相同
     - 例如：每个文件夹都有3个视频，会生成3个组合

5. **设置数量**
   - 在"数量"输入框中输入要生成的视频数量
   - 数量不能超过最大可生成数量

6. **（可选）添加审核图片**
   - 点击"选择审核图片"按钮
   - 选择要添加为水印的图片文件
   - 图片会叠加在视频底部

7. **开始拼接**
   - 点击"开始拼接"按钮
   - 程序会显示处理进度
   - 完成后在 `output` 文件夹查看结果

#### 输出结果
- 输出位置: `{选择的文件夹}/output/`
- 文件命名: `yyyyMMddHHmmss{随机数}.mp4`
- 如果添加了审核图片，会生成两个文件：
  - 原始拼接文件
  - 带水印的文件（文件名不同）

### 2. 视频抽帧功能

#### 准备工作
准备要处理的视频文件：
```
视频文件夹/
├── 视频1.mp4
├── 视频2.mp4
└── 视频3.mp4
```

#### 操作步骤
1. **选择功能**
   - 在主界面选择"抽帧"标签

2. **选择文件夹**
   - 点击"选择文件夹"按钮
   - 选择包含视频文件的目录

3. **开始抽帧**
   - 点击"开始抽帧"按钮
   - 程序会随机删除每个视频中的一帧
   - 处理完成后在 `out` 文件夹查看结果

#### 输出结果
- 输出位置: `{选择的文件夹}/out/`
- 文件命名: `{随机数}{原文件名}`

### 3. 视频元数据修改功能

#### 操作步骤
1. **选择功能**
   - 在主界面选择"抽帧"标签

2. **选择文件夹**
   - 点击"选择文件夹"按钮
   - 选择包含视频文件的目录

3. **开始修改**
   - 点击"开始修改"按钮
   - 程序会修改视频的元数据（添加注释）
   - 这会改变文件的 MD5 值，但不改变视频内容

#### 输出结果
- 输出位置: `{选择的文件夹}/out/`
- 文件命名: `modify{随机数}{原文件名}`

## 常见问题

### Q1: 程序无法启动
**A**: 检查是否安装了 .NET 8.0 Runtime。如果未安装，程序会提示下载链接。

### Q2: 视频转换失败
**A**: 
- 检查视频文件是否损坏
- 检查视频格式是否支持（主要支持 MP4）
- 查看日志文件了解详细错误信息

### Q3: 拼接后的视频没有声音
**A**: 
- 检查原始视频是否有音频轨道
- 某些编码格式可能需要重新编码音频

### Q4: 处理速度很慢
**A**: 
- 视频处理是 CPU 密集型操作，大文件需要较长时间
- 可以关闭其他占用 CPU 的程序
- 检查磁盘空间是否充足

### Q5: 临时文件占用空间
**A**: 
- 临时文件存储在系统临时目录
- 程序处理完成后会自动清理
- 如果程序异常退出，可能需要手动清理临时文件

### Q6: 顺序拼接模式提示错误
**A**: 
- 确保所有文件夹中的视频数量相同
- 检查文件夹名称是否正确

### Q7: 如何查看日志
**A**: 
- 日志文件位置: `bin/Debug/net8.0-windows/Log/`
- 日志文件命名: `log{日期}.log`，例如 `log20251019.log`
- 使用文本编辑器打开查看

## 性能优化建议

1. **使用 SSD 硬盘**: 视频处理涉及大量磁盘 I/O，SSD 可以显著提升速度

2. **关闭杀毒软件实时扫描**: 临时文件频繁创建和删除可能触发扫描

3. **确保足够内存**: 建议至少 8GB RAM

4. **关闭其他程序**: 释放 CPU 和内存资源

5. **批量处理**: 一次处理多个文件比逐个处理更高效（程序已实现）

## 注意事项

1. **备份重要文件**: 虽然程序不会修改原始文件，但建议先备份

2. **磁盘空间**: 确保有足够的磁盘空间存储输出文件和临时文件

3. **文件路径**: 避免使用包含特殊字符的文件路径

4. **处理时间**: 视频处理需要时间，请耐心等待，不要强制关闭程序

5. **HEVC 编码**: 抽帧功能会自动将 HEVC 编码转换为 H.264，这需要额外时间

## 技术支持

如遇到问题，可以：
1. 查看日志文件了解详细错误信息
2. 检查视频文件是否正常
3. 确认系统环境是否符合要求

## 下一步

- 阅读 [项目文档.md](./项目文档.md) 了解详细功能
- 阅读 [架构说明.md](./架构说明.md) 了解代码结构
- 查看源代码了解实现细节

