Наложение видео после установленного временного смещения с помощью FFmpeg - PullRequest
11 голосов
/ 15 ноября 2011

Я пытаюсь добавить оверлеи к входному видео с помощью ffmpeg, которые появляются через некоторое время после запуска видео.

Основной способ добавить оверлей:

ffmpeg -i in.avi -vf "movie=overlay.avi [ovl]; [in][ovl] overlay" out.avi

Но это добавляет оверлейное видео (или изображение) с начала входного видео до тех пор, пока не закончится одно из видео.

Я знаю, как сместить оверлейное видео, используя movie=overlay.avi:seek_point=1.4, но как насчет смещения входного видео?

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

Ответы [ 2 ]

10 голосов
/ 04 августа 2012

Расширение на проницательный, но умозрительный ответ arttronics , видео действительно может быть легко перекрыто с помощью флага -itsoffset.

Флаг -itsoffset работает следующим образом:

-itsoffset смещение ( вход )

Установите смещение времени ввода в секундах. [-] чч: мм: сс [.xxx] синтаксис также поддерживается. Смещение добавляется к временным меткам входных файлов. Указание положительного смещения означает, что соответствующие потоки задерживаются на смещение секунды.

(Примечание: несмотря на фразу «входной файл s », флаг фактически применяется только к входу, который следует сразу за ним. Обратите внимание также эта ошибка о смещениях, не относящихся к аудиопотокам . H / T attronics .)

Таким образом, наложение со смещением так же просто, как:

ffmpeg -i bg.avi -itsoffset 2 -i over.avi -filter_complex overlay out.avi

Работает независимо от типа контейнера.

6 голосов
/ 30 июля 2012

В соответствии с ограниченной наложенной документацией FFmpeg , процесс ожидает, что оба видео имеют одинаковые timestamp (например, 0:00:00:00) значение для синхронизации вещей, и предупреждает , если не выполнено, то avi.out будет иметь нежелательное смещение отoverlay.avi используемый видеофайл.

Однако вы можете использовать этот факт и воспользоваться им!

Вполне возможно, что есливидео overlay.avi имеет начальное значение timestamp с желаемым смещением , которое требуется для входного видео in.avi, затем видео overlay.aviсработает в том же timestamp (, предоставленном in.avi), чтобы создать ожидаемый результат для видео out.avi.

Единственная плохая новость - контейнер .avi не имеет меток времени , в отличие от .mp4 или .mkv форматов файлов, которые имеют.Вам нужно будет переключиться на формат файла, который поддерживает *timestamps*, чтобы это работало (например, overlay.mp4 или overlay.mkv) для создания окончательного выходного видеофайла .

...