近日在django项目中采用了librosa来分析用户上传的音频,主要是对其做一定间隔的采样用于绘制波形图。在本地(MacOS)上工作正常,部署到Ubuntu服务器后,自己手动用python方式运行django的server时,工作都是正常的,然而当我用superviosr挂起之后就一直报NoBackendError的错误,反复检查了FFmpeg的安装,应该是没有问题的。网上搜了一下没有看到比较合适的解决办法,故不得不自己读源码来调试了。
由于我的程序中只采用了librosa.load这个命令,通过源代码可以发现librosa实际上是用audioread这个库的audioread.audio_open来读取音频文件的。这个函数的源代码如下:
def audio_open(path):
"""Open an audio file using a library that is available on this
system.
"""
# Standard-library WAV and AIFF readers.
from . import rawread
try:
return rawread.RawAudioFile(path)
except DecodeError:
pass
# Core Audio.
if _ca_available():
from . import macca
try:
return macca.ExtAudioFile(path)
except DecodeError:
pass
# GStreamer.
if _gst_available():
from . import gstdec
try:</