簡體   English   中英

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

[英]Python - Popen(shlex.split(command), shell=False) - not working with 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的“正確”結束行而2> /Users/me/Documents/MOVS/lofFile.txt

IO重定向由外殼提供,因此,如果您設置shell=False該命令將不會在外殼中運行,並且>2 ....將成為命令的一部分。

也許,作為一種解決方法,您可以嘗試對ffmpeg使用-report選項。 這會將日志記錄發送到根據約定ffmpeg-YYYYMMDD-HHMMSS.log命名的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM