2012-06-23 5 views
-1

Мне нужно запустить две команды ffmpeg, один за другим, то есть дождаться завершения первой команды, а затем запустить вторую команду. Первая командаЗапуск двух команд ffmpeg один за другим

ffmpeg -threads 8 -i D:\imagesequence\dpx\brn_055.%04d.dpx D:\imagesequence\dpx\test2.mov 

и второй

ffmpeg -i D:/imagesequence/background.jpg -vf "movie='D\:/imagesequence/dpx/thumbnail.jpg' [watermark]; [in][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/3 [out]" D:/imagesequence/dpx/final_with_text_mod_04.jpg 

Что является лучшим способом для достижения этой цели в Python?

+1

Читали вы subprocess.call питона? (Кроме того, у вас на самом деле нет 8 ядер. Возможно, это будет быстрее, если использовать 4 потока и отключить гиперпоточность.) – rhlee

+0

может и изложить это. 8 ядер, 4 потока, гиперпоточность. есть ли место, где я могу найти информацию об этом – nish

+0

Извините, я возвращаю свой комментарий. Влияние гиперпотока на программу полностью зависит от самой программы. Google "ffmpeg hyperthreading", чтобы узнать больше. Hyperthreading (http://en.wikipedia.org/wiki/Hyper-threading) в основном, где у вас есть два логических ядра для каждого физического ядра. Это может выглядеть так, как будто у вас 8 ядер, но рабочая нагрузка разделена между 4-мя физическими ядрами. Если, конечно, у вас на самом деле нет 8 физических ядер, например. некоторые процессоры Xeon или AMD. – rhlee

ответ

2

Вам не нужно делать ничего больше, чем вызов 2 раза в команду ffmpeg с subprocess модулем питона, это уже по умолчанию

import subprocess 

execstr1 = 'ffmpeg -x -y -z ...' 
execstr2 = 'ffmpeg -a -b -c ...' 

out1 = subprocess.check_output(execstr1, shell=True) 

out2 = subprocess.check_output(execstr2, shell=True) 
+0

'a = subprocess.check_call ([" ffmpeg "," -threads "," 8 "," -i "," D: /imagesequence/background.jpg "," -vf "," movie = 'D \: /imagesequence/dpx/...... .outout] "," D: /imagesequence/dpx/brn_055.0000.dpx "], shell = True), если (a == 0): \t b = подпроцесс. check_call (["ffmpeg", "-threads", "8", "-i", "D: /imagesequence/dpx/brn_055.%04d.dpx", "-vf", "drawtext = f .... ...... tcolor = Yellow "," D: /imagesequence/dpx/test2.mov "], shell = True)' Мне нужно запускать один за другим. Является ли это возможным. Мне пришлось обрезать команду coz ограниченного пространства – nish

Смежные вопросы