我正在創建一個用於播放鈴聲的應用程序,我想知道每次播放鈴聲的當前時間(以毫秒爲單位)。objectiveC/CMTime - 將AVPlayer.duration轉換爲毫秒
CMTime cTime = player_.currentTime; float currentTime = cTime.value/cTime.timescale;
那currentTime在這裏得到的值以秒爲單位。 如何獲得確切的currentTime值,但以毫秒爲單位?
我正在創建一個用於播放鈴聲的應用程序,我想知道每次播放鈴聲的當前時間(以毫秒爲單位)。objectiveC/CMTime - 將AVPlayer.duration轉換爲毫秒
CMTime cTime = player_.currentTime; float currentTime = cTime.value/cTime.timescale;
那currentTime在這裏得到的值以秒爲單位。 如何獲得確切的currentTime值,但以毫秒爲單位?
有一種方式來獲得當前的時間以秒計,你可以採取1000倍和療法,你有你的毫秒:
Float64 dur = CMTimeGetSeconds([player currentTime]);
Float64 durInMiliSec = 1000*dur;
可悲的是,你將不得不使用它作爲一個float
或Float64
你可以」 t使用該結果作爲CMTime
CMTime.value和CMTime.timescale都是整數,所以根據您的代碼判斷,結果會變爲四捨五入狀態,並且不會得到精確的時間戳。請嘗試CMTimeGetSeconds。
我認爲接受的答案會丟失細節。更精確的獲得毫秒的方法如下:
let seconds : Double = Float64(time.value * 1000)/Float64(time.timescale)
如果您先轉換爲秒,則會失去精度。
這是不正確的。從Apple的CMTimeGetSeconds文檔中獲得「該部分在Float64中完成,因此分數不會丟失在返回的結果中。」 – amergin 2017-08-28 17:04:23
但是我們如何在下面的函數中傳遞這個Float值呢? (BOOL)insertTimeRange:(CMTimeRange)timeRange ofTrack:(AVAssetTrack *)track atTime:(CMTime)startTime error:(NSError **)error; 因爲它將CMTime作爲參數。 – Developer 2012-12-27 12:15:46
您可以使用原始時間(以秒爲單位),並使用CMTimeMake函數創建具有該值的CMTime。 – Samssonart 2013-01-15 17:26:12