如何添加背景音乐

时间:2017-03-30 06:23:28

标签: ios iphone swift xcode

重复答案无法正常

import Cocoa
    import AVFoundation

    var error: NSError?

    println("Hello, Audio!")
    var url = NSURL(fileURLWithPath: "/Users/somebody/myfile.mid") // Change to a local midi file
    var midi = AVMIDIPlayer(contentsOfURL: url, soundBankURL: nil, error: &error)
    if midi == nil {
        if let e = error {
            println("AVMIDIPlayer failed: " + e.localizedDescription)
        }
    }
    midi.play(nil)
    while midi.playing {
        // Spin (yeah, that's bad!)
    }

Hello Audio The operation couldn't be completed

2 个答案:

答案 0 :(得分:1)

我对您的代码进行了一些更改,但这似乎“有效”(我们将会这样做)

首先,按照in this answer

所述,将MP3文件导入您的游乐场

然后您可以像这样使用您的文件:

import UIKit
import AVFoundation

print("Hello, Audio!")
if let url = Bundle.main.url(forResource: "drum01", withExtension: "mp3") {
    do {
        let midi = try AVMIDIPlayer(contentsOf: url, soundBankURL: nil)
        midi.play(nil)
        while midi.isPlaying {
            // Spin (yeah, that's bad!)
        }
    } catch (let error) {
        print("AVMIDIPlayer failed: " + error.localizedDescription)
    }
}

注意:

  • print代替println
  • 在Swift 3中,很多内容被重命名,一些采用&error参数的“旧”方法改为使用do try catch。因此,error已经离开您的通话,并已被try替换。
  • 上述操作会失败!您会看到错误代码-10870,可在AUComponent.h标题文件中找到,转换为:
  

kAudioUnitErr_UnknownFileType

     

如果音频设备使用外部文件作为数据源,则会返回此错误

     

如果文件无效(Apple的DLS合成器返回此错误)

所以......这让我觉得你需要做两件事之一,或者:

  1. 找到.midi文件并将其与AVMidiPlayer
  2. 一起使用
  3. 找到其他内容来播放您的文件,例如AVFilePlayerAVAudioEngine
  4. (您可以在Swift here中阅读有关错误处理的更多信息。)

    希望对你有所帮助。

答案 1 :(得分:0)

mp3文件必须位于Resources文件夹中。

你用这样的代码播放mp3(不是MIDI播放器):

if let url = Bundle.main.url(forResource: "drum01", withExtension: "mp3") {
  let player = try? AVAudioPlayer(contentsOf: url)
  player?.prepareToPlay()
  player?.play()
}