1) CMTimeMake(1,10)
означает длительность 1 секунда и временной масштаб 10 или 10 кадров в секунду. Это означает, что продолжительность видео 1 с 10 кадров?
2)
CMTime lastTime=CMTimeMake(1,10);
CMTime frameTime=CMTimeMake(1, 10);
CMTime currentTime=CMTimeAdd(lastTime, frameTime)
= (2, 10)?
2 секунды видео и 10 кадров в секунду текущего времени?
CMTimeMake(1, 48)
бы выполнить блок кода каждые 1/48 секунды, т.е. 1 блок на кадрОтветы:
1)
CMTimeMake(1,10)
фактически означает значение 1 и шкалу времени 10. Они являются числителем и знаменателем, поэтому это 1/10 секунды, а не 1 секунда.2) Результат будет таким, как
CMTimeMake(2, 10)
2/10 секунды.источник
value/timescale = seconds
явно.Питер прав. Следующий код делает концепцию более понятной:
1)
Приведенный выше код дает: {3000/600 = 5.000}
Это означает, что общая продолжительность составляет 5 секунд, с 3000 кадров с временной шкалой 600 кадров в секунду.
2)
Этот дает {10000/600 = 16.667}
Это означает общую длительность 16,667 секунд, с 10000 кадрами с временной шкалой 600 кадров в секунду.
Обратите внимание на разницу между CMTimeMake (значение int64_t, временная шкала int32_t) и CMTimeMakeWithSeconds (значение Float64 секунды, предпочитаемое int32_tTimeScale)
Надеюсь, это объяснение поможет. Для дальнейших разъяснений, пожалуйста, не стесняйтесь размещать дополнительные вопросы на этот пост.
источник
setMaxRecordedDuration
нужно,preferredTimeScale
когдаframe_rate
задается иначе. Каждый просто слепо использует 600, и нет хорошего объяснения, что именно он делает.С
CMTimeMake(A, B)
вами хранится рациональное число, точная доляA / B
секундCMTimeMake(1, 4)
-> временной интервал 0,25 секундыС
CMTimeMakeWithSeconds(A, B)
вами хранятсяA
секунды до разрешенияB
шаговCMTimeMakeWithSeconds(0.25, ...)
-> временной интервал 0,25 секундыВы обычно видите
CMTimeMakeWithSeconds(time, NSEC_PER_SEC)
.NSEC_PER_SEC
Фактически означает « максимальное разрешение ».источник
Если вы хотите знать, как сделать интервал в 1 секунду (как я), это ваш ответ:
источник
Структура CMTime представляет
length of time that is stored as rational number.
CMTime, имеет значение и поле шкалы времени, а также представляет значение времени / секунды шкалы времени.См. Смотрите этот ТАК Ответ, который ясен
источник