使用 pydub 访问 ffprobe

问题描述 投票:0回答:2

我正在尝试让 https://github.com/jiaaro/pydub 在 Docker 中的 Alpine Linux 3.7.3 上使用

ffprobe
ffmpeg
解码器。

错误是:

/usr/lib/python3.6/site-packages/pydub/utils.py:198: RuntimeWarning: Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work
  warn("Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work", RuntimeWarning)
[Errno 2] No such file or directory: 'ffprobe': 'ffprobe'

我已经添加了 ffprobe 和相关的 ffmpeg 包与诗歌,一切看起来都很好:

 development  ➜ app 🐟 poetry show ffprobe
Skipping virtualenv creation, as specified in config file.
name         : ffprobe
version      : 0.5
description  : Wrapper around ffprobe command to extract metadata from media files
 development  ➜ app 🐟 poetry show ffmpeg
Skipping virtualenv creation, as specified in config file.
name         : ffmpeg
version      : 1.4
description  : ffmpeg python package url [https://github.com/jiashaokun/ffmpeg]

这里有很多关于如何使这些可用于 ffmpeg 的讨论https://github.com/jiaaro/pydub/issues/62

我一直按照建议手动设置

AudioSegment.converter
AudioSegment.ffmpeg
AudioSegment.ffprobe
,包括使用 ipdb 以确保其已设置:

ipdb> AudioSegment.converter
'/usr/lib/python3.6/site-packages/ffprobe/ffprobe.py'
ipdb> mp3_audio = AudioSegment.from_file(output, format="mp3")
/usr/lib/python3.6/site-packages/pydub/utils.py:198: RuntimeWarning: Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work
  warn("Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work", RuntimeWarning)
*** FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe': 'ffprobe'
ipdb> ffprobe
<module 'ffprobe' from '/usr/lib/python3.6/site-packages/ffprobe/__init__.py'>
ipdb> AudioSegment.ffmpeg
<module 'ffmpeg' from '/usr/lib/python3.6/site-packages/ffmpeg/__init__.py'>
ipdb> AudioSegment.ffprobe
'/usr/lib/python3.6/site-packages/ffprobe/ffprobe'
ipdb> AudioSegment.ffprobe = '/usr/lib/python3.6/site-packages/ffprobe/ffprobe.py'
ipdb> mp3_audio = AudioSegment.from_file(output, format="mp3")
/usr/lib/python3.6/site-packages/pydub/utils.py:198: RuntimeWarning: Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work
  warn("Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work", RuntimeWarning)
*** FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe': 'ffprobe'

关于如何使该包可用于 pydub 有什么想法吗?

python ffmpeg ffprobe pydub python-poetry
2个回答
1
投票

对我来说,当我将 FFMPEG 二进制文件复制到 Mp3 文件所在的同一目录中时,它就起作用了。我尝试调整路径变量等,但最终复制二进制文件对我有用。 您可以从这里下载 ffmpeg 二进制文件:https://ffmpeg.org/download.html


0
投票

这是 user13832229 回答四年后,我遇到了同样的问题。 错误为 pydub\utils.py:198: RuntimeWarning: 找不到 ffprobe 或 avprobe - 默认为 ffprobe,但可能无法在 Win11 计算机上工作。

作为背景,在 3.10.5 的 venv 开发机器上运行良好,但我想通过 pyinstaller 进行编译,并能够将可执行文件发送给其他人。 我将 ffmpeg 和 ffprobe 压缩到 exe 中,因此最终用户无需担心安装这些软件包。 尽管该包可以很好地解压缩在临时目录中,我可以在其中使用 CLI 使用它们,但无论我尝试锁定什么环境变量,pydub 都无法识别它们。 另外,它是否在 PATH 环境变量中也没关系。 只是行不通。 (即使它确实有效,我也不热衷于依靠它来使程序工作。)

所以,偶然发现了这个评论,只需将 ffprobe 和 ffmpeg 复制到与 mp3 文件相同的目录,这是唯一有效的方法。

我希望在互联网上做一个注释,以便其他人可以看到这似乎是解决奇怪问题的最佳实用方法。

© www.soinside.com 2019 - 2024. All rights reserved.