我有一個python腳本通過子進程調用ffmpeg來做一些mp3操作。它在前臺運行良好,但是如果我在後臺運行它,它可以達到ffmpeg命令,它本身可以將其配置轉儲到stderr中。此時,一切都停止,並且父任務被報告爲停止,而不會在任何地方引發異常。我已經在ffmpeg的地方嘗試了一些其他簡單的命令,它們通常在前景或背景中執行。在後臺調用ffmpeg殺死腳本
這是問題的小例子:
import subprocess
inf = "3HTOSD.mp3"
outf = "out.mp3"
args = [ "ffmpeg",
"-y",
"-i", inf,
"-ss", "0",
"-t", "20",
outf
]
print "About to do"
result = subprocess.call(args)
print "Done"
我真的不能工作了,爲什麼還是包裝過程中如何使家長沒有至少提高一個錯誤終止,只有如何發生在一個很小的環境中。到底是怎麼回事?另外,我知道ffmpeg不是最好的包,但我與使用ffmpeg編譯到它的東西接口,所以再次使用它似乎是明智的。
這個。感謝你的解釋,整個「等待stdin」的東西是我未知的未知之一。實現最簡單的解決方案就是將一個subprocess.PIPE附加到調用的stdin。 – TimD
@TimD:除非您在進程運行時讀/寫/關閉相應的管道,否則不要使用PIPE,即不要在subprocess.call()函數中使用它,即使它恰好與某些ffmpeg可執行文件的參數。 – jfs