CMTimeMake - получить меньше / больше растворенных значений, чем секунды - PullRequest
3 голосов
/ 01 ноября 2010

Я успешно делаю CMTime со следующим кодом:

endPoint = CMTimeMake([mp currentPlaybackTime], 1);

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

Но как я могу получить эту должность, например, в миллисекундах? Я играл с «шкалой времени» и установил ее на 10 и 100, но это не повлияло на результат.

Заранее спасибо!

1 Ответ

9 голосов
/ 01 ноября 2010

Я не совсем уверен, что вы хотите.Вы понимаете логику CMTime?

1.0s = 1/1s  = CMTimeMake(1, 1)
0.1s = 1/10s = CMTimeMake(1, 10)
0.2s = 1/5s  = CMTimeMake(1, 5)
0.2s = 2/10s = CMTimeMake(2, 10)
…

Другими словами, CMTimeMake(a, b) - это значение времени a/b.Таким образом, когда у вас есть значение времени с плавающей точкой:

double time1 = 0.2;
// in ms, (0.2*1000)/1000 == 200/1000 == 0.2
CMTime time2 = CMTimeMake(time1*1000, 1000);

Может быть, это то, что вы хотите?

...