解决 Ubuntu 环境下 ffmpeg 安装依赖问题(FileNotFoundError: ffprobe 错误处理)
目录
1. 问题背景
2. 原因分析
3. 常规解决方法:apt 安装 ffmpeg
4. 解决 apt 依赖问题
(1)修复损坏的依赖
(2)启用 universe 仓库
5. 替代方案:安装 ffmpeg 静态编译版
6. 验证安装是否成功
7. 在 Python 中指定 ffmpeg 路径
总结
1. 问题背景
最近在用 pydub
做音频切分时,执行下面的代码:
from pydub import AudioSegment
audio = AudioSegment.from_file("test.mp4", format="mp4")
报错:
FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe'
2. 原因分析
pydub
在解析 mp3/mp4/wav 等音频文件时,底层依赖ffmpeg
或ffprobe
。
如果系统中没有安装这两个工具,就会报FileNotFoundError
。
3. 常规解决方法:apt 安装 ffmpeg
在 Ubuntu / Debian 系统里,可以直接用 apt 安装:
sudo apt update
sudo apt install ffmpeg -y
理论上应该能自动安装依赖。但有时候会遇到类似错误:
ffmpeg : 依赖: libavcodec58 (= 7:4.2.7-0ubuntu0.1) ...
E: 错误,pkgProblemResolver::Resolve 发生故障
说明系统源里缺少依赖。
4. 解决 apt 依赖问题
如果遇到依赖缺失,可以尝试:
(1)修复损坏的依赖
sudo apt --fix-broken install -y
sudo apt install ffmpeg -y
(2)启用 universe 仓库
Ubuntu 某些版本默认没启用 universe 仓库,手动添加:
sudo add-apt-repository universe
sudo apt update
sudo apt install ffmpeg -y
这样大部分情况下能解决。
5. 替代方案:安装 ffmpeg 静态编译版
如果 apt 依旧失败,可以直接使用官方预编译好的 静态二进制包,无需依赖系统库。
(1)下载并解压
cd /usr/local
sudo wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
sudo tar -xvf ffmpeg-release-amd64-static.tar.xz
(2)建立软链接(全局可用)
cd ffmpeg-*-amd64-static
sudo ln -s /usr/local/ffmpeg-*-amd64-static/ffmpeg /usr/bin/ffmpeg
sudo ln -s /usr/local/ffmpeg-*-amd64-static/ffprobe /usr/bin/ffprobe
6. 验证安装是否成功
安装完成后,运行:
ffmpeg -version
ffprobe -version
如果能正常显示版本信息,就说明安装成功。
7. 在 Python 中指定 ffmpeg 路径
如果你下载的 ffmpeg 没放到 PATH 里,可以在代码里手动指定:
from pydub import AudioSegmentAudioSegment.converter = "/usr/local/bin/ffmpeg"
AudioSegment.ffprobe = "/usr/local/bin/ffprobe"
这样即使没配置环境变量,也能正常运行。
总结
-
pydub
处理音频时必须依赖ffmpeg/ffprobe
-
优先推荐 apt 安装,如果报依赖错误,可以用
--fix-broken
或启用universe
源 -
如果 apt 依旧失败,可以直接用 静态编译版 ffmpeg
-
在 Python 中还可以显式指定 ffmpeg 路径
这样基本能解决 FileNotFoundError: ffprobe
的问题。