iOS Swift AVAudioPlayer playAtTime 方法不起作用

问题描述 投票:0回答:3

我的代码非常简单,如下所示:

import UIKit
import AVFoundation

class VC: UIViewController {
    var player:AVAudioPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        let url = NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource("audioName", ofType: "mp3")!)
        do{
            try player = AVAudioPlayer(contentsOfURL: url)
            print("duration", player.duration)// duration 200
            player.prepareToPlay()
            player.playAtTime(50.0)
        }catch{

        }

    }
}

调用player.play()时,音频可以正常播放。 我不知道为什么 playAtTime 函数不起作用。 请帮忙!

ios swift avaudioplayer
3个回答
3
投票

playAtTime 在未来某个时间播放声音,相对于设备的当前时间指定。所以时间参数需要是当前设备时间加上您所需的延迟(以秒为单位):

player.playAtTime(player.currentDeviceTime + 50)

当您初始化播放器时,player.currentTime 将为 0,因此这不是要使用的属性。

Apple 文档在这里


2
投票

func playAtTime(time: NSTimeInterval) -> Bool
这个函数的目的是在未来的某个时间播放声音,基于并大于 deviceCurrentTime,我建议尝试:

player.playAtTime(player.currentTime + 50.0)


0
投票

我遇到了加里·艾伦(Gary Allen)描述的类似问题。

我发现以下应该有效:

在player.prepareToPlay()部分之后....

let currentTime = player.currentTime

let infuturetime = (currentTime ?? 0.00) + 50.0

player.currentTime = infuturetime

player.play()

我希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.