LINUX.ORG.RU

convert работает странно, при задании delay время сжатия сильно увеличивается

 


0

1

Сжимаю серию *.png, это кадры с известной задержкой (3 секунды = 3000 миллисекунд). Задание задержки в принципе не должно влиять ни на длительность сжатия ни на объем результирующего файла. Однако, на деле получается совсем не так. Пишу следующую команду

convert -delay 0 -loop 0 *.png out.mp4

Отрабатывает быстро, файл более менее маленький

convert -delay 3000 -loop 0 *.png convert_out_d3000.mp4

Не дождался окончания, слишком долго.

convert -delay 1000 -loop 0 *.png convert_out_d1000.mp4

Долго, файл большой.

Что я делаю неправильно?

Вообще, там тестовые картинки и они все в точности одинаковые, т.е. сжатие, даже без потери качества, должно быть сильным. Однако, даже первый вариант намного больше ожидания.



Последнее исправление: Vahmurka (всего исправлений: 3)

Вы занимаетесь каким-то извращением. imagemagic для картинок, не для видео, вам нужен ffmpeg. Как-то так:

ffmpeg -framerate 1 -pattern_type glob -i '*.png' -c:v libx264 out.mp4

А там уже играйтсь с параметрами кодека (сжатием, макс. кол-во разностных кадров подряд и т.д.).

mky ★★★★★
()
Ответ на: комментарий от mky

В соседнем топике я играюсь с ffmpeg. В вашем примере он переписывает исходники, что совсем не нормально. Кроме того данная команда ничем принципиально не отличается от моих, только результат весит больше. Задержки кадров нет, переписывсание исходников не отключено.

Vahmurka
() автор топика

Во-первых, -delay принимает значения в сотых секунды, а не в тысячных, поэтому 3000 эквивалентно тридцати секундам, а не трём. Во-вторых, -delay не влияет на fps результирующего файла. С расчётами времени у convert какая-то муть, и выходит так, что ты пытаешься сделать файл с длительностью где-то в тысячу раз больше. Размер у него тоже будет больше.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Понятно, я тоже «вручную» посчитал секунды и подогнал длительность. А почему размер должен быть больше? По моим понятиям и по понятиям ffmpeg, mp4 не должен от этого зависеть.

Vahmurka
() автор топика
Ответ на: комментарий от Vahmurka

По моим понятиям и по понятиям ffmpeg, mp4 не должен от этого зависеть.

Число кадров в секунду остаётся тем же, но ты увеличиваешь общую продолжительность видео. Это означает, что число кадров станет больше, и соответственно место под их кодирование потребуется больше.

i-rinat ★★★★★
()
Ответ на: комментарий от Vahmurka

В соседнем топике

Ну да, на форуме ведь всего два топика и оба ваши.

В вашем примере он переписывает исходники

Ну да, в моём примере:

-pattern_type glob -i '*.png'

переписывает исходники, а в вашем ffmpeg нелогично хочет файлы запортить, вразумите где я ошибся (комментарий) нет. Магия.

Но вобще, с такими представлениями:

Опция -i указывет на входные файлЫ А выходной файл out.mp4, куда пишется сжатое видео, в конце команды. Так по спецификации

вам будет сложно. Времена первой версии юникс давно прошли, аргументы команды парсятся иначе.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.