我試圖從python運行ffmpeg並獲得一些合理的輸出。無論設置什麼ffmpeg的日誌級別,我從Popen.communicate()獲得的唯一輸出是錯誤的。但內容不是錯誤。我嘗試了相同的代碼來運行其他命令(ls),並且對於out和err輸出,它似乎都正常。運行ffmpeg時Popen.communicate()只返回err
我在這裏檢查過,Google很遺憾地沒有發現任何東西。大多數示例使用os或命令模塊,而不是子進程。
這是我的測試代碼:
command = [
'ffmpeg',
'-v', 'debug',
'-i', '1.mov',
'-vcodec', 'libx264',
'-profile:v', 'high',
'-preset', 'slower',
'-b:v', '1000k',
'-vf', 'scale=-1:720',
'-threads', '0',
'-acodec', 'libfdk_aac',
'-b:a', '192k',
'-y',
'2.mp4',
]
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
f = open('out.log', 'w')
f.write(out)
f.close()
f = open('error.log', 'w')
f.write(err)
f.close()
你有沒有看到這樣的事情?我是否犯了錯誤或者在ffmpeg中有錯誤?
嘗試在終端運行完全相同的命令參數,看看會發生什麼。要將實際參數作爲字符串獲取,您可以在Python腳本中用'echo'代替'ffmpeg'。 – sashoalm 2013-02-14 20:54:48
在終端中運行命令是可以的。我做我想做的事,控制檯輸出不是錯誤。因此,我期望communican()的返回值相同的輸出。這是錯誤的一部分。我試圖與其他命令一起運行,那裏是可以的。 – 2013-02-16 12:50:19