[iOS] AVAudioPlayer Sample (효과음, 배경음 넣기)

업무를 진행하다 보면 효과음, 배경음 등을 사용해야하는 경우가 있다.

필자가 진행중인 프로젝트들은 보통 효과음, 배경음 등을 거의 사용하지 않는 업무가 많다 보니 간혹 써야할 때 다시 찾아봐야하는 경우가 있어서 이번 기회에 Sample Project 만들어서 정리 하도록 한다.







샘플 앱의 구성은 간단하게 play, pause, stop 3가지의 기능을 제공하는 형식으로 구성하였으며,

Asset, filePath 두가지 방식의 리소스 불러오는 형식을 제공하도록 샘플작업하였습니다.


#. 주의사항
AVAudioPlayer 변수는 지역변수로 설정하는 경우 함수 실행 후 ARC에 의해 초기화 되어 실행이 되지 않는 것 처럼 행동 하니 Sample 작업 하실때도 전역변수로 진행하시길 바랍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//
//  ViewController.swift
//  AVAudioPlayerSample
//
//  Created by JW_Macbook on 29/05/2019.
//  Copyright © 2019 JW_Macbook. All rights reserved.
//
import UIKit
// 1. Import AVFondation 추가하기.
import AVFoundation
class ViewController: UIViewController {
    // 2. AVAudioPlayer 변수 설정 (지역변수 설정시 ARC에 의해 함수 실행 후 바로 종료됨)
    var avPlayer = AVAudioPlayer()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // 초기화
        self.initAudio_asset()
        // self.initAudio_path()
    }
    
    // #. 오디오 실행함수. (asset 파일 사용)
    func initAudio_asset() {
        guard let sound = NSDataAsset(name: "chatVideo_asset"else {print("Asset load error"); return}
        do {
            try self.avPlayer = AVAudioPlayer(data: sound.data)
            self.avPlayer.prepareToPlay()
        } catch let error as NSError {
            print("\(error.localizedDescription)")
        }
    }
    
    // #. 오디오 실행함수. (path 파일 사용)
    func initAudio_path() {
        guard let sound = Bundle.main.path(forResource: "chatVideo_path", ofType: ".mp3"else {print("Asset load error"); return}
        do {
            try self.avPlayer = AVAudioPlayer(contentsOf: URL(fileURLWithPath: sound))
            self.avPlayer.prepareToPlay()
        } catch let error as NSError {
            print("\(error.localizedDescription)")
        }
    }
    
    //MARK:-
    //MARK: IBAction 관련.
    
    /// 1. 실행
    ///
    /// - Parameter sender:
    @IBAction func doPlay(_ sender: Any) {
        self.avPlayer.play()
    }
    
    
    /// 2. 중지
    ///
    /// - Parameter sender:
    @IBAction func doPause(_ sender: Any) {
        self.avPlayer.pause()
    }
    
    
    /// 3. 멈춤
    ///
    /// - Parameter sender:
    @IBAction func doStop(_ sender: Any) {
        self.avPlayer.stop()
    }
}
cs

댓글