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

标签 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 的“正确”结束行而中断

最佳答案

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

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

关于Python - Popen(shlex.split(command), shell=False) - 不适用于 ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26134520/

相关文章:

python - 具有 (x,y) 坐标列表的多边形区域

python - 如何使函数定期运行特定持续时间

python 美丽汤 ascii 错误

ffmpeg - ffmpeg的UDP协议(protocol)是什么?

python - 如何通过 CUDA 支持将 BGR NumPy 数组直接传递到 FFMPEG

python - Pandas 高效 VWAP 计算

3d - 如何使用 FFmpeg 将上下 3d 视频转换为并排 3d 视频

c++ - FFmpeg 阻塞管道直到完成?

python - 为什么矢量化的 numpy 方法在 python ssh 子进程中只使用一个核心

python subprocess.Popen stdin.write