Post

Swift(스위프트): mp3, wav 등 소리 파일 재생하기 (스토리보드)

Swift(스위프트): mp3, wav 등 소리 파일 재생하기 (스토리보드)

Swift(스위프트): mp3 등 소리 파일 재생하기 (스토리보드)

앱에서 MP3, WAV 등 음악 파일 또는 소리 효과음 파일을 재생하려면 어떻게 해야 할까요?

방법은 아래와 같습니다.

방법

1) 뷰 컨트롤러에 import AVFoundation를 추가합니다.

1
import AVFoundation

 

2) 소리 파일을 드래그 앤 드롭으로 프로젝트 내에 추가합니다.

Finish 버튼 클릭
Finish 버튼 클릭  

3) 뷰 컨트롤러에 AVAudioPlayer 타입의 멤버 변수를 추가합니다.

1
2
3
class ViewController: UIViewController {
    private var player: AVAudioPlayer?
}

 

4) 재생 및 정지 함수를 추가합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func playSound() {
    let soundName = "파일이름"

    // forResource: 파일 이름(확장자 제외) , withExtension: 확장자(mp3, wav 등) 입력
    guard let url = Bundle.main.url(forResource: soundName, withExtension: "mp3") else {
        return
    }
    
    do {
        player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
        player?.numberOfLoops = -1
        player?.play()
    } catch let error {
        print(error.localizedDescription)
    }
}

func stopSound() {
    player?.stop()
}
  • url
    • 저장된 소리 파일의 URL을 불러옵니다.
    • forResource는 확장자를 제외한 파일 이름입니다. 예를 들어 파일 이름이 fanfare.mp3라면 "fanfare"가 파일 이름입니다.
    • withExtensionmp3, wav 등 확장자를 입력하니다.
  • AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
    • mp3 타입의 새로운 플레이어를 생성합니다. 확장자가 다르다면 mp3 대신 다른 AVFileType을 사용합니다.
    • numberOfLoops는 반복 횟수입니다. -1를 입력하면 무한 반복하며, 이 부분을 제외하거나 0을 입력하면 1번만 재생됩니다. 1을 입력하면 두 번 재생됩니다. (Apple 개발자 문서)
    • .play() 부분에서 소리가 재생됩니다.
  • player?.stop()
    • 재생중인 플레이어를 정지합니다.

 

5) 원하는 부분에 위 함수를 실행합니다. 예를 들면 버튼을 클릭했을 경우 소리가 나오게 하고 싶은 경우 버튼 이벤트 안에 playSound()를 추가합니다.

 

 

참고: 무음모드에서 소리 나오게 하기

1
2
3
4
5
6
7
// 무음모드에서 소리가 나게 하기
do {
    try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
    try AVAudioSession.sharedInstance().setActive(true)
} catch {
    // print error...
}

 

This post is licensed under CC BY 4.0 by the author.