0
我想通過使用子流程在python中通過ffmpeg裁剪和重新編碼視頻。Ffmpeg映射和filter_complex子流程 - Python
我管理使用純字符串命令啓動子進程,並且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'])
當我執行這個第二個版本,根本沒有任何反應。 (沒有錯誤,沒有輸出)
我懷疑我搞亂了地圖命令語法中的東西?
看一看https://docs.python.org/2/library/subprocess.html#subprocess.check_output –
我得到這個輸出 - 它對我沒有提示嗎?!:CalledProcessError:Command'['ffmpeg.exe','-i','C:/Users/jlarsch/Desktop/x264Test.avi','-filter_complex', '[0:v] crop = 1024:1024:0:0 [out1]','-map','[out1] out1.mp4']'返回非零退出狀態 – jlarsch
您是否使用過'check_call'?使用'check_output'也會給你stderr。 –