2015-05-16 4 views
1

Что я хочу сделать, так это открыть процесс ffmpeg в Python. Мой код выглядит следующим образом:Ошибка открытия подпроцесса ffmpeg в Python

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" 

Однако, это не рекомендуется делать. У вас должен быть список, который вы передаете как args, а не строку.

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

Благодарим вас, что код кажется работающим. Но я не могу объяснить, почему в других частях кода я использовал единственный «\» в пути, например, для чтения файла или определения пути назначения, и он работает – Hyperion

+0

'\ b' переводит на' '\ x08 '', но' \ 'переводится в' \\ '. Так что зависит от того, какой путь вы вложили. Его всегда безопаснее использовать '\\\' – hyades

Смежные вопросы