2017-07-16 38 views
0

我正在尋找解決方案,使一個功能,例如通過每一次轉發的視頻在AVPlayer視頻10%上的按鈕(10%+另外10%的下次點擊用戶點擊+另一個10%下一次點擊等)從視頻中的當前狀態。到目前爲止,我已經找到了一個seek(to:CMTimeMakeWithSeconds(seconds: Float64, preferredTimescale: Int32),但是它的每一次移動視頻的具體時間,而不是一個具體的時間。AVPlayer跳過一個特定的時間

任何建議,好嗎?

回答

1

你只需要做一些簡單的數學運算步驟,斯威夫特3就應該像這樣的:

private func skipBy(percentage: Float64) { 

    guard let durationTime = player.currentItem?.duration else { return } 

    // Percentage of duration 
    let percentageTime = CMTimeMultiplyByFloat64(durationTime, percentage) 

    guard percentageTime.isValid && percentageTime.isNumeric else { return } 

    // Percentage plust current time 
    var targetTime = player.currentTime() + percentageTime 
    targetTime = targetTime.convertScale(durationTime.timescale, method: .default) 

    // Sanity checks 
    guard targetTime.isValid && targetTime.isNumeric else { return } 

    if targetTime > durationTime { 
     targetTime = durationTime // seek to end 
    } 

    player.seek(to: targetTime) 
} 

對於AVPlayer行動的一個很好的例子,看到了開源社區開發的,非官方WWDC app