| name | tao-video-toolkit |
| description | 本地视频处理工具箱(ffmpeg):无劣化切片/裁剪、格式转码、无损旋转、抽帧、提取音频、片段合并、压缩。专为大体积素材(无人机 DJI、屏幕录制、长视频)设计,默认走流拷贝避免重编码。当用户提到"剪一段视频""切视频""提取片段""视频转码""视频旋转""无损旋转""视频抽帧/截图""提取音频""合并视频""压缩视频""DJI 视频处理""ffmpeg"时使用。
|
| allowed-tools | Bash, Read |
| metadata | {"short-description":"本地视频处理工具箱(ffmpeg 无劣化切片/转码/旋转/抽帧/合并)"} |
本地视频处理工具箱(ffmpeg)
把日常视频处理的高频操作与踩过的坑固化为一个 skill。核心是能不重编码就绝不重编码:流拷贝(-c copy)秒级完成且零质量损失。
铁律
- 先判断是否需要重编码。只是切片/合并/旋转/改容器 → 流拷贝。只有真要改分辨率/码率/编码格式时才重编码。动手前先回答:"这一步必须重编码吗?"
- 大文件(>1G)默认
-c copy,避免几十分钟的重编码和质量损失。
- 始终先
ffprobe 探流:拿到时长、编码、流构成(视频/音频/data/timecode),再决定命令。DJI、GoPro、部分录屏会带额外 data/timecode 流,盲目 -map 0 会失败。
- 输出前确认目标路径存在;路径含空格用引号包裹。
- 执行后用 ffprobe 验证输出时长和流,向用户报告实际结果(不臆测)。
标准流程
ffprobe -v error -show_entries format=duration:stream=codec_type,codec_name -of default=noprint_wrappers=1 "输入" —— 探时长与流。
- 根据需求挑命令(详见
references/ffmpeg-cookbook.md,动手前先 Read 它)。
- 跑 ffmpeg,长任务可
run_in_background 或 tail 进度。
- ffprobe 验证输出 → 简洁汇报(时长、大小、是否重编码)。
最常见的两个坑(务必记住)
- DJI / 带 timecode 的素材切片:用
-map 0:v -map "0:a?",不要 -map 0。后者会试图把 timecode/data 流塞进 mp4,报 Could not find tag for codec none / Could not write header 直接失败。"0:a?" 的问号要加引号,否则 zsh 会当通配符报 no matches found。
- 无损旋转:用
-display_rotation 改 MP4 显示矩阵,绝不 QuickTime 重编码或 ffmpeg transpose(后者重编码、慢且掉质量)。
详细命令速查
所有具体命令(切片、转码、旋转、抽帧、提取音频、合并、压缩、GIF)见同目录 references/ffmpeg-cookbook.md。需要时 Read 它,按场景取命令,替换路径与参数即可。