[UIKit] AVAudioPlayer란?

Jenny·2025년 1월 21일

오디오를 실제로 녹음하거나 재생하고 컨트롤하는 역할을 하는 AVAudioRecorderAVAudioPlayer가 있다.

AVPlayer란?

AVPlayer는 플레이어의 전송 동작을 제어하기 위한 인터페이스를 제공하는 객체이다

class AVPlayer : NSObject

AVPlayer는 미디어 Assets의 재생 및 타이밍을 관리하는 컨트롤 객체이다. AVPlayer의 로컬 및 원격 파일 기반(MP3 오디오 파일, QuickTime 영화)와 HTTP 라이브 스트리밍을 사용하여 제공되는 시청각 미디어를 재생하려면 인스턴스를 사용합니다.
AVPlayer는 URL로 오디오 파일 및 영상 파일을 재생할 수 있으며 단 AVPlayer 자체에서 영상을 재생하는 기능은 제공하지 않기 떄문에 AVKit 혹은 AVPlayerLayer를 함께 사용하여 영상을 재생할 수 있다.

AVAudioPlayer

파일이나 버퍼에서 오디오를 재생하는 객체를 말합니다.

class AVAudioPlayer

AVAudioPlayer객체를 통해 시간제한 없이(Any duration) 파일(또는 버퍼)로 부터 음성파일 재생 가능하며 볼륨, 속도, 스테레오 포지셔닝(Panning), 반복 재생 기능 들을 조절 가능하다.
또한 현재 재생 정보를 제공하며(access playback-level metering data) 동시에 여러 플레이어를 통해 여러개의 음성 재생이 가능하다

AVAudioPlayer 지원 Method or Properties

오디오 재생을 위해 플레어이 준비
func prepareToPlay() -> Bool
  • True 일경우 시스템이 플레이어 준비 상태가 된 경우이며 False일 경우 플레이어 준비 상태가 안 된경우이다.
오디오 녹음일 시작하기 위한 메서드, 녹음이 중도 정지된 상태일 경우 재시작 한다.
func record() -> Bool
/// 특정 시간에 시작하여 녹음한다.
func record(atTime: TimeInterval)Bool
/// 특정 시간에 시작하여 특정 기간 까지 녹음한다.
func record(atTime: TimeInterval, forDuration: TimeInterval)Bool
오디오 녹음을 일시 중지하는 메서드
func pause()
  • stop() 메서드과 달리 재생을 일시 중지 해도 오디오는 멈춘 지점에서 재생을 다시 재개 할 수 있다.
오디오 재생을 중지하고 재생에 필요한 시스템 설정을 취소하는 메서드
func stop()
  • 해당 메서드를 실행하면 시스템에서 수행하는 리소스 할당을 취소하며 재생을 중지합니다. 때문에 prepareToPlay메서드를 다시 실행하여 다시 오디오 재생을 시작해야합니다.
녹음된 오디오 파일을 삭제하는 메서드입니다.
func deleteRecording() -> Bool
  • 해당 메서드 호출 시 True 로 반환할경우 시스템이 파일을 삭제한 경우이며, False로 반환한 경우에는 삭제하지 않은 경우 입니다.
오디오 레코더가 녹음 중인지 여부를 나타내는 Boolean입니다.
var isRecording: Bool { get }
오디오 타임라인 내의 현재 재생 시간(초)입니다.
var currentTime: TimeInterval { get set }
  • 오디오가 재생중이 아니면 currentTime 속성은 play()메서드를 호출할때 재생이 시작되는 오프셋 입니다.
  • currentTime속성을 사용하여 오디오 데이터에서 특정 시간을 검색하거나 빨리감기 및 녹음을 시작할 수 있습니다.
오디오 출력 장치 시계의 시간 값(초)입니다.
var deviceCurrentTime: TimeInterval { get set }
  • 이 속성 값은 오디오 플레이어가 재생 중이거나 일시 정지인 상태인 동안 증가됩니다.
  • 오디오 출력 장치에 두 개 이상의 오디오 플레이어를 연결하면 플레이어 중 하나 이상이 재생 중이거나 일시 정지 상태인 동안 시간이 계속 증가합니다

AVAudioRecorderDelegate

오디오 녹음 이벤트와 인코딩 오류에 대응하는 방법을 정의하는 프로토콜입니다.

protocol AVAudioRecorderDelegate : NSObjectProtocol, Sendable
녹음 중에 오디오 레코더에서 인코딩 오류가 발생했음을 대리인에게 알립니다.
optional func audioRecorderEncodeErrorDidOccur( _ recorder: AVAudioRecorder,  error: (any Error)?)
  • recorder : 인코딩 오류가 발생한 오디오 레코더입니다.
  • error 인코딩 오류에 대한 세부 정보를 제공하는 객체입니다.:
녹화가 중지되거나 시간 제한에 도달하여 종료되는 경우 이를 대표자에게 알립니다.
optional func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool)
  • recorder : 녹음을 마친 오디오 레코더입니다.
  • flag: 녹음이 성공적으로 중지되었는지 여부를 나타내는 부울 값입니다.
오디오 채널의 최대 전력을 데시벨 전체 규모(dBFS)로 반환합니다.
func peakPower(forChannel channelNumber: Int) -> Float
  • 매개 변수 channelNumber : 전력 값을 원하는 채널의 번호입니다.
  • 반환 값 : 오디오 채널의 현재 최대 전력 입니다.
오디오 플레이어의 모든 채널의 평균 및 최대 전력 값을 새로고침 합니다.
func updateMeters() -> Void
오디오 채널의 평균 전력을 데시벨 풀 스케일(dBFS)로 반환합니다.
func averagePower(forChannel channelNumber: Int) -> Float
  • 매개 변수 channelNumber : 평균 전력 값을 구하려는 채널의 번호 입니다.
  • 반환 값 : 오디오 채널의 현재 평균 전력입니다.
profile
"Jenny 있게 iOS 개발을 하며 대체 불가능한 인재가 되자"

0개의 댓글