科学工具
科学工具让世界更美好
让世界更美好

wtffmpeg命令行工具,利用本地大型语言模型(LLM)将用户用自然语言描述的视频和音频处理任务翻译为可执行的FFmpeg命令

wtffmpeg是一款命令行工具,利用本地大型语言模型(LLM)将用户用自然语言描述的视频和音频处理任务,直接翻译为可执行的FFmpeg命令,帮助用户避免手动查找和组合复杂参数的繁琐。wtffmpeg所有数据处理均在本地进行,不涉及外部API,从而保障了数据隐私,提供交互式模式,允许用户在执行生成的命令前进行预览确认,支持GPU加速LLM推理过程以提升效率。wtffmpeg具备高度可定制性,用户可以灵活更换不同的LLM模型或调整系统提示来优化命令生成的准确性,在交互模式下用户可以直接编辑或执行其他系统命令,极大地增强了工具的灵活性和问题解决能力。

如果你经常需要处理音视频,肯定对FFmpeg不陌生,但它繁多的参数和复杂的命令格式,总让人头疼——每次想完成一个简单操作,都得翻文档、查教程。wtffmpeg能把你的自然语言描述,直接转换成可执行的FFmpeg命令,让音视频处理变得简单。

wtffmpeg把用中文(或英文)描述的音视频处理需求,自动转换成FFmpeg命令,不用再死记硬背FFmpeg的参数,也不用反复搜索教程,直接说出你想做什么,它就会帮你生成对应命令。

举个例子,如果你说“把my_video.avi转换成没有声音的mp4”,它会生成这样的FFmpeg命令:

ffmpeg -i my_video.avi -an -c:v libx264 my_video.mp4

生成后,它会先让你确认,确认后才会执行。

wtffmpeg核心功能

自然语言交互:用日常语言描述需求,比如“从lecture.mp4里提取音频,保存成高质量mp3”,就能生成对应命令。

本地运行:所有操作都在自己的电脑上完成,不会把数据发送到外部服务器,更安全。

可交互执行:生成命令后会先展示给你,你可以选择执行、复制,或者修改后再用。

GPU加速:通过llama-cpp-python,能把模型计算任务分担到GPU上,让生成命令的速度更快。

可自定义:可以更换不同的LLM模型,也能调整系统提示,让生成的命令更符合你的使用习惯。

wtffmpeg安装

用uv快速安装(推荐)

1、先安装uv(如果没有的话):

curl -LsSf https://astral.sh/uv/install.sh | sh
、"$HOME/.local/bin/env"

2、下载项目并运行:

git clone https://github.com/scottvr/wtffmpeg.git
cd wtffmpeg
chmod +x wtffmpeg.py
./wtffmpeg.py

3、(可选)创建命令别名,之后直接输入wtff就能使用:

sudo ln -s $(pwd)/wtffmpeg.py /usr/local/bin/wtff

手动安装

1、克隆仓库:

git clone https://github.com/scottvr/wtffmpeg.git
cd wtffmpeg

2、创建虚拟环境(推荐,避免依赖冲突):

python3 -m venv .venv
source .venv/bin/activate  # Windows系统用 .venv\Scripts\activate

3、安装带硬件加速的llama-cpp-python(关键步骤,影响运行速度): • NVIDIA显卡(CUDA):

CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python

• 苹果芯片(Metal):

CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python

• 仅用CPU(OpenBLAS):

pip install llama-cpp-python

4、安装wtffmpeg:

pip install .

wtffmpeg 配置模型

wtffmpeg需要GGUF格式的LLM模型才能运行。默认会从Hugging Face自动下载,也可以手动下载:

1、推荐模型:

• Phi-3-mini-4k-instruct-gguf • Mistral-7B-Instruct-v0.2-GGUF

2、手动下载示例(以Phi-3为例):

wget https://huggingface.co/microsoft/Phi-3-mini-4k-instruct-gguf/resolve/main/Phi-3-mini-4k-instruct-q4.gguf

下载后放到项目目录即可。如果用其他模型,运行时加上--model 模型文件名参数就行。

wtffmpeg使用教程

基本用法

直接输入自然语言指令:

wtff "把presentation.mov转换成适合网页的mp4"

wtffmpeg常用参数

参数 作用
-x 生成命令后直接执行,不用确认
-c 把生成的命令复制到剪贴板
-i 进入交互模式,能连续生成多个命令
--model 指定使用的LLM模型(比如--model mistral-7b.gguf
--gpu-layers 设置GPU加速的层数(-1表示使用所有可用层)

wtffmpeg示例

1、提取音频:

wtff "从lecture.mp4提取音频,保存为高质量mp3"

2、制作片段:

wtff "从movie.mkv里,从第2分钟开始,截取10秒的片段"

3、直接执行命令(不确认):

wtff -x "把video.mp4调整为720p分辨率"

4、用交互模式连续操作:

wtff -i  # 进入交互模式后,可多次输入指令

常见问题

有时模型生成的命令可能有问题(比如语法错误)。这时候可以:

1、检查生成的命令,手动修改后再执行。

2、在输入指令时补充说明。比如模型生成的命令里错误添加了-c copy参数,可以这样输入:

wtff "反转test_pattern.mp4视频,不要用-c copy参数"

3、在交互模式里,用!开头可以执行任意命令。比如查看当前目录的视频文件:

wtff> !ls -l *.mp4