# Requirement Specification / 需求规格说明

# ffmpeg-video-speed

## Background / 背景

用户需要调整视频的播放速度，常见场景包括：制作延时视频、慢动作效果、快速预览长视频等。FFmpeg 提供了 setpts 和 atempo 滤镜来实现视频和音频的速度调整。

## Goals / 目标

- [x] 实现视频播放速度调整功能 (0.25x - 4.0x)
- [x] 支持保留音频并自动调整音频 tempo
- [x] 支持移除音频模式（默认）
- [x] 处理 atempo 滤镜的范围限制 (0.5-2.0)

## Scope / 范围

### In Scope / 范围内

- 视频速度调整 (加速/减速)
- 音频 tempo 同步调整
- 可选保留或移除音频
- 自动生成输出文件名

### Out of Scope / 范围外

- 变速播放 (不同片段不同速度)
- 音频独立调速
- 帧插值 (平滑慢动作)

## Constraints / 约束条件

- 依赖外部 FFmpeg 工具
- 速度范围限制: 0.25x - 4.0x
- atempo 滤镜限制: 单个 atempo 只支持 0.5-2.0，需要链式调用

## Acceptance Criteria / 验收标准

- [x] `l ffmpeg speed video.mp4 -s 2.0` 2 倍速（移除音频）
- [x] `l ffmpeg speed video.mp4 -s 0.5 -a` 半速并保留音频
- [x] 速度超出 0.25-4.0 范围报错
- [x] 输出文件名包含速度信息

## Implementation / 实现

- **文件**: `src/commands/ffmpeg/speed.rs`
- **命令**: `l ffmpeg speed <INPUT> -s <SPEED> [-o OUTPUT] [-a]`
- **状态**: ✅ 已完成

## Technical Details / 技术细节

### 视频速度调整

```
setpts = (1/speed) * PTS
2x 速度 → setpts=0.5*PTS
0.5x 速度 → setpts=2.0*PTS
```

### 音频 tempo 调整

atempo 滤镜范围限制为 0.5-2.0，超出范围需要链式调用：

- 4x 速度: `atempo=2.0,atempo=2.0`
- 0.25x 速度: `atempo=0.5,atempo=0.5`

## Open Questions / 待澄清问题

- (无)
