使用subprocess.call()将参数传递给FFMPEG

时间:2018-05-08 07:55:45

标签: python ffmpeg subprocess command-line-arguments

我正在通过this answer处理一个FFMPEG问题,该命令在Windows 10命令提示符下运行正常(我只更改了输入和输出文件名):

ffmpeg -i test.mp4  -filter:v "select='gt(scene,0.4)',showinfo" -f null  - 2> test.txt

我的Python 3脚本为subprocess.call()函数提供了参数(作为列表),并且适用于许多基本的FFMPEG操作,但不是这个!它似乎在最后的null - 2> test.txt部分失败了,以下错误消息取决于我如何拆分参数:

[NULL @ 000001c7e556a3c0] [error] Unable to find a suitable output format for 'pipe:'
[error] pipe:: Invalid argument

[error] Unrecognized option '2> test.txt'.
[fatal] Error splitting the argument list: Option not found

[error] Unrecognized option '2>'.
[fatal] Error splitting the argument list: Option not found

以下是我一直在尝试的基本参数列表:

args=['C:\\Program Files\\ffmpeg\\ffmpeg.exe',
      '-i',
      'test.mp4',
      '-filter:v "select=\'gt(scene,0.4)\',showinfo"',
      '-f null',
      '-',
      '2>',
      'test.txt']

加上组合和分割最后几个元素的各种排列。

请问有人可以通过Python 3帮助我使用这些参数运行FFMPEG的正确语法吗?

非常感谢 - 我只是看不出我出错的地方:(

1 个答案:

答案 0 :(得分:0)

这并没有找到我的语法出错的底部,但以下答案为我提供了一种解决方法,主要是使用shell=True并将所有参数作为组合字符串传递: subprocess call ffmpeg (command line)

这是我最新的电话:

subprocess.call("ffmpeg -i test.mp4 -filter:v \"select='gt(scene,0.4)',showinfo\" -f null - 2> output.txt",shell=True)

感谢Pythonista Cafe的好人为我找到了一个:)