我发现自己在这里的墙前,只是试图将一个音频文件加载到pydub进行转换它继续抛出"[Errno 2]没有这样的文件或目录"错误.
当然,我花了太多时间确保路径有效,尝试相对和绝对路径并确认python方法open()在完全相同的路径下正常工作.
我正在使用python 2.7通过ubuntu上的anaconda 2.3 distrib在ipython 3.2中工作.
from pydub import AudioSegment sound = AudioSegment.from_mp3("/absolute/path/to/file.mp3")
也尝试在路径中没有空格,因为它有时是一个问题.这是完整的错误日志:
--------------------------------------------------------------------------- OSError Traceback (most recent call last)in () 1 import pydub ----> 2 sound = pydub.AudioSegment.from_mp3("/absolute/path/to/file.mp3") /home/ludo/anaconda3/envs/python2/lib/python2.7/site-packages/pydub/audio_segment.pyc in from_mp3(cls, file) 421 @classmethod 422 def from_mp3(cls, file): --> 423 return cls.from_file(file, 'mp3') 424 425 @classmethod /home/ludo/anaconda3/envs/python2/lib/python2.7/site-packages/pydub/audio_segment.pyc in from_file(cls, file, format, **kwargs) 404 log_conversion(conversion_command) 405 --> 406 p = subprocess.Popen(conversion_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 407 p_out, p_err = p.communicate() 408 /home/ludo/anaconda3/envs/python2/lib/python2.7/subprocess.pyc in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags) 708 p2cread, p2cwrite, 709 c2pread, c2pwrite, --> 710 errread, errwrite) 711 except Exception: 712 # Preserve original exception in case os.close raises. /home/ludo/anaconda3/envs/python2/lib/python2.7/subprocess.pyc in _execute_child(self, args, executable, preexec_fn, close_fds, cwd, env, universal_newlines, startupinfo, creationflags, shell, to_close, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite) 1333 raise 1334 child_exception = pickle.loads(data) -> 1335 raise child_exception 1336 1337 OSError: [Errno 2] No such file or directory
我对这里非常简单的事情视而不见......或者?
编辑:我也尝试将原始文本r"/absolute/path/to/file.mp3"传递给Vaulstein查询 - 这给了我同样的错误.
例外与您提供的文件名没有任何关系.查看回溯,它是无法找到conversion_command
的subprocess.Popen
呼叫.这反过来可以解释既avconv
不能ffmpeg
也不能找到的警告.解决方案应该是在控制台中安装libav-tools软件包sudo apt-get install libav-tools
.