【问题标题】:Playing audio in asset library在资产库中播放音频
【发布时间】:2018-08-04 22:44:45
【问题描述】:

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

这是我的代码:

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

【问题讨论】:

    标签: ios iphone swift avfoundation


    【解决方案1】:

    但由于某种原因在捆绑包中找不到它

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

    使用 NSDataAsset 类来获取它。

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

    【讨论】:

      【解决方案2】:

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

      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)
            }
        } 
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-18
        • 1970-01-01
        • 2021-09-23
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 2019-05-26
        • 1970-01-01
        相关资源
        最近更新 更多