AVFoundation

정성윤·2024년 1월 16일
0

Swift 이론

목록 보기
64/64

AVFoundation

캡쳐, 재생, 편집 및 export 등의 클래스를 제공

카메라 장치 제어는 카메라 입력을 위한 캡쳐 세션을 제공하고 캡쳐 디바이스를 사용해 사진/비디오 캡쳐에 대한 카메라 제어를 할 수 있음

오디오 처리는 재생/녹음/혼합 및 다양한 이펙트 적용. 시스템 오디오 상호작용은 av audio 세션을 이용해 시스템의 오디오 설정 사용 가능

AVFoundation : 시청각 에셋으로 작업하고, 카메라 장치를 컨트롤하며 오디오를 처리하고 시스템 오디오 인터렉션을 구성

IOS -> Core Framework에 속해있음

UIkit 상위에 존재하는 AVkit으로 AV Foundation을 화면 구현

1. AVAsset

시간이 지정된 시청각 미디어를 모델링
"QuickTime 동영상이나 MP3 오디오 파일과 같은 파일 기반 미디어와 HLS을 사용해 스트리밍된 미디어를 모델링"

-> 미디어에 대한 데이터 부분 : 트랙
-> 트랙 속성을 비동기적(미디어 파일: 사이즈 큼)으로 로드

2. AVPlayer

"미디어 Asset의 재생 및 타이밍을 관리하는 컨트롤러 객체"

AVPlayerQuickTime 동영상, MP3 오디오 파일 등의 로컬 및 원결 파일 기반 미디어 및 HLS를 사용해 제공되는 미디어까지 재생할 때 사용

-> AVPlayer 자체는 비시각적인 객체
-> AVKit/AVPlayerLayer와 같은 방식 사용

3. AVPlayerItem

재생 중 에셋의 타이밍 및 표현 상태를 모델링
"시간과 그에 따른 현재 미디어의 상태 정보를 가지고 있는 객체"

  • AVAsset은 그 자체로 미디어가 가진 모든 정보 포함
  • AVPlayerItem은 시간 경과에 따른 현재 상태 정보

4. AVAudioRecorder

오디오 데이터를 파일에 녹음하는 객체

  • 시스템 입력 장치를 통해 오디오 녹음
  • 중지하거나 지정된 시간이 될 때 까지 녹음
  • 녹음 일시 정지 및 재개
  • 녹음 수준 측정 데이터에 액세스

-> 음성 변조 등 고급 기능 사용을 위해서는 : AVAudioEngine 사용

주요 기능

  1. 오디오 파일 생성 및 녹음을 위한 시스템 준비 : prepareToRecord()
  2. 오디오 녹음 시작 및 재개 : record()
  3. 특정 시간부터 오디오 녹음 시작 : record(atTime: TimeInterval)
  4. 표시된 시간 동안 오디오 녹음 : record(forDuration: TimeInterval)
  5. 표시된 기간 동안 특정 시간부터 오디오 녹음 : record(atTime: TimeInterval, forDuration : TimeInterval)
  6. 오디오 녹음 일시 중지 : pause()
  7. 오디오 녹음 중지 : stop()
  8. 녹음된 오디오 파일 삭제 : deleteRecording()
  9. 녹음 중 여부 판별 변수 : isRecording: Bool

5. AVAudioPlayer

파일이나 객체에서 오디오 데이터를 플레이

  • 파일이나 버퍼에서 원하는 기간의 오디오 재생
  • 재생되는 오디오의 볼륨, 패딩, 속도 및 반복 동작 등을 제어
  • 재생 수준 측정 데이터에 액세스
  • 여러 플레이어의 재생을 동기화하여 여러 사운드를 동시 재생

"실시간으로 스트리밍하는 오디오 같은 경우 AVPlayer를, 로컬 파일들의 재생은 AVAudioPlayer를 이용"

주요 기능

  1. 오디오 재생을 위해 플레이어 준비 : prepareToplay()
  2. 오디오 비동기적으로 재생 : play()
  3. 오디오를 지정된 지점에서 시작해 비동기적 재생 : play(atTime : TimeInterval)
  4. 오디오 재생 일시 정지 : pause()
  5. 오디오 재생 중지 : stop()
  6. 오디오가 현재 재생되고 있는지에 대한 여부 판별 변수 : isPlaying: Bool
profile
이유있는 스위프트 개발자

0개의 댓글