FFMPEG, извлечь первый кадр и удерживать 5 секунд

Я пытаюсь наложить 15-секундный видеопереход на начало последовательности изображений (последовательность png с альфа-каналом, чтобы показать изображение ниже), что я могу сделать с фильтром наложения. Но я хочу удерживать первый кадр последовательности изображений в течение 5 секунд перед воспроизведением анимации. Я пробовал обрезать / выбирать, но я не могу получить продолжительность 5 секунд, я также не могу соединить его с другим видео, чтобы выполнить переход. Итак, мои вопросы:

  1. Как мне получить первый кадр и удерживать его в течение 5 секунд, метод ниже работает, но не кажется лучшим методом?

-start_number 501 -framerate 30 -t 60.0 -i input1.%04d.jpg -framerate 30 -t 15.0 -i transition1_%03d.png -filter_complex "color=c=red:d=5:s=480x270:r=30 [bg]; [bg][1:v]overlay[transhold]; [0:v][transhold]overlay=repeatlast=0[out]"

  1. Могу ли я тогда легко сопоставить это с оригиналом или лучше сделать два наложения со смещением начала фактического перехода на длину удержания?

Спасибо

Ник

Для второго вопроса мой код будет выглядеть так: -start_number 501 -framerate 30 -t 60.0 -i input1.%04d.jpg -framerate 30 -t 15.0 -i transition1_%03d.png -filter_complex "color=c=red: d=5:s=480x270:r=30[bg]; [1:v]split[trans][transhold]; [trans]setpts=PTS+5/TB[trans];[transhold]select=eq(n \0)[transhold];[bg][transhold]оверлей[transhold]; [0:v][transhold]overlay=repeatlast=0[tmp1]; [tmp1][trans]overlay[out]"

Ответы (1)

Использовать

ffmpeg -start_number 501 -framerate 30 -t 60.0 -i input1.%04d.jpg 
       -framerate 30 -t 15.0 -i transition1_%03d.png
       -filter_complex "[0]loop=149:1:0[bgheld5];
                        [1]loop=149:1:0[fgheld5];
                        [bgheld5][fgheld5]overlay=eof_action=pass"  out.mp4

Первые кадры обеих последовательностей повторяются 149 раз, так что получается 150 экземпляров (30 кадров в секунду x 5 с). Конец 0цикла — это начальный индекс кадра(ов) для цикла. Середина 1- это количество кадров для цикла, начиная с индекса в 3-м аргументе.

Отлично, это почти то, что я искал. Единственная разница в том, что мне не нужно зацикливать первый ввод, поэтому мой фильтр "[1]loop=149:1:0[trans];[0][trans]overlay=eof_action=pass"