在 iOS 15 中,将 AVAudioPlayerNode 连接到 mainMixerNode 时多次出现“抛出 -10878”

20 avfoundation swift ios15

我在 iOS 15 上执行以下代码时遇到问题。这在模拟器和真实设备上都会发生。此外,iOS 14 上不会出现这种情况。

import AVFoundation

class MyAudio {
    let audioEngine: AVAudioEngine
    let audioFile: AVAudioFile
    let playerNode: AVAudioPlayerNode

    init() {
        audioFile = try! AVAudioFile(forReading: Bundle.main.url(forResource: "sound", withExtension: "mp3")!)
        audioEngine = AVAudioEngine()
        playerNode = AVAudioPlayerNode()
        audioEngine.attach(playerNode)
        audioEngine.connect(playerNode, to: audioEngine.mainMixerNode, format: audioFile.processingFormat)

        do {
            try audioEngine.start()
            playerNode.play()
        } catch {
            print(error.localizedDescription)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它将打印这些输出。

2021-10-02 17:29:14.534934+0900 audio-sample-2021-10-02[11337:353838] throwing -10878
2021-10-02 17:29:14.537588+0900 audio-sample-2021-10-02[11337:353838] throwing -10878
2021-10-02 17:29:14.537895+0900 audio-sample-2021-10-02[11337:353838] throwing -10878
2021-10-02 17:29:14.538194+0900 audio-sample-2021-10-02[11337:353838] throwing -10878
2021-10-02 17:29:14.538512+0900 audio-sample-2021-10-02[11337:353838] throwing -10878
2021-10-02 17:29:14.538822+0900 audio-sample-2021-10-02[11337:353838] throwing -10878
2021-10-02 17:29:14.539127+0900 audio-sample-2021-10-02[11337:353838] throwing -10878
2021-10-02 17:29:14.539434+0900 audio-sample-2021-10-02[11337:353838] throwing -10878
2021-10-02 17:29:14.539789+0900 audio-sample-2021-10-02[11337:353838] throwing -10878
Run Code Online (Sandbox Code Playgroud)

尽管出现这些错误,但可以播放声音而不会出现任何崩溃。然而,它比平常花费更多的时间进行初始化。有什么办法可以解决这个问题吗?

Vit*_*y69 6

要解决此问题,请更改为:

audioEngine.connect(playerNode, to: audioEngine.outputNode, format: audioFile.processingFormat)
Run Code Online (Sandbox Code Playgroud)

  • 知道为什么这是有效的吗?更重要的是,如果您确实想将多个节点连接到混音器,该怎么办? (8认同)