问题描述: 当使用AVAudioPlayer播放大量音频文件时,可能会遇到错误“kAudio_TooManyFilesOpenError”,导致音频播放停止。
解决方法: 这个问题通常是由于打开的文件句柄数达到系统限制引起的。为了解决这个问题,可以采取以下措施:
audioPlayerDidFinishPlaying(_:successfully:)
中调用player.release()
来释放AVAudioPlayer对象。示例代码:
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
player.release()
}
示例代码:
autoreleasepool {
let audioPlayer = try AVAudioPlayer(contentsOf: audioURL)
audioPlayer.play()
}
示例代码:
let queue = DispatchQueue(label: "com.example.audioQueue", qos: .background, attributes: .concurrent)
func playAudioFile(at url: URL) {
queue.async {
do {
let audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer.play()
// 等待音频播放完成
while audioPlayer.isPlaying {}
audioPlayer.release()
} catch {
print("Failed to play audio file: \(error)")
}
}
}
通过以上解决方法,可以有效地避免“kAudio_TooManyFilesOpenError”错误,并确保AVAudioPlayer在播放大量音频文件后正常停止播放。