Peter is right. Следующий код делает концепцию более четкое:
1)
Float64 seconds = 5;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMakeWithSeconds(seconds, preferredTimeScale);
CMTimeShow(inTime);
Приведенный выше код дает: {3000/600 = 5,000}
Это означает общую длительность 5 секунд, с 3000 кадров со шкалой 600 кадров в секунду.
2)
int64_t value = 10000;
int32_t preferredTimeScale = 600;
CMTime inTime = CMTimeMake(value, preferredTimeScale);
CMTimeShow(inTime);
Это одно дает {10000/600 = 16,667}
Это означает общую длительность 16,667 секунды, 10000 кадров с временной шкалой 600 кадров в секунду.
Обратите внимание на разницу между CMTimeMake (int64_t значения, int32_t временной шкалой) и CMTimeMakeWithSeconds (Float64 секунд, int32_t preferredTimeScale)
Надеется, что это объяснение помогает. Для получения дополнительных разъяснений, пожалуйста, не стесняйтесь публиковать дополнительные вопросы по этому сообщению.
если ваше видео 48 FPS (кадров в секунду), тогда вы легко выполнили бы «CMTimeMake (1, 48)» для запуска блока кода каждые 1/48 секунды, т.е. 1 блок за кадр – Honey