2014-03-31 505 views
0

我想在python中執行ffmpeg命令。 當下面的命令在命令行窗口中執行在cmd它的工作:通過python腳本運行ffmpeg命令

C:\FFmpeg\bin\ffmpeg -rtbufsize 100000k -r 65535/2733 -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" output100.avi 

然而,當我嘗試在python以這種方式運行此命令:

cmd='C:\FFmpeg\bin\ffmpeg -rtbufsize 100000k -r 65535/2733 -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" output100.avi' 
subprocess.call(cmd, shell=true) 

這是行不通的

我也試過這樣

cmd='C:\FFmpeg\bin\ffmpeg -rtbufsize 100000k -r 65535/2733 -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" output100.avi' 
subprocess.check_call(cmd) 

但它ð idn't工作以及

我想知道我在做什麼wrong.I使用python 2.76.Thanks。

+0

CMD =「C:\ FFmpeg的\ BIN \ ffmpeg的-rtbufsize 100000k -r -f2733分之65535-i用於dshow音頻= 」虛擬音頻捕捉器「: video =「screen-capture-recorder」output100.avi'it not syntax error – user2408159

+1

你怎麼樣,它不工作?你得到的錯誤是什麼? – user3

+0

錯誤是Windowserror:[錯誤2]系統無法找到指定的文件,它是2種方式我試圖 – user2408159

回答

0

試試這個:

import os 
os.system(cmd) 

至於我可以告訴這個方法並不像子先進,但它做什麼它應該做的。

+0

我也試過了,也不行,謝謝反正 – user2408159

0

沒有錯誤信息,我不能說,但大多數文檔說調用可執行文件時使用「ffmpeg.exe」作爲二進制文件。此外,您還可以使ARGS一個列表,並傳遞它:

未測試

import subprocess as sp 

def get_ffmpeg_bin(): 
    ffmpeg_dir = "C:\\FFmpeg\\bin\\ffmpeg" 
    FFMPEG_BIN = os.path.join(ffmpeg_dir, "ffmpeg.exe") 
    return FFMPEG_BIN 


pipe = sp.Popen([ffmpeg_binary, "-rtbufsize", "100000k", "-r", "65535/2733", "-f", "dshow", "-i", 'audio="virtual-audio-capturer":video="screen-capture-recorder"', "output100.avi"]) 

pipe.wait() 
+0

錯誤是Windowserror:[錯誤2]系統找不到指定的文件,這與前面兩種方法的錯誤是一樣的我試圖 – user2408159

0

Windowserror:[錯誤2]即將歸因於外殼=虛假錯誤。

如果您正在運行的命令給cmd爲字符串,則必須使用shell=True

cmd='C:\FFmpeg\bin\ffmpeg -rtbufsize 100000k -r 65535/2733 -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" output100.avi' 
subprocess.check_call(cmd, shell=True) 

如果不用shell=True運行,你必須通過在cmd的列表:

cmd='C:\FFmpeg\bin\ffmpeg -rtbufsize 100000k -r 65535/2733 -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" output100.avi' 
subprocess.check_call([cmd]) 

上面的語句對於Popen和check_call函數是相同的。

+0

我仍然具有相同的error.I嘗試也分割命令這樣 – user2408159

+0

DEF call_command(命令): subprocess.check_call(command.split(」 '),殼=真) call_command(' C:\ FFmpeg \ bin \ ffmpeg -rtbufsize 100000k -r 65535/2733 -f dshow -i audio =「virtual-audio-capturer」:video =「screen-capture-recorder」output10.avi') – user2408159

+0

錯誤是文件名,目錄名稱或卷標語法不正確 – user2408159

0

用戶3幾乎是正確的,你需要通過命令字符串列表:

cmd=['C:\FFmpeg\bin\ffmpeg', '-rtbufsize', '100000k', '-r', '65535/2733', '-f', 'dshow', '-i', 'audio="virtual-audio-capturer":video="screen-capture-recorder"', 'output100.avi'] 
subprocess.check_call(cmd) 
0

我想一些電影文件轉換成音頻文件,但我無法得到的ffmpeg在Python執行,直到我明確列入路徑是這樣的:

import os 

Executable = r'C:\Users\rrabcdef\Documents\p\apps\ffmpeg\ffmpeg.exe' 
input = r'C:\Users\rrabcdef\Documents\p\myStuff\clip_1.mov' 
output = r'C:\Users\rrabcdef\Documents\p\myStuff\clip_1.mp3' 
myCommand = Executable + " -i " + input + " -f mp3 -ab 320000 -vn " + output 
os.system(myCommand)