gpt4 book ai didi

ios - 播放大量音频文件后,AVAudioPlayer停止播放:kAudio_TooManyFilesOpenError

转载 作者:行者123 更新时间:2023-12-03 02:30:13 29 4
gpt4 key购买 nike

我遇到了类似的问题here。根据他的发现,很明显,每个 session 可以播放多少文件是有限制的。

我尝试了作者发布的方法,但我想他的问题更多与同步播放有关。

我想要实现的是,我有大量的mp3文件(超过450个文件),我想一次播放每个文件。

这是代码:

internal class NarrationPlayer {
public var player: AVAudioPlayer?
var narrationFile = [URL]()

deinit {
print("deinit NarrationPlayer")
}

internal func initNarration() {
if player != nil {
player = nil
}
}

public func loadNarration(_ filename: String) {

if narrationFile.count >= 1 {
narrationFile.removeLast(1)
}

let url = Bundle.main.url(forResource: filename, withExtension: "mp3")

if (url == nil) {
print("Could not find file: \(filename)")
return
}

do {

narrationFile.append(url!)
var error: NSError? = nil
do {

player = try AVAudioPlayer(contentsOf: narrationFile[narrationFile.count - 1])

} catch let error1 as NSError {
error = error1
player = nil
}
if let player = player {
player.prepareToPlay()
player.volume = 1
player.play()
} else {
print("Could not create audio player: \(error!)")
}

} catch let error as NSError {
print("error retrieving data: \(error)")
}

}

internal func clearNarration() {
print("[clearNarration]")

if let player = player {
player.stop()
}
narrationFile.removeAll()
player = nil
}
}

一定数量的文件后,它将停止播放并出现以下错误:

Could not create audio player: Error Domain=NSOSStatusErrorDomain Code=-42



在应用程序达到49个文件(或任何阈值)的阈值之前,AVAudioPlayer可以正常工作,并且问题不取决于实际文件,而取决于文件的总数。自从该帖子的作者使用它以来,我也尝试过SwiftySound,但结果是相同的。

有什么方法可以清除已加载文件的内存,或者有人可以推荐我其他方式来加载和播放很多mp3文件吗?

最佳答案

我尝试了所有可以在互联网上找到的东西。

osstatus是一个很大的帮助。显然,AVAudioPlayer可以处理的音频文件的默认限制为256。

为了更改此设置,我创建了一个函数,并在AppDelegate函数中将其调用(_应用程序:UIApplication,didFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey:任何]?)

func extendAudioFileLimit() {
var limit:rlimit = rlimit()
getrlimit(RLIMIT_NOFILE, &limit)
// change this value to suit your needs
limit.rlim_cur = 500
setrlimit(RLIMIT_NOFILE, &limit)
getrlimit(RLIMIT_NOFILE, &limit)
}

关于ios - 播放大量音频文件后,AVAudioPlayer停止播放:kAudio_TooManyFilesOpenError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57813638/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com