在资产库中播放音频

时间:2018-08-04 22:44:46

标签: ios iphone swift avfoundation

我正在尝试在资产库中加载/播放音频文件存储,但是由于某种原因在捆绑包中找不到该文件。

enter image description here 这是我的代码:

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找不到文件?

2 个答案:

答案 0 :(得分:3)

  

但是由于某些原因在捆绑包中找不到

因为它不在捆绑包中。它在资产目录中。

使用NSDataAsset类来获取它。

let data = NSDataAsset(name: "sound")!

答案 1 :(得分:0)

如何播放资产目录中的音频

  1. 在您的资产目录中创建一个新的“数据集”资产(不是图像资产)

  2. 将音频文件拖到上面并正确命名,例如“mySound”(避免图像资产已使用的名称)

  3. 使用上面的代码通过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)
        }
    }