поиск ключевого кадра в mdat

Документация quicktime рекомендует следующий подход к поиску ключевого кадра:

Поиск ключевого кадра

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

Обработчик мультимедиа выполняет следующие шаги:

  1. Исследует атом времени до выборки, чтобы определить номер выборки, содержащий данные за указанное время.
  2. Сканирует атом выборки синхронизации, чтобы найти ключевой кадр, который предшествует номеру выборки, выбранному на шаге 1.
  3. Сканирует атом от образца к фрагменту, чтобы обнаружить, какой фрагмент содержит ключевой кадр.
  4. Извлекает смещение чанка из атома смещения чанка.
  5. Находит смещение внутри фрагмента и размер выборки, используя атом размера выборки.

источник: https://developer.apple.com/library/mac/documentation/QuickTime/qtff/QTFFChap2/qtff2.html

Это довольно запутанно, так как несколько дорожек (атом "trak") дадут разные смещения. Например, значение keyframe-sample-chunk-offset для дорожки видео будет одним значением, а для аудио — другим.

Как перевести приведенные выше инструкции в место в файле (или в атоме mdat)?


person davidkomer    schedule 17.02.2014    source источник


Ответы (1)


Это не ограничивается ключевыми кадрами. В общем случае вы не можете гарантировать, что семплы для разных треков будут близки друг к другу в файле. Вы надеетесь, что аудио и видео будут чередоваться, чтобы вы могли воспроизводить фильм без чрезмерного поиска, но это зависит от программного обеспечения, создавшего файл. Каждая дорожка имеет свою собственную таблицу сэмплов и атомы фрагментов, которые говорят вам, где находятся сэмплы в файле, и они могут быть где угодно. (Они могут быть даже в другом файле, хотя эталонные фильмы в настоящее время устарели, поэтому вы, вероятно, можете их игнорировать.)

person Rolf    schedule 18.02.2014
comment
Спасибо, rolf- правда ли, что ключевой кадр для выборки в видеодорожке будет соответствовать смещению для iframe (например, для его поиска используется ffprobe)? - person davidkomer; 18.02.2014