使用 pydub 访问 ffprobe
Accessing ffprobe with pydub
我正在尝试让 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
我正在尝试让 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