Более быстрый способ получения количества ключевых кадров, чем "show_frames" в ffprobe?

Я делаю небольшую внутреннюю утилиту, используя ffmpg а также ffprobe, Работает нормально и делает то, что нужно: подсчитайте количество ключевых кадров в видеофайле плюс некоторые другие детали.

Увы, с большими видеофайлами это может быть использовано на это может занять много секунд для show_frames чтобы вернуться - и тогда мне нужно проанализировать дамп JSON данных фреймов и сохранить текущий счетчик всех ключевых фреймов.

Есть ли более быстрый способ? Возможно, он указан в дампе данных "поток" или "формат", и я не узнаю, как он называется? Я прошел через ffmpg а также ffprobe документы и больше ничего не нашел.

1 ответ

Решение

Для файлов MP4 и MOV вы можете получить эту информацию, прочитав содержимое поля STSS

Вы можете использовать такой инструмент, как MP4parser, который сгенерирует файл журнала с такой записью:

/moov/trak/mdia/minf/stbl/stss                              @ 0x1d7218e
  Box size: 0x74    version: 0x0    flags: 0x0
  entry_count:              0x19
    sample_number:
    0x1    0x86    0x180    0x27a    ....

Количество записей (в шестнадцатеричном формате) - это число, которое вы хотите.

Кроме того, atomicparsley также сообщит вам о местонахождении STSS в файле, и вы сможете затем прочитать его напрямую.

Другие вопросы по тегам