1

Я пытаюсь наложить 2 файла с помощью фильтра наложения FFmpeg рядом.

Файлы содержат разную продолжительность. Я играл с различными eof_actions и другими настройками из документации FFmpeg, но я не могу найти способ получить желаемое взаимодействие.

Я хочу, чтобы файлы воспроизводились бок о бок на черном холсте, а когда заканчивается самый короткий файл - эта область продолжает показывать "черный".

Я могу добиться правильного результата, если я установлю свой более длинный файл в качестве "основного" файла для фильтра наложения, И я установлю для eof_action значение "pass" ... Тем не менее, я хочу повторить эту команду для нескольких пар файлов и не знаю, какой файл является "самым длинным".

Есть ли способ сказать ffmpeg, чтобы установить для eof_action "пропуск" через самый длинный из двух файлов?

Вот мой текущий фильтр-граф:

-filter_complex "[0:v]setpts=PTS-STARTPTS[t1];[1:v]setpts=PTS-STARTPTS[t2]:[t2]pad=1000:500:0:0[p];[p][t1]overlay=x=500:y=0:eof_action=pass[out]" ......

... Приведенная выше команда работает именно так, как я хочу, ЕСЛИ [0:v] больше, чем [1:v]. Есть ли способ обеспечить одинаковое взаимодействие во всех случаях, установив для "eof_action" значение "проходить" через самый длинный файл вместо "основного"?

1 ответ1

2

Использование:

-filter_complex "[0:v]setpts=PTS-STARTPTS[t1];[1:v]setpts=PTS-STARTPTS[t2];[t1][t2]hstack[out]"

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .