我试图使用avconv从python代码将test.mp4文件转换为test.wav。我能够使用cmd行将test.mp4转换为test.wmv,但是当我从python运行相同的命令时,它给出了以下错误:
第103行,在get_message_audio中subprocess.call(cmdline)FileNotFoundError:[WinError 2]系统找不到指定的文件
我在python文件中使用的代码是:
cmdline = ['avconv',' - i','test.mp4',' - vn',' - f','wav','test.wav']
subprocess.call(CMDLINE)
但是当我从cmd运行相同的命令时,它成功运行并保存test.wav文件。
cmd line = avconv -i test.mp4 -f wav test.wav
注意:我已将avconv添加到系统变量中。 python文件和test.mp4在同一目录中。我也在同一个目录下运行cmd。
我的猜测是它找不到avconv
可执行文件。我建议您在Python中使用avconv
的完整绝对路径。您可以尝试的另一件事是使用shell,将shell=True
添加到您的subprocess.call()
调用中。
换句话说,这样做,看看它是否有帮助:
cmdline = [r'\full\path\to\avconv', '-i', 'test.mp4', '-vn', '-f', 'wav', 'test.wav']
subprocess.call(cmdline, shell=True)
我不认为这是它找不到的输入文件。它似乎没有那么远。在subprocess.call(cmdline)
失败的时候,test.mp4
和test.wav
只是被传递给avconv
的字符串。
我的猜测是avconv
不在Python运行命令的环境的PATH中。 shell=True
可能会有所帮助。
可能文件的位置不是您当前的工作目录。加
import os
print(os.getcwd())
检查脚本查找文件的位置。
如果那不是正确的位置,您可以使用
os.chdir(„your/file/directory“)