2013-05-18 5 views
3

Я смотрел документацию, связанную с созданием CMTime. Все функции (CMTimeMake(), CMTimeMakeWithSeconds() и т. Д.) Принимают второй параметр, называемый preferredTimeSale.Какова временная шкала CMTime?

Может кто-нибудь объяснить мне, что это такое, и почему он указан таким образом?

+0

Вы смотрели на [ «CMTime представляет собой отрезок времени»] (http://developer.apple.com/library/mac/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/05_MediaRepresentations.html#// apple_ref/doc/uid/TP40010188-CH2-SW8) в документе AVFoundation? –

ответ

6

Согласно opening paragraphs of Apple's CMTime documentation:

CMTime представлен в виде рационального числа, с числителе (значение int64_t), а знаменатель (An int32_t шкалы времени). Понятно, что временной интервал определяет долю секунды, которую занимает единица измерения в числителе. Таким образом, если временной интервал равен 4, каждый блок представляет четверть секунды; если временная шкала равна 10, каждая единица представляет собой десятую часть секунды и так далее. В дополнение к простому значению времени , CMTime может представлять нечисловые значения: + бесконечность, - бесконечность и неопределенный. Использование флага CMTime указывает, было ли время округлено в какой-то момент.

Таким образом, если временная шкала равна 4, каждая единица измерения времени составляет одну четверть секунды.

Если ваш временной интервал равен 1, то каждая единица измерения времени составляет одну секунду (но это может быть довольно медленная анимация для вашего пользователя).

Many video formats use a timescale of 600:

Вы часто используют временную шкалу 600, так как это является общим кратным нескольких часто используемых каркасных ставок: 24 кадров в секунду (FPS) для пленки, 30 кадров в секунду для NTSC (используется для телевидения в Северной Америке и Японии) и 25 fps для PAL (используется для телевидения в Европе). Используя временные рамки 600, вы можете точно представлять любое количество кадров в этих системах.

+0

Временные рамки 1 на самом деле не так уж необычны. По моему опыту, 0/1 - это начальное текущее время игрока и (по крайней мере, на Lion) значение 'kCMTimeZero'. –

Смежные вопросы