回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>嗨,我正在尝试使用带有以下函数的<code>ffmpeg</code>从视频文件中提取音频(在<code>Python 2</code>中):</p>
<pre><code>def extractAudio(path):
command = ''.join(('ffmpeg -i "',path,'" -ab 160k -ac 2 -ar 44100 -vn audio.wav'))
print(command)
subprocess.call(command,shell=True)
</code></pre>
<p>上面的print语句成功地打印了以下内容:</p>
^{pr2}$
<p>但在下一个语句中,它失败并引发以下错误:</p>
<pre><code>Traceback (most recent call last):
File "C:/Users/pruthvi/Desktop/vidrec/vidrec.py", line 53, in <module>
main()
File "C:/Users/pruthvi/Desktop/vidrec/vidrec.py", line 46, in main
extractAudio(os.path.join(di,each))
File "C:/Users/pruthvi/Desktop/vidrec/vidrec.py", line 28, in extractAudio
subprocess.call(command,shell=True)
File "C:\Python27\lib\subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 710, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 928, in _execute_child
args = '{} /c "{}"'.format (comspec, args)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 56-57: ordinal not in range(128)
</code></pre>
<p>我已经尝试了前面问题中所有可能的解决方案,比如用正确的类型编码,设置<code>PYTHONIOENCODING</code>等等,但是似乎没有一个有效。如果我将其转换为<code>ascii</code>,它将不再起作用,因为它删除了非ascii字符并以<code>file not found</code>结尾,并且音频不会从目标文件中提取。感谢任何帮助,谢谢:)</p>
<p>要进行实验,可以使用以下代码:</p>
<pre><code># -*- coding: utf-8 -*-
import subprocess
def extractAudio():
path = u'C:/Users/pruthvi/Desktop/vidrec/temp\TAEYEON 태연_ I (feat. Verbal Jint)_Music Video.mp4'
command = ''.join(('ffmpeg -i "',path,'" -ab 160k -ac 2 -ar 44100 -vn audio.wav'))
print(command)
subprocess.call(command,shell=True)
extractAudio()
</code></pre>