18

着信音を再生するためのアプリを作成していますが、毎回再生された着信音の現在の時刻をミリ秒単位で知りたいです。

CMTime cTime = player_.currentTime; float currentTime = cTime.value / cTime.timescale;

ここでのcurrentTimeは、秒単位の値を取得します。正確なcurrentTime値をミリ秒単位で取得するにはどうすればよいですか?

4

3 に答える 3

58

現在の時刻を秒単位で取得する方法があります。その1000倍の時間がかかり、ミリ秒があります。

Float64 dur = CMTimeGetSeconds([player currentTime]);
Float64 durInMiliSec = 1000*dur;

悲しいことに、それをとして使用する必要があります。そうしないと、その結果をとして使用できませんfloatFloat64CMTime

于 2011-07-11T19:06:07.713 に答える
6

受け入れられた答えは詳細を失っていると思います。ミリ秒を取得するためのより正確な方法は次のとおりです。

let seconds : Double = Float64(time.value * 1000) / Float64(time.timescale)

最初に秒に変換すると、精度が低下します。

于 2015-12-02T04:52:30.683 に答える
2

CMTime.valueとCMTime.timescaleはどちらも整数であるため、コードから判断すると、結果は丸められ、正確なタイムスタンプは取得されません。代わりにCMTimeGetSecondsを試してください。

于 2011-05-12T17:28:42.267 に答える