Извлечение кадров из видео и установка метки времени на изображения
Я хочу извлекать кадры каждые 10 секунд из видео и геотегировать эти кадры, используя дорожку GPX.
На моем компьютере с Windows 8 у меня есть инструменты для извлечения кадров (FFMPEG), установки временных меток изображений (ExifTool) и геотегирования изображений (GeoSetter).
Однако я не знаю, как скопировать метку времени из видео в метку времени захваченного кадра.
1 ответ
Этот пакетный файл извлекает кадры каждые X секунд, а затем геотегирует его: https://gist.github.com/Krzysiu/345c37b08d79d5f47971167e33bb2bd3
Это требует ffmpeg
а также exiftool
, Все настройки должны быть заполнены вручную (строки 28-68).
Как это работает внутри?
- Сначала он извлекает кадры, используя фильтр ffmpeg с правильными параметрами (стандартные по умолчанию не сработают)
- Он устанавливает одинаковую метку времени для всех извлеченных кадров *. Временная метка может быть указана вручную или любая метка / файл изменяет и создает время из видеофайла.
- Сдвиг по времени для каждого изображения применяется. Я использовал этот метод, так как, кажется, нет простого способа сдвинуть время в случае ручной отметки времени.
- Фреймы геотегируются с использованием файла gpx.
* фактически ко всем файлам, соответствующим %output_directory%\%frame_prefix%*.jpg
Таким образом, если вы извлекли сначала 150 кадров, а затем 100 в один и тот же каталог и с тем же префиксом, он обработает все 150 кадров, включая 101-150 от предыдущего прохода.
Возможно, это можно сделать гораздо быстрее - выражение в Exiftool, которое будет умножать индекс файла на X от "кадра каждые X секунд". Я не очень хорош в выражениях Perl и Exiftool, поэтому я сделал это так.