pydub "Couldn't find ffmpeg or avconv - defaulting to ffmpeg" 问题解决

时间:2023-03-09 08:31:37
pydub  "Couldn't find ffmpeg or avconv - defaulting to ffmpeg" 问题解决

我通过 命令行安装了pydub库,运行报了如下错误

RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work  warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
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)

明明先通过 pip3 install ffmpeg 命令安装了ffmpeg了为啥还会报这个错?

我搜索了下,网上说是要下载ffmpeg包,然后配置系统环境变量。

于是下载并配置了如下的包:

https://github.com/BtbN/FFmpeg-Builds/releases

结果报 “找不到程序输入点”,看的我一脸懵逼。

然后换了一个:

https://github.com/GyanD/codexffmpeg/releases/tag/2021-01-01-git-63505fc60a

测试命令 ffmpeg -version,配置成功了。

但 pydub 还是报错。

又继续搜索,发现有一个说要手动指定目录:

from pydub import AudioSegment

AudioSegment.converter = r'my-install-dir\\ffmpeg_full_gyanbin\\ffmpeg.exe'

还是没啥用。

看了下源码,debug跟踪了下,其实就是将环境变量读取出来,然后逐个拼接上"ffmpeg.exe“ 然后判断是不是可执行的文件:

pydub  "Couldn't find ffmpeg or avconv - defaulting to ffmpeg" 问题解决

pydub  "Couldn't find ffmpeg or avconv - defaulting to ffmpeg" 问题解决

在读取的环境变量,envdir_list中,独没有刚增加的ffmpeg的。啊,原来环境变量是没有生效。

最后发现,修改了系统环境变量之后,新修改的内容,对于之后启动的程序生效,对于修改前就驻留内存的程序不生效。

所以配置好后,重启下软件就好了(不需要重启系统)。