3

次のコードでCMTimeを正常に作成しています:

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

MPMoviePlayerController 内のムービーの現在の位置 (元々は float 値でした) が CMTime として秒単位で返されますが、これは悪くありません。

しかし、たとえばミリ秒でこの位置を取得するにはどうすればよいですか? 「タイムスケール」をいじって 10 と 100 に設定しましたが、結果に影響はありませんでした。

前もって感謝します!

4

1 に答える 1

10

あなたが何を望んでいるのかよくわかりません。背後にあるロジックを理解してい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);

多分これはあなたが望むものですか?

于 2010-11-01T18:13:05.270 に答える