Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Как узнать процент выполнения задачи ffmpeg?


Автор: tishaishii 16.7.2012, 12:33
Нужно узнать процент выполнения задачи ffmpeg.

Вот команда: 
Код
use IPC::Open3 ;

my $pid = open3( my $inp , my  $out , my $err , << "." ) ;
"/usr/bin/ffmpeg" -y -i "/tmp/WsvzWH8FDY.avi" -pass 1 -threads 4 -vcodec libx264 -an -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 3 -coder 1 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -framerate 29.97 "/tmp/eFo3VDG7LR.avi"
.

waitpid ( $pid , 0 );

ffmpeg не выполняется. Жалуется на то, что не может открыть поток для записи.

В начале выводится Duration в миллисекундах.
Считаю: mm = (ЧЧ*60*60+ММ*60+СС) * 100 + mm
Строчка статуса там остаётся одной и той же, только перезаписывается. Читать её в STDOUT не получается.
ffmpeg пишет логи. Там нет упомянаний о времени, но есть информация о текущем фрэйме. Перед обработкой информация о текущем фрэйме не выводится.

Как узнать процент выполнения задачи ffmpeg?

Автор: Pfailed 16.7.2012, 18:31
Цитата

Строчка статуса там остаётся одной и той же, только перезаписывается. Читать её в STDOUT не получается.


Почему не получается?

Автор: tishaishii 18.7.2012, 06:04
А вот бог его знает как там происходит с потоками.
Оказалось проще с аргументами -loglevel, -report и слушанием лог-файла с помощью IPC::open3.
Считать проценты по текущему времени кадра.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)