しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Swiftでmp3の音を再生する(AVFoundation)

AVFoundationを使って音を鳴らしてみました。

まずは下のようにAssets.xcassetsにmp3ファイルを追加して下さい。

f:id:llcc:20170803160440p:plain

追加したデータは、下のようにNSDataAssetを使って取り出す事ができます。

let sound = NSDataAsset(name: "sound")
sound.data // → Data型、音データが入っている

最後に、今追加したデータを再生します。
再生は下のようにAVAudioPlayerを使って行います。

import UIKit
import AVFoundation

class ViewController: UIViewController {
    var player: AVAudioPlayer?
    
    func tapBtn() {
        if let sound = NSDataAsset(name: "sound") {
            player = try? AVAudioPlayer(data: sound.data)
            player?.play() // → これで音が鳴る
        }
    }
}

注意点ですが、下のようにplayerをローカル変数として定義すると音が再生されません。
再生前に変数が開放されるためだと思われます。

import UIKit
import AVFoundation

class ViewController: UIViewController {
    func tapBtn() {
        if let sound = NSDataAsset(name: "sound") {
            let player = try? AVAudioPlayer(data: sound.data)
            player?.play()
        }
    }
}