Я хочу извлекать кадры каждые 10 секунд из видео и геотегировать эти кадры, используя дорожку GPX.

На моем компьютере с Windows 8 у меня есть инструменты для извлечения кадров (FFMPEG), установки временных меток изображений (ExifTool) и геотегирования изображений (GeoSetter).

Однако я не знаю, как скопировать метку времени из видео в метку времени захваченного кадра.

1 ответ1

1

Этот пакетный файл извлекает кадры каждые X секунд, а затем геотегирует его: https://gist.github.com/Krzysiu/345c37b08d79d5f47971167e33bb2bd3

Требуется ffmpeg и exiftool . Все настройки должны быть заполнены вручную (строки 28-68).

Как это работает внутри?

  1. Сначала он извлекает кадры, используя фильтр ffmpeg с правильными параметрами (стандартные по умолчанию не сработают)
  2. Он устанавливает одинаковую метку времени для всех извлеченных кадров *. Временная метка может быть указана вручную или любая метка / файл изменяет и создает время из видеофайла.
  3. Сдвиг по времени для каждого изображения применяется. Я использовал этот метод, так как, кажется, нет простого способа сдвинуть время в случае ручной отметки времени.
  4. Фреймы геотегируются с использованием файла gpx.

* фактически для всех файлов, соответствующих %output_directory%\%frame_prefix%*.jpg , поэтому, если вы извлекли сначала 150 кадров, а затем 100 в один и тот же каталог и с тем же префиксом, он обработает все 150 кадров, включая 101 -150 с раннего перевала.

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

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