Ffmpeg map和filter_complex子进程 - Python

时间:2015-12-04 14:50:52

标签: python shell ffmpeg

我想使用子进程从python中通过ffmpeg裁剪和重新编码视频。

我使用纯字符串命令和shell = True管理启动子进程,但我想构建更复杂的命令,并且更喜欢使用shell = False并传递参数列表。

这样的形式是什么(这是一个简化的例子,最终版本中会有多个流):

import subprocess as sp

sp.Popen('ffmpeg.exe -i Test.avi -filter_complex "[0:v]crop=1024:1024:0:0[out1]" -map [out1] out1.mp4', shell=True)

此脚本生成预期的裁剪输出视频。

对于参数列表,我试过:

FFMPEG_PATH = 'ffmpeg.exe'
aviP='Test.avi'
sp.Popen([FFMPEG_PATH,
'-i', aviP,
'-filter_complex', '[0:v]crop=1024:1024:0:0[out1]',
'-map', '[out1] out1.mp4'])

当我执行第二个版本时,根本没有任何反应。 (没有错误,没有输出)

我怀疑我在使用map命令语法搞乱了什么?

1 个答案:

答案 0 :(得分:0)

我想我明白了:

FFMPEG_PATH = 'ffmpeg.exe'
aviP='Test.avi'
sp.Popen([FFMPEG_PATH,
'-i', aviP,
'-filter_complex', '[0:v]crop=1024:1024:0:0[out1]',
'-map', '[out1]', 'out1.mp4'])

是正确的语法