2015-05-16 50 views
1

我想要做的是在Python中打開一個ffmpeg進程。我的代碼如下所示:在Python中打開ffmpeg子進程時出錯

import subprocess 
import os 

def Main(): 
    ffmpeg = "C:\ffmpeg\bin\ffmpeg.exe" 
    args = " -i C:\video.mp4 -r 1 -f image2 C:\FRAMES\frame-%03d.jpg" 
    subprocess.Popen(ffmpeg + args).wait() 

Main() 

但即使在這種簡單的形式,我總是相同的錯誤:

Traceback (most recent call last): 
    File "C:/Users/Francesco/Desktop/test.py", line 9, in <module> 
    Main() 
    File "C:/Users/Francesco/Desktop/test.py", line 7, in Main 
    subprocess.Popen(ffmpeg + args).wait() 
    File "C:\Users\Francesco\Desktop\WinPython-64bit-2.7.9.4\python-2.7.9.amd64\lib\subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "C:\Users\Francesco\Desktop\WinPython-64bit-2.7.9.4\python-2.7.9.amd64\lib\subprocess.py", line 958, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] Impossibile trovare il file specificato 
>>> 

有什麼不對?

回答

0

你需要逃出反斜線,也給這兩個

ffmpeg = "C:\\ffmpeg\\bin\\ffmpeg.exe " 
args = " -i C:\\video.mp4 -r 1 -f image2 C:\\FRAMES\\frame-%03d.jpg" 

之間的空間。然而,這不是推薦的方法。 你應該有一個你作爲參數而不是字符串傳遞的列表。

cmd = ['C:\\ffmpeg\\bin\\ffmpeg.exe', '-i', 'C:\\video.mp4', '-r', '1', '-f', 'C:\\FRAMES\\frame-%03d.jpg'] 
+0

謝謝你,代碼似乎工作。但我無法解釋爲什麼在代碼的其他部分,我使用路徑中的單個「\」來例如讀取文件或定義目標路徑,它可以工作 – Hyperion

+0

'\ b'轉換爲''\ x08 '',但'\'轉換爲'\\'。所以取決於你輸入什麼路徑。它總是使用'​​\\\'更安全 – hyades