2014-03-31 468 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)