不会写 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 的全部能力。
装好模型、问一句、确认执行,剩下的交给机器。

祝你玩得开心,也别忘了——命令行依旧锋利,谨慎永远是好伙伴。