在资产库中播放音频
Playing audio in asset library
我正在尝试 load/play 资产库中的音频文件存储,但由于某种原因无法在捆绑包中找到它。
这是我的代码:
func playAudio() {
let path = Bundle.main.path(forResource: "sound", ofType:nil)!
let url = URL(fileURLWithPath: path)
do {
sound = try AVAudioPlayer(contentsOf: url)
sound?.play()
} catch {
// do something
}
}
你们中有人知道我做错了什么吗?或者为什么 Xcode 找不到文件?
but for some reason it can not be found in the bundle
因为它不在捆绑包中。它在资产目录中。
使用 NSDataAsset class 获取它。
let data = NSDataAsset(name: "sound")!
如何播放资产目录中的音频
在您的资产目录中创建一个新的“数据集”资产(不是图像资产)
将音频文件拖到上面并正确命名,例如“mySound”(避免使用已用于图像资产的名称)
使用上面的代码通过playAudioAsset("mySound")
播放
Class MyClass {
var audioPlayer: AVAudioPlayer!
...
func playAudioAsset(_ assetName : String) {
guard let audioData = NSDataAsset(name: assetName)?.data else {
fatalError("Unable to find asset \(assetName)")
}
do {
audioPlayer = try AVAudioPlayer(data: audioData)
audioPlayer.play()
} catch {
fatalError(error.localizedDescription)
}
}
我正在尝试 load/play 资产库中的音频文件存储,但由于某种原因无法在捆绑包中找到它。
func playAudio() {
let path = Bundle.main.path(forResource: "sound", ofType:nil)!
let url = URL(fileURLWithPath: path)
do {
sound = try AVAudioPlayer(contentsOf: url)
sound?.play()
} catch {
// do something
}
}
你们中有人知道我做错了什么吗?或者为什么 Xcode 找不到文件?
but for some reason it can not be found in the bundle
因为它不在捆绑包中。它在资产目录中。
使用 NSDataAsset class 获取它。
let data = NSDataAsset(name: "sound")!
如何播放资产目录中的音频
在您的资产目录中创建一个新的“数据集”资产(不是图像资产)
将音频文件拖到上面并正确命名,例如“mySound”(避免使用已用于图像资产的名称)
使用上面的代码通过
playAudioAsset("mySound")
播放Class MyClass { var audioPlayer: AVAudioPlayer! ... func playAudioAsset(_ assetName : String) { guard let audioData = NSDataAsset(name: assetName)?.data else { fatalError("Unable to find asset \(assetName)") } do { audioPlayer = try AVAudioPlayer(data: audioData) audioPlayer.play() } catch { fatalError(error.localizedDescription) } }