【问题标题】:Slider Control with AVPlayer Swift 2使用 AVPlayer Swift 2 的滑块控制
【发布时间】:2016-02-26 21:36:49
【问题描述】:

我正在使用 Parse 将音频流式传输到我的 iOS 设备,我想添加一个滑块来监控和更改正在播放的音频的进度。

我必须使用 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()

    }

})

这是我用来流式传输音频的代码

谢谢!

【问题讨论】:

  • 改变进度是什么意思?您的意思是您希望能够将滑块用作擦洗器来查看音轨的某些部分吗?如果是这样的话,AVPlayer 有一个非常准确的seekToTime()。你可以把它连接到你的 UISlider
  • 是的,这正是我需要的,我将如何实现它?如果你不介意给我看一些示例代码?
  • 我可以发布答案,但我现在没有时间,非常抱歉。这是要点:在情节提要中或以编程方式创建 UISlider。将滑块连接到@IBAction 或selector(如果您以编程方式制作了滑块)。每当移动滑块时都会调用选择器(或 IBAction)。所以在选择器中,你会做audioPlayer.seekToTime(//input value of slider on scale from 0 thru songDuration)。这样,当滑块移动时,audioPlayer 会跳转到滑块所在的时间。注意:seekToTime() 将 CMTime 作为参数,因此您必须将 # 转换为 CMTime。
  • 非常感谢,我搞定了!

标签: swift parse-platform avaudioplayer avplayer uislider


【解决方案1】:

你必须使用: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)
}

【讨论】:

  • 我收到错误 'AVPlayer' has no member 'original'
  • 对不起,上面的代码是我很久以前从事的一个项目的转储。如前所述,它是用于播放电影的。我建议你使用 AVAudioPlayer 类来播放音频。参考链接:stackoverflow.com/questions/19638497/…
  • 我不知道如何将文件转换为 AVAuidoPlayer,因为该文件是从 Parse.com 流式传输的,并且该链接适用于 Obj-C,但无论如何谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 1970-01-01
相关资源
最近更新 更多