2016-02-26 62 views
0

我使用解析傳輸音頻到我的iOS設備,我想補充一個滑塊,將監測和改變音頻的進步正在播放。滑塊控制與AVPlayer斯威夫特2

我必須使用AVPlayer流式傳輸音頻,是否有方法可以用滑塊更改音軌的進度,或者是否必須將其更改爲AVAudioPlayer格式(我不知道如何執行)?

let audioQuery = PFQuery(className: "Audio") 
audioQuery.getObjectInBackgroundWithId(IDArray[selectedPodcast], block: { 

    (object : PFObject?, error : NSError?) -> Void in 
    if let audioFileURLTemp = object?.objectForKey("AudioFile")?.url as String! { 

     audioURL = audioFileURLTemp 

     audioPlayer = AVPlayer(URL: NSURL(string: audioFileURLTemp)!) 
     audioPlayer.play() 

    } 

}) 

這是我使用的流音頻

感謝代碼!

+0

你所說的變革也意味着進展如何?你的意思是你希望能夠使用滑塊作爲擦洗器來看音軌的某些部分?如果是這樣的話,AVPlayer有一個非常準確的'seekToTime()'。你可以將它連接到你的UISlider – MikeG

+0

是的,那正是我需要的,我將如何實現它?如果你不介意給我看一些示例代碼? – user2976917

+0

我可以發表一個答案,但我現在沒有時間,非常抱歉。這是要點:在故事板或編程創建一個UISlider。如果以編程方式製作滑塊,請將滑塊連接到@IBAction或「選擇器」。只要移動滑塊,就會調用選擇器(或IBAction)。因此,在選擇器內部,您將執行audioPlayer.seekToTime(//從0到songDuration範圍內的滑塊輸入值)''。這樣,當滑塊移動時,audioPlayer將跳轉到滑塊所在的時間。注意:'seekToTime()'將CMTime作爲參數,因此您必須將#轉換爲CMTime。 – MikeG

回答

0

你必須使用:addPeriodicTimeObserverForInterval:queue:usingBlock:

我用下面的塊以播放視頻:

let sliderWidth = CGRectGetWidth(movieSlider.bounds) 
let interval = Double(movieSelected.original.duration.value * 1000)/Double(movieSelected.original.duration.timescale)/Double(sliderWidth) 
player.addPeriodicTimeObserverForInterval(CMTimeMakeWithSeconds(interval/1000, 1000), queue: nil) { (time: CMTime) -> Void in 
    self.movieSlider.value = Float(time.value)/Float(time.timescale)/Float(self.movieSelected.original.duration.value) * Float(self.movieSelected.original.duration.timescale) 
} 
+0

我得到的錯誤「AVPlayer」沒有成員「原始」 – user2976917

+0

對不起上面的代碼是從一個項目前,我在相當長的一段工作的轉儲。如前所述,這是爲了播放電影。我建議你使用AVAudioPlayer類來播放音頻。請參考鏈接:http://stackoverflow.com/questions/19638497/ios-7-simple-audio-controls-with-avaudioplayer – Santhosh

+0

我不知道如何將文件轉換爲AVAuidoPlayer,因爲該文件正在從解析流。 com,那個鏈接是Obj-C的,但是無論如何感謝 – user2976917