不会写 FFmpeg 命令?试试 wtffmpeg:一句人话就能干活
“把这段 AVI 变成没声音的 MP4”
只需一句话,wtffmpeg 就能给出可直接运行的 FFmpeg 命令,并在你确认后自动执行。
本文是一份面向所有技术背景用户的完整指南,从安装到常见疑问,全部基于 wtffmpeg 官方文档整理。读完你将获得:
-
清晰了解 wtffmpeg 能做什么、不能做什么 -
一步步在本地装好并让它跑起来 -
典型场景示例与排错思路 -
如何用自己的大模型或系统提示进一步定制
1. wtffmpeg 到底是什么?
名称 | wtffmpeg |
---|---|
类型 | 命令行小工具 |
核心功能 | 把自然语言翻译成 FFmpeg 命令 |
运行方式 | 完全本地,不联网 |
依赖 | Python 3.8+、llama-cpp-python、GGUF 模型 |
适用人群 | 不想查文档、又想用 FFmpeg 处理音视频的人 |
一句话总结:
“你告诉它要干什么,它帮你写命令,你再决定要不要执行。”
2. 安装:一步一步来
2.1 先克隆仓库
git clone https://github.com/scottvr/wtffmpeg.git
cd wtffmpeg
2.2 创建虚拟环境(强烈推荐)
python3 -m venv .venv
source .venv/bin/activate # Windows 用 .venv\Scripts\activate
2.3 安装 llama-cpp-python(性能关键)
根据硬件选择:
硬件 | 命令 |
---|---|
NVIDIA GPU(CUDA) | CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python |
Apple Silicon(Metal) | CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python |
CPU 仅 | pip install llama-cpp-python |
安装失败? 先确保系统里有匹配的编译工具链,再对照 llama-cpp-python 官方文档。
2.4 安装 wtffmpeg 本体
pip install .
完成后,终端里就多了 wtff
这条命令。
2.5 下载模型
wtffmpeg 需要 GGUF 格式的模型,推荐:
-
Phi-3-mini-4k-instruct-q4.gguf(默认) -
Mistral-7B-Instruct-v0.2-GGUF
把模型文件放在项目目录即可。如果你偏爱别的模型,运行时用 --model
指定路径。
3. 上手:第一次体验
3.1 最基本用法
wtff "convert my_video.avi to mp4 with no sound"
终端会提示:
Loading model... (this may take a moment)
Model loaded. Generating command...
--- Generated ffmpeg Command ---
ffmpeg -i my_video.avi -an -c:v libx264 my_video.mp4
------------------------------
Execute this command? [y/N]
敲 y
就执行,敲 N
就放弃。
3.2 直接执行,不询问
wtff -x "resize video.mp4 to 720p"
3.3 进入交互模式
wtff --model mistral-7b-instruct-v0.1.Q3_K_M.gguf -i
之后你可以连续提问,模型常驻内存,省掉重复加载时间。
4. 场景示例:一句话搞定常见需求
自然语言描述 | 生成的命令示例 |
---|---|
turn presentation.mov into a web-friendly mp4 | ffmpeg -i presentation.mov -c:v libx264 -crf 23 -preset medium -c:a aac output.mp4 |
extract the audio from lecture.mp4 as high-quality mp3 | ffmpeg -i lecture.mp4 -q:a 0 -map a lecture.mp3 |
create a 10-second clip from movie.mkv starting at 2 minutes | ffmpeg -ss 00:02:00 -i movie.mkv -t 10 -c copy clip.mkv |
小提示:
如果生成的命令多或少参数,可以补一句更精确的说明,例如“不要复制码流”。
5. 常见疑问(FAQ)
5.1 模型加载太慢怎么办?
-
换一块 SSD 存放模型文件 -
使用 GPU 加速(见 2.3 节) -
交互模式下常驻,后续命令秒级响应
5.2 生成的命令报错?
-
先看 FFmpeg 提示,多半是参数冲突 -
在交互模式里用 !
手动改命令再执行(见下一节)
5.3 能处理 4K/60 fps 大文件吗?
-
只要 FFmpeg 本身能跑,wtffmpeg 就能生成对应命令 -
大文件处理时间取决于 FFmpeg 与硬件,wtffmpeg 只负责“翻译”
5.4 可以用中文提问吗?
-
只要模型支持中文,wtffmpeg 就能理解 -
实际效果取决于所用模型的多语言能力
6. 进阶:交互模式里的“小秘密”
6.1 现场改命令
示例对话:
wtff> reverse the video test_pattern.mp4
--- Generated ffmpeg Command ---
ffmpeg -i test_pattern.mp4 -vf "reverse" -c copy output.mp4
------------------------------
Execute? [y/N], or (c)opy to clipboard: N
发现 -c copy
与 -vf reverse
冲突,于是追加提示:
wtff> reverse the video test_pattern.mp4. Do not use `-c copy` in your command.
模型立即给出:
ffmpeg -i test_pattern.mp4 -vf "reverse" -c:v libx264 -crf 18 -pix_fmt yuv420p output.mp4
6.2 用 !
执行任意命令
在交互模式里:
wtff> !ls -l *.mp4
即可查看当前目录所有 mp4 文件,无需退出 wtffmpeg。
7. 个性化:换模型、改提示
7.1 指定自己的模型
wtff --model ./models/mymodel.gguf "convert to gif"
7.2 修改系统提示(System Prompt)
修改源码里的 system_prompt
字符串,可让模型输出更符合你口味的命令。例如:
-
强制所有输出带 -y
选项 -
默认使用硬件加速编码器
8. 故障排查速查表
现象 | 可能原因 | 解决思路 |
---|---|---|
command not found: wtff |
虚拟环境未激活 | source .venv/bin/activate |
模型加载卡住 | 内存不足或路径错误 | 确认 .gguf 文件完整、路径正确 |
生成命令无效 | 模型幻觉 | 追加更精确的约束再试 |
GPU 没用到 | llama-cpp-python 编译参数错 | 重装并检查 CMAKE_ARGS |
9. 免责声明与使用建议
项目作者提醒:
“这更像是一件带点幽默感的作品,而非严肃软件。务必在运行前检查生成的命令,尤其是处理重要文件时。”
因此:
-
先在测试文件上跑通 -
养成看命令再敲回车的习惯 -
定期备份
10. 结尾:一句话总结
wtffmpeg 把“写 FFmpeg 命令”这件事降到了“说句话”的难度,却保留了 FFmpeg 的全部能力。
装好模型、问一句、确认执行,剩下的交给机器。
祝你玩得开心,也别忘了——命令行依旧锋利,谨慎永远是好伙伴。