Команда ffmpeg генерирует никогда не останавливается

Я накладываю 2 серии изображений на видео, но команда никогда не останавливает выполнение, пока не произойдет принудительная остановка II, моя команда будет такой, как показано ниже

    ffmpeg -y -i vid.mp4 -loop 1 -i img_%d.png -loop 1 -i img1_%d.png -strict -2 -filter_complex "[0:v][1:v]overlay=0:0 [tmp];[tmp][2:v] overlay=50:50:shortest=1:enable='between(t,1,5)'"-codec:a copy out.mp4

Я не понимаю, где ошибка в команде, она просто выполняется вечно, предположим, что я даю 3-минутное видео в качестве ввода, а затем вывод команды outpot через 3 минуты, например, 4 минуты и более, и никогда не останавливает выполнение

1 ответ

Решение

Вам нужно добавить shortest=1 к вашему первому наложению, потому что [1:v] имеет бесконечную продолжительность из-за использования -loop 1:

ffmpeg -y -i vid.mp4 -loop 1 -i img_%d.png -loop 1 -i img1_%d.png -filter_complex \
"[0:v][1:v]overlay=shortest=1[tmp]; \
 [tmp][2:v]overlay=50:50:shortest=1:enable='between(t,1,5)',format=yuv420p" \
-codec:a copy out.mp4
  • Я удалил 0:0 из вашего первого наложения, потому что это значения по умолчанию для x а также y размещение.

  • Я удалил -strict -2 потому что я не вижу здесь использования экспериментальных энкодеров.

  • я добавил format=yuv420p в конце вашего фильтра-графика убедитесь, что для вывода H.264 используется субдискретизация цветности YUV 4:2:0, поэтому он будет воспроизводиться в QuickTime, WMP и других поврежденных проигрывателях.

Другие вопросы по тегам