我正在尝试让 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 有什么想法吗?
对我来说,当我将 FFMPEG 二进制文件复制到 Mp3 文件所在的同一目录中时,它就起作用了。我尝试调整路径变量等,但最终复制二进制文件对我有用。 您可以从这里下载 ffmpeg 二进制文件:https://ffmpeg.org/download.html
这是 user13832229 回答四年后,我遇到了同样的问题。 错误为 pydub\utils.py:198: RuntimeWarning: 找不到 ffprobe 或 avprobe - 默认为 ffprobe,但可能无法在 Win11 计算机上工作。
作为背景,在 3.10.5 的 venv 开发机器上运行良好,但我想通过 pyinstaller 进行编译,并能够将可执行文件发送给其他人。 我将 ffmpeg 和 ffprobe 压缩到 exe 中,因此最终用户无需担心安装这些软件包。 尽管该包可以很好地解压缩在临时目录中,我可以在其中使用 CLI 使用它们,但无论我尝试锁定什么环境变量,pydub 都无法识别它们。 另外,它是否在 PATH 环境变量中也没关系。 只是行不通。 (即使它确实有效,我也不热衷于依靠它来使程序工作。)
所以,偶然发现了这个评论,只需将 ffprobe 和 ffmpeg 复制到与 mp3 文件相同的目录,这是唯一有效的方法。
我希望在互联网上做一个注释,以便其他人可以看到这似乎是解决奇怪问题的最佳实用方法。