【问题标题】:Audio - Jump Forward 30 Seconds音频 - 向前跳 30 秒
【发布时间】:2015-03-08 22:15:29
【问题描述】:

我有一个音频播放器,可以播放从 Core Date 检索到的音频。播放和暂停工作正常。我正在尝试实现一个“向前跳转 30 秒”按钮,并寻求任何关于我将如何去做的指针。

“播放/暂停”按钮的代码

@IBAction func playPressed(sender: AnyObject) { 

    let play = UIImage(named: "play")
    let pause = UIImage(named: "pause")
    if audioPlayer.playing {
        pauseAudioPlayer()
        audioPlayer.playing ? "\(playButton.setImage( pause, forState: UIControlState.Normal))" : "\(playButton.setImage(play , forState: UIControlState.Normal))"

    }else{
        playAudio()
        audioPlayer.playing ? "\(playButton.setImage( pause, forState: UIControlState.Normal))" : "\(playButton.setImage(play , forState: UIControlState.Normal))"
    }

}

【问题讨论】:

标签: ios swift audio avaudioplayer


【解决方案1】:

swift 3 中:

player.play()
player.currentTime=60

单位是秒 根本不需要停下来

【讨论】:

  • 这是这里唯一正确的答案。 player.play(atTime: ...) 将播放延迟一定时间。要快进 30 秒,只需执行 player.currentTime += 30
【解决方案2】:

对于 iOS,我们需要使用 CMTime。只有 CMTime 可以提供给玩家,以便从当前位置向前或向后跳跃。现在,如果播放器正在运行任何流,则可以使用播放器的 currentTime 属性获得当前流位置。

祝你好运。如果您对此有任何其他问题,请告诉我。

【讨论】:

    【解决方案3】:

    获取播放器的当前时间,加上当前时间的30s。然后使播放器在该时间播放(当前时间+30)。

    var currentTime  = player.currentTime
    player.playAtTime(currentTime + 30.0)
    

    如果你想使用滑块来改变当前时间,你可以使用player.currentTime = TimeInterval(slider.value) * player.duration来获取。

    【讨论】:

      【解决方案4】:

      这样的事情怎么样?

      @IBAction func skipForward30SecondsPressed(sender: AnyObject) {
      
          var currentTime = audioPlayer.currentTime
      
          audioPlayer.stop()
      
          audioPlayer.playAtTime(currentTime + 30.0) // plus 30 seconds
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多