Python-Popen(shlex.split(命令),shell=False)-不适用于ffmpeg



我使用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 的"正确"端线而中断

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

也许,作为一种变通方法,您可以尝试将-report选项用于ffmpeg。这将把日志记录发送到一个根据约定ffmpeg-YYYYMMDD-HMMSS.log命名的文件。

相关内容

  • 没有找到相关文章

最新更新