小编Oli*_*ver的帖子

AVAudioPlayerNode.scheduleFile()的completionHandler太早调用

我试图在iOS 8中使用新的AVAudioEngine.

看起来在声音文件播放完毕之前调用了player.scheduleFile()的completionHandler .

我正在使用一个长度为5s的声音文件 - 并且 - println()声音在声音结束前约1秒钟出现-Message.

我做错了什么或者我是否误解了完成握手的想法?

谢谢!


这是一些代码:

class SoundHandler {
    let engine:AVAudioEngine
    let player:AVAudioPlayerNode
    let mainMixer:AVAudioMixerNode

    init() {
        engine = AVAudioEngine()
        player = AVAudioPlayerNode()
        engine.attachNode(player)
        mainMixer = engine.mainMixerNode

        var error:NSError?
        if !engine.startAndReturnError(&error) {
            if let e = error {
                println("error \(e.localizedDescription)")
            }
        }

        engine.connect(player, to: mainMixer, format: mainMixer.outputFormatForBus(0))
    }

    func playSound() {
        var soundUrl = NSBundle.mainBundle().URLForResource("Test", withExtension: "m4a")
        var soundFile = AVAudioFile(forReading: soundUrl, error: nil)

        player.scheduleFile(soundFile, atTime: nil, completionHandler: { println("Finished!") }) …
Run Code Online (Sandbox Code Playgroud)

ios8 avaudioengine

6
推荐指数
4
解决办法
4224
查看次数

标签 统计

avaudioengine ×1

ios8 ×1