音频 - 向前跳 30 秒

Posted

技术标签:

【中文标题】音频 - 向前跳 30 秒【英文标题】:Audio - Jump Forward 30 Seconds 【发布时间】: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))"
    


【问题讨论】:

你看过这篇文章吗? ***.com/a/38658769/464016 AVPlayer seekToTime does not play at correct position的可能重复 【参考方案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

【讨论】:

以上是关于音频 - 向前跳 30 秒的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone iOS 中播放音频时在多个文件之间跳转

倒带 30 秒音频并以 2 倍速度播放

使用音频队列 iOS api 在文件中保存最后 30 秒的音频

如何使用附加模式将音频录制到现有的音频文件中?

如何播放音频文件示例

在 html5 音频元素到达播放结束前 5 秒执行 Javascript 代码