簡體   English   中英

NSDate上的AVPlayer搜索播放器

[英]AVPlayer seek player at NSDate

我在hh:mm:ss的格式中具有文本為“ 00:01:30”的字符串。 我希望這次能作為我的視頻播放器的搜索時間。 意味着我想從字符串值hh:mm:ss設置'seekToTime'。 我將其轉換為NSDate formate,但無法使用它進行seeToTime。 請提出建議。 謝謝。

self.audioPlayer.timeFormat(self.audioPlayer.getCurrentAudioTime()))


   func getCurrentAudioTime(){ 
   let dur = CMTimeGetSeconds(audioPlayer.currentTime())
    let cmValue = NSTimeInterval(dur)
    let newTime = CMTimeMakeWithSeconds(value, 1)
    self.audioPlayer.seekToTime(newTime)

}

  func timeFormat(value:Double) -> NSString
   {
    let someFloat = Float(value)
    let floatvalue = lroundf(someFloat)
    let floorvalue = Double(floatvalue)

    let minutes = floor(floorvalue / 60)
    let seconds = floorvalue - (minutes * 60)

    let roundsec = Float(seconds)
    let roundmin = Float(minutes)

    let roundedSeconds = lroundf(roundsec)
    let roundedMinutes = lroundf(roundmin)

    var time : NSString!
    time = NSString.init(format:"%d:%02d", roundedMinutes,roundedSeconds)
    return time;
   }

如果將字符串轉換為CMTime格式,然后分配查找時間,則代碼如下所示,

let fileURL: NSURL = NSURL(string: timeString)!
let asset = AVURLAsset(URL: fileURL, options: nil)
let audioDuration = asset.duration
let newTime:CMTime = CMTimeGetSeconds(audioDuration)
playerVal.seekToTime(newTime)

希望它有所幫助

您可以使用以下代碼將字符串轉換為CMTime,

func seekTime(timeString:String) -> CMTime? {
    let dateFormatter = NSDateFormatter.init()
    dateFormatter.dateFormat = "HH:mm:ss"
    if let startDate = dateFormatter.dateFromString("00:00:00") {
        if let neededDate = dateFormatter.dateFromString(timeString) {
            let interval = neededDate.timeIntervalSinceDate(startDate)
            return CMTime.init(value: CMTimeValue(interval), timescale: 1)
        }
    }
    return nil;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM