【Swift】Asset Catalogに保存している音声ファイルを再生する方法

MP3などの音楽ファイルをAsset Catalogに保管している場合、Bundle.main.path()でパスを取得しようとするとnilが返って来るため、別の方法で対処する必要があります。

その方法をこの記事では紹介します。

準備

まずは、Asset Catalogの中に使用したい音楽ファイルを追加しておきます。




実装方法

Asset Catalog内の音楽ファイルを再生するには次のような流れになります。

  1. AVFoundationのインポート
  2. Asset Catalog上の音楽ファイルを取得
  3. 音楽ファイルを再生するプレイヤーを生成
  4. 音楽ファイルを再生
import UIKit
import AVFoundation // ① AVFoundationをインポート 

class ViewController: UIViewController {
    
    // AVAudioPlayerのインスタンス宣言
    var audioPlayer:AVAudioPlayer!    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
        
    // 再生ボタンが押されたら実行
    @IBAction func playButtonPressed(_ sender: UIButton) {
      // ② 音楽ファイルを取得。ファイルがなければ以降の処理を中断
      guard let soundFile = NSDataAsset(name: "sample") else {
        print("Not Found")
        return
      }

      // ③ 音楽プレイヤーを生成(AVAudioPlayerのインスタンス化)
      audioPlayer = try! AVAudioPlayer(data:soundFile.data, fileTypeHint:"mp3")   

      // ④ 音楽ファイルの再生 
      audioPlayer!.play()
}

Asset Catalog上の音楽ファイルはNSDataAssetを使うことで取得ができます。

nameの項目には音楽ファイル名を記述してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA