Документация quicktime рекомендует следующий подход к поиску ключевого кадра:
Поиск ключевого кадра
Поиск ключевого кадра для указанного времени в фильме немного сложнее, чем поиск образца для указанного времени. Обработчик мультимедиа должен использовать атом синхронизирующей выборки и атом времени до выборки вместе, чтобы найти ключевой кадр.
Обработчик мультимедиа выполняет следующие шаги:
- Исследует атом времени до выборки, чтобы определить номер выборки, содержащий данные за указанное время.
- Сканирует атом выборки синхронизации, чтобы найти ключевой кадр, который предшествует номеру выборки, выбранному на шаге 1.
- Сканирует атом от образца к фрагменту, чтобы обнаружить, какой фрагмент содержит ключевой кадр.
- Извлекает смещение чанка из атома смещения чанка.
- Находит смещение внутри фрагмента и размер выборки, используя атом размера выборки.
источник: https://developer.apple.com/library/mac/documentation/QuickTime/qtff/QTFFChap2/qtff2.html
Это довольно запутанно, так как несколько дорожек (атом "trak") дадут разные смещения. Например, значение keyframe-sample-chunk-offset для дорожки видео будет одним значением, а для аудио — другим.
Как перевести приведенные выше инструкции в место в файле (или в атоме mdat)?