python包 musdb安装后不能使用的问题,报错“RuntimeError: ffmpeg or ffprobe could not be found! Please install ...“

问题描述如下:
因为做实验要用到MUSDB18这个数据集,但是数据集里所包含的数据均为mp4格式文件,因此在进行数据处理时需要用到musdb这个包去进行音频的处理,musdb包所依赖的两个关键包有两个:ffmpeg和ffprobe。在环境中安装完以上三个包以后,进入代码进行调试,报错如下:

在这里插入图片描述
问题分析:
提示错误信息为musdb依赖的两个包ffmpeg和ffprobe找不到,表面意思看是没有安装这两个包,参考错误信息中的解决办法是分别安装ffmpeg和stempeg两个包(stempeg我已经安装了0.1.8版本的)。但是安装了之后,仍然报错如上图一致。
经过百度,发现ffmpeg并不是一个严格意义上的包,是一个用于视频流编解码常用的工具,而stempeg是在python环境中作为ffmpeg工具的接口。报错信息中的ffprobe则属于ffmpeg工具包中的一个可执行文件。
在了解了这些以后,我找到了报错代码的源码部分,如下:

def  cmd_exist(cmd):
    try:
        from shutil import which
        return shutil.which(cmd) is not None
    except ImportError:
        return any(
            os.access(os.path.join(path, cmd), os.X_OK)
            for path in os.environ["PATH"].split(os.pathsep)
        )
def  ffmpeg_and_ffprobe_exists():
    return cmd_exist("ffmpeg") and cmd_exist("ffprobe")
if  not  ffmpeg_and_ffprobe_exists():
    raise RuntimeError('ffmpeg or ffprobe could not be found! '
                       'Please install them before using stempeg. '
                       'See: https://github.com/faroit/stempeg')

这里出现了有关shufle包下的which函数的使用,百度后了解到 shufle.which(cmd) 函数用来查找‘cmd’对应的可执行文件(默认搜索路径为/usr/bin/和/usr/local/bin/),但是由于这里没有在默认搜索路径下找到对应ffmpeg和ffprobe的可执行文件,因此出错。我发现只是使用conda安装ffmpeg以及ffprobe并不能解决问题。需要在服务器上安装ffmpeg,然后将其可执行文件建立到目标路径下。参考了安装过程看这里的安装过程(保证通过conda安装的ffmpeg的版本与使用的安装包版本保持为一致。),在安装完成以及配置完环境变量生效之后,在命令行输入‘ffmpeg -version’如果显示如下即是安装成功:
在这里插入图片描述
此时ffmpeg的位置在 /usr/local/下,可执行文件ffmpeg和ffprobe的位置在/usr/local/ffmpeg/bin下,如果此时运行程序的话仍然是和之前同样的错误,因此需要将这两个可执行文件放置到/usr/bin/里,这里为了避免文件直接转移出现问题,使用软链接的方法。在shell里依次输入指令 :

sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/bin/ffprobe

这个时候再次调用musdb包就可以正常使用了。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值