[Swift] AVAudioPlayer iOS 오디오 wav 파일 재생하기

 Swift 오디오 재생 

 

iOS 개발을 할 때 오디오를 플레이하려면 AVFoundation을 import 해야 합니다. 우선 간단한 beep 음을 재생하기 위해서 wav 파일을 준비했습니다. 총 3개의 파일이고 시작음과 종료(성공, 실패)음이 있습니다. 다음과 같이 정의 Beep 음 타입을 정하는 BeepType이라는 enum을 하나 정의합니다. 타입은 String타입으로 정의해서 해당 타입의 문자열은 파일이름과 매칭시켜 줍니다.

enum BeepType: String {
case start = "start"
case success = "success"
case fail = "fail"
}
view raw blog1.swift hosted with ❤ by GitHub

 

 

 

이제 재생을 할 클래스를 만들고 다음과 같이 AVFoundation을 임포트 해줍니다. 또한 soundEffect라는 AVAudioPlayer 객체를 선언합니다. 아직 객체를 할당하지는 않았지만 강제 옵셔날 언래핑(!) 해서 선언합니다.

import AVFoundation
var soundEffect:AVAudioPlayer!
view raw blog2.swift hosted with ❤ by GitHub

 

 

 

다음 함수는 오디오 재생을 위한 함수입니다. 앞서 정의한 BeepType을 받아서 해당 파일이름으로 url을 생성한 뒤에 AVAudioPlayer에 콘텐츠 url을 넘겨줍니다. 그럼 새로운 객체를 생성할 수 있고 soundEffect 객체가 널이 이나리면 play 메서드를 통해 재생하게 됩니다.

func playBeep(_ type: BeepType) {
let url = Bundle.main.url(forResource: type.rawValue, withExtension: "wav")
if let url = url{
do {
soundEffect = try AVAudioPlayer(contentsOf: url)
guard let sound = soundEffect else { return }
sound.play()
} catch let error {
print(error.localizedDescription)
}
}
}
view raw blog3.swift hosted with ❤ by GitHub

 

 

 

이제 웨이브 파일을 재생하기 위해서 정의된 playBeep 함수를 실행합니다. 다음과 같이 .start enum 값을 주면 시작음을 재생합니다.

playBeep(.start)
view raw blog4.swift hosted with ❤ by GitHub

 

 

AVAudioPlayer는 wav 파일이 아닌 mp3 같은 파일도 재생이 가능합니다.

Designed by JB FACTORY