# FFmpeg 二进制说明

此目录包含 Kumu 用于读取非 AVFoundation 视频格式元数据和抽帧封面的命令行工具：

- `ffmpeg`

`ffmpeg` 是嵌入到 App 里的独立 Mach-O。项目在构建时会通过 `scripts/prepareFFmpegForDistribution.sh` 为拷贝到 `.app` 内的 `ffmpeg` 重新签名，并生成匹配的 `ffmpeg.dSYM`。

项目脚本 `scripts/buildMinimalFFmpeg.sh` 可编译一个裁剪版 `ffmpeg`，只保留 Kumu 当前需要的能力：

- 读取 `mkv` / `webm` / `flv` / `avi`
- 从输入信息中解析视频时长
- 解码常见视频流、封面流，并导出首帧 PNG
- 通过 `libdav1d` 支持 AV1 软件解码

默认构建 FFmpeg 8.1，产物路径为：

- `Kumu/Resources/FFmpeg/ffmpeg`

使用方式：

```bash
scripts/buildMinimalFFmpeg.sh
```

可通过环境变量覆盖版本、源码路径、构建目录和输出目录：

```bash
FFMPEG_VERSION=8.1 ARCH=arm64 scripts/buildMinimalFFmpeg.sh
```

默认会自动构建并静态链接 `dav1d`，因为 FFmpeg 8.1 的内置 AV1 decoder 依赖硬件解码，无法覆盖所有 Mac。可通过 `ENABLE_DAV1D=0` 关闭。

该脚本不构建 `ffprobe` / `ffplay`，也不启用 GPL 或 nonfree 外部依赖。发布前仍需要确认应用分发方式、许可证文本、源码提供方式和第三方声明是否满足 FFmpeg、dav1d 及其依赖的许可证要求。
