尽管在这个问题上有一些线索,但没有解决方案帮助我,以下是有问题的代码行:
AudioSegment.converter = r'C:/users/user_/appdata/local/packages/pythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0/localcache/local-packages/python38/site-packages/ffmpeg.exe'
AudioSegment.ffprobe = r'C:/users/user_/appdata/local/packages/pythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0/localcache/local-packages/python38/site-packages/ffprobe.exe'
final_voice = AudioSegment.from_mp3(file_path) + AudioSegment.silent(duration=silence_duration)
我尝试过不同的方法来解决这个问题,例如添加ffmpeg.exe和ffprobe.exe的路径,但之后没有任何变化,其他解决方案没有太大意义,因为我没有使用他们有问题的模块,我没有做他们做过的事情。
如果你有任何想法,请分享,因为我还没有找到如何做的事情AudioSegment做与其他模块(顺便说一句,这个问题已经出现在每一行代码包含AudioSegment.from_mp3(file_path))
谢啦,谢啦
2条答案
按热度按时间2nc8po8w1#
解决方法很简单,只需在脚本目录中添加ffmpeg.exe、ffprobe.exe和ffplay.exe,从FFMPEG下载页面下载这些exe文件,然后从bin文件夹中取出
swvgeqrz2#
添加ffmpeg文件对我来说不是一个选项,所以我深入挖掘了一下。简短回答:
修改本地
...\site-packages\pydub\utils.py
中get_prober_name()的else子句(我当前版本中的第199行),返回ffprobe.exe的绝对路径。我使用的Windows是解压版的ffmpeg(所以没有安装,路径条目或类似的)。虽然转换器方法似乎确实设置了一个值,ffprobe方法没有做任何事情。
脚本调用的子进程只是将'ffprobe'作为一个程序来调用。当然,如果这不是一个注册的程序,这将不会起作用。因此,避免这种行为的最简单(希望也是最安全的)方法是将默认的探测器名称设置为正确的完整路径(如上所述)。