Салют! Про EXIF знают все. В нём кроется многое, вплоть до температуры батарейки камеры. Полезная штука для анализа фото на предмет параметров съёмки, настроек камеры, каталогизации и пр. А вот с видео похожего по сути и нет. Конечно же, если мы не говорим о профессиональных RAW-видеокамерах. Возникла как-то необходимость срочно посмотреть с какими параметрами было сделано одно видео. Ну очень надо было. Стали смотреть, чем можно посмотреть. MediaInfo показывал честные 4К и 100 mbit/sec. EXIFTOOL с видео спасовал. FFMPEG тоже таких вещей не показывает. XML-ка, которая пишется рядом c XAVC S видео, не содержит подробностей. Единственное, чем удалось посмотреть параметры съёмки из файла и найти ошибку оператора (в каком режиме, с каким ISO, диафрагмой и выдержкой снято видео), оказалась фирменная бесплатная Sony Catalyst Browse 2018. Штука для первоначального грейдинга и просмотра хорошая, но для узкоспециализированных задач - очень громоздкая. Требует админских прав и гигабайт места для установки. Но откуда-то же она в файле эти данные берёт! Значит, можно их оттуда выцепить. После перебора кучи приложений (всё оказалось не то, кроме одного платного), чтения разной документации, мировых форумов, изучения стандартов по мета-данным видео, познавания структуры атомов потоков h264, контейнеров mp4 и ковыряния имеющихся образцов видео в HEX-редакторе таки выяснилось, что камеры Sony при записи XAVC S не просто пишут в файл мета-данные о параметрах съёмки, но пишут их к каждому кадру видео! Удалось выделить характерные блоки по 1024 байта. Но там каша Дальше осталось за малым - за скудостью документации (а её в открытом доступе почти и нет), по крупицам разбросанной то там то сям (в основном, про формат MXF) и методом наблюдений за изменением содержимого блогов в HEX-редакторе "по ходу файла" найти и расшифровать характерные "тэги". И... представляю вам приложение X-RTMD2SRT (код на Python и бинарник под Windows x64 по ссылке). Простенькое, консольное, быстрое. Пользоваться просто: в командной строке пишем имя екзешника и путь к видеофайлу (например: x_rtmd2srt.exe D:\Video\C0035.MP4) Оно читает и расшифровывает блоки покадровых мета-данных реального времени из файлов XAVC S и создаёт рядышком обычный файл субтитров (формата SRT). При запуске видеофайла в VLC или другом плеере файл субтитров автоматически подхватывается (но может потребоваться включить сабы в плеере), и поверх видео в каждый момент времени вам отображаются текущие: Текущий кадр Режим эспозиции (Auto/A/S/M) ISO (пишется только новыми моделями камер) Усиление GAIN (в отличие от ISO, пишется всеми моделями камер) Значение диафрагмы Значение выдержки Режим ББ (Авто или пресеты) Режим АФ (Авто или ручной) Дистанция фокусировки (для тех камер, которые пишут этот параметр; типа "дальномер" ) Гамма/Gamut (типа Picture Profile, для тех камер, которые это пишут. Кастомные настройки PP могут не поддерживаться) Также в покадровые мета-данные XAVC S пишутся: Координаты GPS. У камер со встроенными датчиками (ActionCam) и у камер без датчика, но с функцией Bluetooth Location Link (от смартфона) Таймкоды (free run и rec run) Дата и время каждого кадра согласно часов камеры ещё что-то, что пока расшифровать не удалось (например, предположительно альтертативный формат таймкодов с загадочным тегом kkad) Но я их вывод пока не включид или не доделал (неактивные кусочки можно найти в коде) Опционально есть аргументы командной строки: -sidecar : извлекает из файла встроенный XML с данными не-рального времени. Если у вас вдруг потерялись создаваемые камерой при записи XML-ки, но очень нужны. -muxmkv : создаёт копию видеоролика в формате MKV, но с уже встроенными субтитрами мета-данных (а не внешним файлом). Требуется, чтобы в папке с приложением был файл ffmpeg.exe Зачем это нужно? Ну, разные бывают ситуации Короче, кому интересно, пробуйте.
Спасибо за труды!Можно поинтересоваться, а чем ffprobe не угодил из того же пакета? Или он такое извлечь уже не может?
Попробуйте. Он и ffmpeg, если не ошибаюсь, лишь показывают, что в контейнере есть неизвестный поток rtmd, но не расшифровывают. mp4box поток rtmd может даже извлечь в отдельный файл. И это действительно цепочка блоков мета-данных по 1024 байта. Но опять таки - они им не расшифровываются и не интерпретируются. Если сможете выцепить ISO и выдержку для каждого кадра видео с помощью ffmprobe - подскажите как
Обновление июнь 2019! - исправлены разные баги и вылеты - добавлена расшифровка GPS информации, если она писалась в GPS файл. Вывод в файл субтитров текстовой информации (координаты, метка времени (UTC); если камера писала скорость, курс и высоту - соответственно ещё и скорость и курс) Экспорт GPS-данных в GPX файл (ключ "-gpx" в командной строке). Для использования с внешними приложениями и сервисами по визуализации GPX-треков и видеоредакторами, рисующими красивые приборные панельки (типа DashWare) Обновлён бинарник (Win 64 bit)
Пример отображения субтитров поверх видео с по-кадровой информацией о текущих параметрах съёмки (клип снят на FDR-AX700): Пример использования извлечённого GPX трека из XAVC S файла, записанного экшн-камерой HDR-AS100V, в видеоприложении DashWare (наложение овевлеев различной телеметрии, "панельки приборов", на видео). Кстати, альфы последних моделей (А9, А7*3, A6400) при привязке к телефону по функции Bluetooth Location Link, пишут GPS не только фото (позиция), но и в видеофайлы (трек).
Классная затея. Ну и кому и палево с gps;-] Хотя за авторские права нарушенные бороться может и помочь.