34
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

swiftでサウンドを再生する

概要

swift4で AVAudioPlayer を使ってサウンドを再生する

環境

macOS Sierra 10.12.6
Xcode 9.2
swift4

コード

AVFoundation のインポート

ViewController.swift
import AVFoundation

ViewControllerAVAudioPlayer のインスタンスを宣言

ViewController.swift
class ViewController: UIViewController {

    var audioPlayer: AVAudioPlayer!

    // 省略
}

ViewControllerAVAudioPlayerDelegate を継承させて拡張

ViewCountrollerクラス の下に、以下のコードを追記する。

ViewController.swift
extension ViewController: AVAudioPlayerDelegate {
    func playSound(name: String) {
        guard let path = Bundle.main.path(forResource: name, ofType: "mp3") else {
            print("音源ファイルが見つかりません")
            return
        }

        do {
            // AVAudioPlayerのインスタンス化
            audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))

            // AVAudioPlayerのデリゲートをセット
            audioPlayer.delegate = self

            // 音声の再生
            audioPlayer.play()
        } catch {
        }
    }
}

再生させたいタイミングでメソッドを呼ぶ

音源ファイルがSOUND_NAME.mp3だった場合

playSound(name: "SOUND_NAME")

以上のコードで音声ファイルが再生できます。

画面load時にすぐに再生する場合のViewController全体コード

ViewController.swift


import UIKit
import AVFoundation

class ViewController: UIViewController {

    var audioPlayer: AVAudioPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        // mp3音声(SOUND.mp3)の再生
        playSound(name: "SOUND_NAME")

    }
}

extension ViewController: AVAudioPlayerDelegate {
    func playSound(name: String) {
        guard let path = Bundle.main.path(forResource: name, ofType: "mp3") else {
            print("音源ファイルが見つかりません")
            return
        }

        do {
            // AVAudioPlayerのインスタンス化
            audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))

            // AVAudioPlayerのデリゲートをセット
            audioPlayer.delegate = self

            // 音声の再生
            audioPlayer.play()
        } catch {
        }
    }
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
34
Help us understand the problem. What are the problem?