196 lines
5.0 KiB
Markdown
196 lines
5.0 KiB
Markdown
|
|
# 视频处理整合工具
|
|||
|
|
|
|||
|
|
这是一个整合的视频处理工具,可以自动完成以下流程:
|
|||
|
|
1. 扫描输入目录中的所有视频文件
|
|||
|
|
2. 将每个视频切割成指定时长的片段
|
|||
|
|
3. 从每个视频片段中提取音频
|
|||
|
|
|
|||
|
|
## 功能特点
|
|||
|
|
|
|||
|
|
- **自动化流程**:一键完成视频切割和音频提取
|
|||
|
|
- **智能组织**:按视频名称自动创建子目录
|
|||
|
|
- **批量处理**:支持处理整个目录的视频文件
|
|||
|
|
- **灵活配置**:可自定义片段时长和音频格式
|
|||
|
|
- **详细日志**:提供完整的处理进度和统计信息
|
|||
|
|
- **错误处理**:优雅处理各种异常情况
|
|||
|
|
|
|||
|
|
## 输出目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
video_processed/
|
|||
|
|
├── 视频1名称/
|
|||
|
|
│ ├── video_split/ # 视频片段目录
|
|||
|
|
│ │ ├── 视频1名称_segment_001.mp4
|
|||
|
|
│ │ ├── 视频1名称_segment_002.mp4
|
|||
|
|
│ │ └── 视频1名称_segment_003.mp4
|
|||
|
|
│ └── audio_split/ # 音频文件目录
|
|||
|
|
│ ├── 视频1名称_segment_001.wav
|
|||
|
|
│ ├── 视频1名称_segment_002.wav
|
|||
|
|
│ └── 视频1名称_segment_003.wav
|
|||
|
|
└── 视频2名称/
|
|||
|
|
├── video_split/
|
|||
|
|
│ ├── 视频2名称_segment_001.mp4
|
|||
|
|
│ └── 视频2名称_segment_002.mp4
|
|||
|
|
└── audio_split/
|
|||
|
|
├── 视频2名称_segment_001.wav
|
|||
|
|
└── 视频2名称_segment_002.wav
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 安装依赖
|
|||
|
|
|
|||
|
|
### 1. 安装Python依赖
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 安装ffmpeg
|
|||
|
|
|
|||
|
|
**Ubuntu/Debian:**
|
|||
|
|
```bash
|
|||
|
|
sudo apt update
|
|||
|
|
sudo apt install ffmpeg
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**CentOS/RHEL:**
|
|||
|
|
```bash
|
|||
|
|
sudo yum install ffmpeg
|
|||
|
|
# 或者
|
|||
|
|
sudo dnf install ffmpeg
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 使用方法
|
|||
|
|
|
|||
|
|
### 基本用法
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 使用默认设置
|
|||
|
|
python video_processor.py
|
|||
|
|
|
|||
|
|
# 指定输入和输出目录
|
|||
|
|
python video_processor.py --input_dir /path/to/videos --output_dir /path/to/output
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 高级选项
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 自定义片段时长(60秒)
|
|||
|
|
python video_processor.py --duration 60
|
|||
|
|
|
|||
|
|
# 指定音频格式(flac)
|
|||
|
|
python video_processor.py --audio_format flac
|
|||
|
|
|
|||
|
|
# 显示详细日志
|
|||
|
|
python video_processor.py --verbose
|
|||
|
|
|
|||
|
|
# 仅检查输出目录结构(不进行处理)
|
|||
|
|
python video_processor.py --check_only
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 完整示例
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 完整处理示例
|
|||
|
|
python video_processor.py \
|
|||
|
|
--input_dir /root/autodl-tmp/video \
|
|||
|
|
--output_dir /root/autodl-tmp/video_processed \
|
|||
|
|
--duration 30 \
|
|||
|
|
--audio_format wav \
|
|||
|
|
--verbose
|
|||
|
|
|
|||
|
|
# 使用短参数形式
|
|||
|
|
python video_processor.py -i /path/to/videos -o /path/to/output -d 60 -f flac -v
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 参数说明
|
|||
|
|
|
|||
|
|
| 参数 | 短参数 | 默认值 | 说明 |
|
|||
|
|
|------|--------|--------|------|
|
|||
|
|
| `--input_dir` | `-i` | `/root/autodl-tmp/video` | 输入视频目录 |
|
|||
|
|
| `--output_dir` | `-o` | `/root/autodl-tmp/video_processed` | 输出目录 |
|
|||
|
|
| `--duration` | `-d` | `30` | 每个片段的时长(秒) |
|
|||
|
|
| `--audio_format` | `-f` | `wav` | 音频格式(wav/flac/ogg) |
|
|||
|
|
| `--verbose` | `-v` | `False` | 显示详细日志 |
|
|||
|
|
| `--check_only` | - | `False` | 仅检查输出结构,不处理 |
|
|||
|
|
|
|||
|
|
## 处理流程
|
|||
|
|
|
|||
|
|
1. **依赖检查**:验证ffmpeg和Python依赖是否可用
|
|||
|
|
2. **文件扫描**:递归扫描输入目录中的所有视频文件
|
|||
|
|
3. **视频切割**:将每个视频切割成指定时长的片段
|
|||
|
|
4. **音频提取**:从每个视频片段中提取音频
|
|||
|
|
5. **结果统计**:输出处理统计信息
|
|||
|
|
|
|||
|
|
## 支持的格式
|
|||
|
|
|
|||
|
|
### 视频格式
|
|||
|
|
- MP4 (.mp4)
|
|||
|
|
- AVI (.avi)
|
|||
|
|
- MOV (.mov)
|
|||
|
|
- MKV (.mkv)
|
|||
|
|
- FLV (.flv)
|
|||
|
|
- WMV (.wmv)
|
|||
|
|
- WebM (.webm)
|
|||
|
|
- M4V (.m4v)
|
|||
|
|
|
|||
|
|
### 音频格式
|
|||
|
|
- WAV (.wav) - 无损,文件较大
|
|||
|
|
- FLAC (.flac) - 无损压缩,文件较小
|
|||
|
|
- OGG (.ogg) - 有损压缩,文件最小
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **磁盘空间**:确保有足够的磁盘空间存储处理后的文件
|
|||
|
|
2. **处理时间**:大量视频处理可能需要较长时间
|
|||
|
|
3. **备份建议**:建议在处理前备份原始视频文件
|
|||
|
|
4. **内存使用**:处理大视频文件时可能需要较多内存
|
|||
|
|
|
|||
|
|
## 错误处理
|
|||
|
|
|
|||
|
|
- 如果ffmpeg未安装,程序会提示安装方法
|
|||
|
|
- 处理失败的视频会记录在日志中
|
|||
|
|
- 程序会继续处理其他视频,不会因单个文件失败而停止
|
|||
|
|
- 最终会显示成功和失败的处理数量统计
|
|||
|
|
|
|||
|
|
## 性能优化建议
|
|||
|
|
|
|||
|
|
1. **使用SSD**:将输入和输出目录放在SSD上以提高I/O性能
|
|||
|
|
2. **调整片段时长**:较短的片段处理更快,但文件数量更多
|
|||
|
|
3. **选择合适的音频格式**:
|
|||
|
|
- WAV:音质最好,文件最大
|
|||
|
|
- FLAC:音质好,文件较小
|
|||
|
|
- OGG:音质可接受,文件最小
|
|||
|
|
|
|||
|
|
## 故障排除
|
|||
|
|
|
|||
|
|
### 常见问题
|
|||
|
|
|
|||
|
|
1. **ffmpeg未找到**
|
|||
|
|
```bash
|
|||
|
|
sudo apt install ffmpeg
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Python依赖缺失**
|
|||
|
|
```bash
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **权限问题**
|
|||
|
|
```bash
|
|||
|
|
chmod +x video_processor.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. **内存不足**
|
|||
|
|
- 减少同时处理的视频数量
|
|||
|
|
- 使用较小的片段时长
|
|||
|
|
- 增加系统内存
|
|||
|
|
|
|||
|
|
### 日志分析
|
|||
|
|
|
|||
|
|
程序会输出详细的日志信息,包括:
|
|||
|
|
- 处理进度
|
|||
|
|
- 错误信息
|
|||
|
|
- 统计信息
|
|||
|
|
- 文件路径
|
|||
|
|
|
|||
|
|
使用 `--verbose` 参数可以获得更详细的调试信息。
|