使用AVAudioEngine反复播放音频文件

吉列尔莫·巴雷罗(Guillermo Barreiro)

我正在使用Swift和Xcode 6开发iOS应用。我想做的是使用AVAudioEngine播放音频文件,直到一切正常。但是,我的意思是我如何不停止播放而结束播放又重新开始?

这是我的代码:

/*==================== CONFIGURATES THE AVAUDIOENGINE ===========*/
    audioEngine.reset() //Resets any previous configuration on AudioEngine

    let audioPlayerNode = AVAudioPlayerNode() //The node that will play the actual sound
    audioEngine.attachNode(audioPlayerNode) //Attachs the node to the audioengine

    audioEngine.connect(audioPlayerNode, to: audioEngine.outputNode, format: nil) //Connects the applause playback node to the sound output
    audioPlayerNode.scheduleFile(applause.applauseFile, atTime: nil, completionHandler: nil)

    audioEngine.startAndReturnError(nil)
    audioPlayerNode.play() //Plays the sound

在说我应该为此使用AVAudioPlayer之前,我不能这样做,因为稍后我将不得不使用某些效果并同时重复播放三个音频文件。

吉列尔莫·巴雷罗(Guillermo Barreiro)

我在另一个问题中找到了解决方案,并通过@CarveDrone进行了询问并自动回答了问题,所以我刚刚复制了他使用的代码:

class aboutViewController: UIViewController {


    var audioEngine: AVAudioEngine = AVAudioEngine()
    var audioFilePlayer: AVAudioPlayerNode = AVAudioPlayerNode()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        let filePath: String = NSBundle.mainBundle().pathForResource("chimes", ofType: "wav")!
        println("\(filePath)")
        let fileURL: NSURL = NSURL(fileURLWithPath: filePath)!
        let audioFile = AVAudioFile(forReading: fileURL, error: nil)
        let audioFormat = audioFile.processingFormat
        let audioFrameCount = UInt32(audioFile.length)
        let audioFileBuffer = AVAudioPCMBuffer(PCMFormat: audioFormat, frameCapacity: audioFrameCount)
        audioFile.readIntoBuffer(audioFileBuffer, error: nil)

        var mainMixer = audioEngine.mainMixerNode
        audioEngine.attachNode(audioFilePlayer)
        audioEngine.connect(audioFilePlayer, to:mainMixer, format: audioFileBuffer.format)
        audioEngine.startAndReturnError(nil)

        audioFilePlayer.play()
        audioFilePlayer.scheduleBuffer(audioFileBuffer, atTime: nil, options:.Loops, completionHandler: nil)
    }

您唯一需要更改的是filePath常量。这是原始答案的链接:让AVAudioEngine重复播放声音

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Matlab在特定间隔播放音频文件?

来自分类Dev

使用ffplay播放音频文件列表

来自分类Dev

如何使用Matlab在特定间隔播放音频文件?

来自分类Dev

星号,如何播放音频文件

来自分类Dev

从目录快速播放音频文件

来自分类Dev

用golang播放音频文件

来自分类Dev

悬停播放音频文件

来自分类Dev

如何播放音频文件?

来自分类Dev

用力宝播放音频文件

来自分类Dev

Android播放音频文件(.wav)

来自分类Dev

Smartface:如何播放音频文件?

来自分类Dev

如何播放音频文件?

来自分类Dev

显示和播放音频文件

来自分类Dev

如何获取播放音频文件的音频路径?

来自分类Dev

如何获取播放音频文件的音频路径?

来自分类Dev

使用AVAudioEngine录制音频文件

来自分类Dev

如何使用javascript随机播放音频标签中的多个音频文件?

来自分类Dev

如何使用VoIP执行呼叫并使用Python播放音频文件?

来自分类Dev

播放音频文件数据-Spring MVC

来自分类Dev

在很短的时间后多次播放音频文件?

来自分类Dev

如何从跨平台的Haskell代码播放音频文件

来自分类Dev

在Django应用中播放音频文件?

来自分类Dev

计算播放音频文件时剩下的时间

来自分类Dev

如何在键盘按键上播放音频文件?

来自分类Dev

在WatchKit OS2中播放音频文件

来自分类Dev

播放音频文件时找不到'PathForResource'的重载

来自分类Dev

无法在Vue Web应用中播放音频文件

来自分类Dev

轻按时如何创建播放音频文件的通知?

来自分类Dev

颤动的声音无法播放音频文件