Python - Popen(shlex.split(command),shell = False) - 不使用ffmpeg

时间:2014-10-01 05:12:34

标签: python ffmpeg popen shlex

我使用Popen(shlex.split(command)运行ffmpeg命令,该命令从quicktime mov文件中保存wav文件,同时还保存ffmpeg日志文件。如果我用这个:

command = './ffmpeg/ffmpeg -i /Users/me/Documents/MOVS/source.mov -map 0:1 -acodec pcm_s16le -y /Users/me/Documents/MOVS/source_01.wav'

p = Popen(shlex.split(command), shell=False)

然后命令正确完成,但是如果我添加了保存日志文件的行,那么它就不再有效了,所以如果我使用:

command = './ffmpeg/ffmpeg -i /Users/me/Documents/MOVS/source.mov -map 0:1 -acodec pcm_s16le -y /Users/me/Documents/MOVS/source_01.wav 2> /Users/me/Documents/MOVS/lofFile.txt'

p = Popen(shlex.split(command), shell=False)

然后它不再有效。在命令行中使用任一命令,没有python,工作正常。如果我只是使用:

p = Popen(command, shell=True)

然后一切正常,但出于其他原因我需要使用shell=False

我只是无法通过添加2> /Users/me/Documents/MOVS/lofFile.txt

的'正确'结束行来理解它为什么会中断

1 个答案:

答案 0 :(得分:3)

IO重定向由shell提供,因此,如果设置shell=False,则命令不会在shell中运行,>2 ....将构成命令的一部分。

或许,作为解决方法,您可以尝试使用-report选项ffmpeg。这会将日志记录发送到根据约定ffmpeg-YYYYMMDD-HHMMSS.log命名的文件。