所以有人写了一个笑话捕捉器脚本(如'Trap music'),我无法让它工作。
usage: trapifier.py [-h] [--samples [SAMPLES]] inputfile outputfile
然而,尽管文件夹看起来像这样
ls -l
total 14288
-rwxrwxrwx 1 ________ ________ 7295612 Mar 2 2008 Chicago.mp3
-rwxr-xr-x@ 1 ________ ________ 1074 Apr 12 17:00 LICENSE
-rwxr-xr-x@ 1 ________ ________ 2871 Apr 12 17:00 README.md
-rwxr-xr-x@ 1 ________ ________ 6 Apr 12 17:00 requirements.txt
drwxr-xr-x@ 48 ________ ________ 1632 Apr 12 17:00 samples
-rwxr-xr-x 1 ________ ________ 2923 Apr 12 17:00 trapifier.py
此命令始终导致[Errno 2]没有此类文件或目录
./trapifier.py Chicago.mp3 Chiraq.mp3
或
python trapifier.py Chicago.mp3 Chiraq.mp3
甚至
./trapifier.py /full/path/to/Chicago.mp3 Chiraq.mp3
是什么给出的?我觉得某处有一个菜鸟的错误。
请求的完整错误消息:
Traceback (most recent call last):
File "./trapifier.py", line 89, in <module>
overlay(parse())
File "./trapifier.py", line 32, in parse
base_track = pydub.AudioSegment.from_mp3(inputfile)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pydub/audio_segment.py", line 297, in from_mp3
return cls.from_file(file, 'mp3')
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pydub/audio_segment.py", line 284, in from_file
subprocess.call(convertion_command, stderr=open(os.devnull))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
脚本来源位于https://github.com/japesinator/trapifier.py
我有所有必需的库(argparse,pydub,os,random)。
第一个有用的编辑:似乎pydub.AudioSegment无法加载是罪魁祸首。然而,事情变得陌生。在python终端我可以做
from pydub import AudioSegment
但是当我这样做时,我得到了一个没有这样的模块错误
导入pydub.AudioSegment
答案 0 :(得分:3)
pydub无法找到用于解码和编码mp3文件(以及所有其他非波形格式)的ffmpeg,这很常见。如果您安装了ffmpeg并且它仍然无法正常工作,您可以明确告诉pydub在哪里找到它:
from pydub import AudioSegment
AudioSegment.ffmpeg = "/path/to/ffmpeg"
您可能还会发现我们getting ffmpeg set up docs有帮助= D
编辑 - 最后的选择:如果尽管你付出了最大努力就无法让pydub找到ffmpeg,你可以在将文件传递给pydub之前将所有内容转换为wave格式。这绝对是最后的手段,但它会避开ffmpeg问题,因为pydub原生支持wave。