我有以下Swift操场代码,可使用AVAudioPlayerNode播放音频文件。
import AVFoundation
import Foundation
NSSetUncaughtExceptionHandler { exception in
print("Exception thrown: \(exception)")
}
var filePath = "/Users/fractor/Desktop/TestFile.mp3"
let file : AVAudioFile
do {
file = try AVAudioFile(forReading: URL(fileURLWithPath: filePath))
} catch let error {
print(error.localizedDescription)
throw error
}
let audioEngine = AVAudioEngine()
let playerNode = AVAudioPlayerNode()
audioEngine.attach(playerNode)
audioEngine.connect(playerNode, to: audioEngine.outputNode, format: file.processingFormat);
do {
try audioEngine.start()
} catch let error {
print(error.localizedDescription)
throw error
}
playerNode.scheduleFile(file, at: nil){}
playerNode.play();
当使用内置扬声器或连接到UE Wonderboom蓝牙扬声器时,这在我的Mac mini上可以正常工作。但是,当连接到UE Boom 2蓝牙扬声器时,它会失败并发生异常。
我尝试使用的所有扬声器(包括UE Boom 2)使用AVAudioPlayer
都可以正常工作。
异常消息是“引擎未运行时玩家开始播放”,但是插入打印命令表明引擎在调用playerNode.play()
之前正在运行。
这是堆栈跟踪的一部分。
在这种情况下EXC_BAD_INSTRUCTION表示什么?
AVAudioPlayer
对于我正在开发的应用程序还不够。问题是什么? AVAudioPlayerNode
是否需要某些扬声器驱动程序的支持与AVAudioPlayer
需要的支持不同?有没有一种方法可以进一步诊断?我还能做些其他事情吗?还是需要与扬声器制造商取得联系?