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

Я звоню ffmpeg следующим образом:

ffmpeg -f image2 -r 25 -i ./sequence1/frame.%04d.png -f image2 -r 25 -itsoffset 00:00:50 -i ./sequence2/frame%05d.png -filter_complex '[0:v]pad=iw+300:ih[int];[int][1:v]overlay=1620:0[vid]' -map [vid] -c:v libx265 -crf 23 -preset slow output.mp4

К сожалению, ffmpeg, похоже, игнорирует мой аргумент -itsoffset (или я неправильно понимаю, как работает этот аргумент?) как обе последовательности начинаются в начале видео.

Идеи?

1 ответ1

0

Опция -itsoffset должна применяться, когда вход содержит метки времени. Ваши входы являются картинкой и не имеют отметки времени, поэтому опция itsoffset не влияет на них.

1-Для вашей цели:

Поток на основе изображений, который был отложен, должен быть преобразован в видеопоток: ffmpeg -f image2 -framerate 25 -i ./sequence2/frame%05d.png -c:v libx265 -crf 23 -preset slow -pix_fmt yuv420p ./sequence2/sequence2.mp4

Теперь вы можете использовать этот файл mp4 вместо второй последовательности с опцией itsoffset . ffmpeg -f image2 -r 25 -i ./sequence1/frame.%04d.png -itsoffset 00:00:50 -i ./sequence2/sequence2.mp4 -filter_complex '[0:v]pad=iw+300:ih[int];[int][1:v]overlay=1620:0[vid]' -map [vid] -c:v libx265 -crf 23 -preset slow output.mp4

2- Чтобы отметить:

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

-r и -framerate не являются одинаковыми параметрами, и в этих случаях вам лучше использовать -framerate вместо -r

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