Pydub 找不到 ffmpeg 尽管它已安装并在路径中

dja*_*ela 1 macos ffmpeg pydub

我正在尝试打开一些 MP3 文件以找到它们的长度(作为更大项目的一部分)。我已经安装了 pydub 并且 ffmpeg 已经通过 brew 安装。ffmpeg 在我的路径中可用,并且在终端中输入 ffmpeg 会成功启动它 - 我引用的音频文件存在,我可以在其上运行 ffmpeg -i 以获取有关它的信息。该程序可以打开和播放音频文件(使用 pygame),所以我确定这不是文件问题。

但是,尝试使用 AudioSegment 打开任何文件会导致显示“找不到 ffmpeg 或 avconv - 默认为 ffmpeg 但可能不起作用”,并且任何使用 AudioSegment 打开文件的尝试都会导致异常。

我已经尝试使用 AudioSegment.converter 显式设置 ffmpeg 的路径 - 既试图指向 '/usr/local/bin/ffmpeg' 也试图指向真实位置(前一个是符号链接)。

from pydub import AudioSegment
AudioSegment.converter = '/usr/local/bin/ffmpeg' # tried with and without
print(len(AudioSegment.from_mp3('mp3_audio.mp3')))
Run Code Online (Sandbox Code Playgroud)

我得到 FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe': 'ffprobe'

小智 5

这是很难弄清楚的。但它在这里。

在 Mac 上,运行 brew install ffmpeg

然后您需要找到它将二进制文件写入的位置。它将被埋在/usr/local/Cellar目录中,并将基于安装的版本号。就我而言,它是

/usr/local/Cellar/ffmpeg/4.2.1_2/bin/ffmpeg
Run Code Online (Sandbox Code Playgroud)

然后,您需要将此路径添加到您的 Python 脚本中,如下所示

from pydub import AudioSegment

AudioSegment.converter = '/usr/local/Cellar/ffmpeg/4.2.1_2/bin/ffmpeg'
Run Code Online (Sandbox Code Playgroud)