着信音を再生するためのアプリを作成していますが、毎回再生された着信音の現在の時刻をミリ秒単位で知りたいです。
CMTime cTime = player_.currentTime; float currentTime = cTime.value/cTime.timescale;
ここでのcurrentTimeは、秒単位の値を取得します。正確なcurrentTime値をミリ秒単位で取得するにはどうすればよいですか?
現在の時刻を秒単位で取得する方法があります。その1000倍の時間を取得すると、ミリ秒が得られます。
Float64 dur = CMTimeGetSeconds([player currentTime]);
Float64 durInMiliSec = 1000*dur;
残念ながら、それをfloat
またはFloat64
として使用する必要があります。その結果をCMTime
として使用することはできません。
受け入れられた答えは詳細を失っていると思います。ミリ秒を取得するより正確な方法は次のとおりです。
let seconds : Double = Float64(time.value * 1000) / Float64(time.timescale)
最初に秒に変換すると、精度が失われます。
CMTime.valueとCMTime.timescaleはどちらも整数であるため、コードから判断すると、結果は丸められ、正確なタイムスタンプは取得されません。代わりにCMTimeGetSecondsを試してください。