2016-05-04 13 views
-1

hh:mm:ssの形式で "00:01:30"の文字列を持っています。 私はこの時間をビデオプレーヤーのシーク時間としたい。並べ替えの意味は、hh:mm:ssの文字列値から 'seekToTime'を設定したいと思います。私はこれをNSDate formateで変換しますが、これを使って見ることができません。提案してください。 ありがとうございます。NSDateのAVPlayer seek player

+0

この変換を行うためのコードを書くのは何が難しいですか? – trojanfoe

答えて

2
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; 
    } 
+0

客観的なCですか? –

+0

いいえ、その素早い言語 – Purushothaman

+0

私は客観的なCについて尋ねていました。しかし、私は解決策を得た提案に感謝します。 –

1

あなたはシーク時間を割り当て、その後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) 

は、その有用

0

を願っていた場合以下のコードを使用して文字列を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; 
}