AVMIDIPlayer DLSBankManager::AddBank: 银行加载失败
AVMIDIPlayer DLSBankManager::AddBank: Bank load failed
当我使用 AVMIDIPlayer 播放只有一条音符消息的 MusicSequence 时。大多数时候它工作正常但有时它没有声音并记录如下:
DLSBankManager::AddBank: Bank load failed
Error Domain=com.apple.coreaudio.avfaudio Code=-10871 "(null)"
它在 iOS9 上运行良好,但是当我在 iOS10 上测试它时遇到了这个问题。
我确定 sf2 音色库文件 url 设置正确。
我将代码粘贴如下:
func playAVMIDIPlayerPreview(_ musicSequence:MusicSequence) {
guard let bankURL = Bundle.main.url(forResource: "FluidR3 GM2-2", withExtension: "sf2") else {
fatalError("soundbank file not found.")
}
var status = OSStatus(noErr)
var data:Unmanaged<CFData>?
status = MusicSequenceFileCreateData (musicSequence,
MusicSequenceFileTypeID.midiType,
MusicSequenceFileFlags.eraseFile,
480, &data)
if status != OSStatus(noErr) {
print("bad status \(status)")
}
if let md = data {
let midiData = md.takeUnretainedValue() as Data
do {
try self.midiPlayerPreview = AVMIDIPlayer(data: midiData, soundBankURL: bankURL)
} catch let error as NSError {
print("Error \(error)")
}
data?.release()
self.midiPlayerPreview?.play({ () -> Void in
self.midiPlayerPreview = nil
self.musicSequencePreview = nil
})
}
}
错误发生在这一行:
try self.midiPlayerPreview = AVMIDIPlayer(data: midiData, soundBankURL: bankURL)
尝试将全局变量 errno 设置为 0 errno = 0
,然后再使用
加载音色
try self.midiPlayerPreview = AVMIDIPlayer(data: midiData, soundBankURL: bankURL)
我们在同一时间遇到了同样的问题 。
所以我们尝试将另一个问题的修复应用到这个问题上,它成功了。
当我使用 AVMIDIPlayer 播放只有一条音符消息的 MusicSequence 时。大多数时候它工作正常但有时它没有声音并记录如下:
DLSBankManager::AddBank: Bank load failed
Error Domain=com.apple.coreaudio.avfaudio Code=-10871 "(null)"
它在 iOS9 上运行良好,但是当我在 iOS10 上测试它时遇到了这个问题。 我确定 sf2 音色库文件 url 设置正确。 我将代码粘贴如下:
func playAVMIDIPlayerPreview(_ musicSequence:MusicSequence) {
guard let bankURL = Bundle.main.url(forResource: "FluidR3 GM2-2", withExtension: "sf2") else {
fatalError("soundbank file not found.")
}
var status = OSStatus(noErr)
var data:Unmanaged<CFData>?
status = MusicSequenceFileCreateData (musicSequence,
MusicSequenceFileTypeID.midiType,
MusicSequenceFileFlags.eraseFile,
480, &data)
if status != OSStatus(noErr) {
print("bad status \(status)")
}
if let md = data {
let midiData = md.takeUnretainedValue() as Data
do {
try self.midiPlayerPreview = AVMIDIPlayer(data: midiData, soundBankURL: bankURL)
} catch let error as NSError {
print("Error \(error)")
}
data?.release()
self.midiPlayerPreview?.play({ () -> Void in
self.midiPlayerPreview = nil
self.musicSequencePreview = nil
})
}
}
错误发生在这一行:
try self.midiPlayerPreview = AVMIDIPlayer(data: midiData, soundBankURL: bankURL)
尝试将全局变量 errno 设置为 0 errno = 0
,然后再使用
try self.midiPlayerPreview = AVMIDIPlayer(data: midiData, soundBankURL: bankURL)
我们在同一时间遇到了同样的问题