티스토리 뷰

카테고리 없음

[iOS]Swift 오디오 처리

필명을...뭐로해.. 2023. 4. 5. 14:56

AVAudioPlayer vs AVPlayer

  • AVAudioPlayer 백그라운드 여러개 재생, data 재생 가능하고 AVPlayer보다 간단한 오디오 재생 관련 기능만 제공한다
  • AVPlayer 실시간 스트림 기능 제공, 한 플레이어당 하나의 플레이 아이템에 대한 playback 정보를 제공하기 위해서 하나의 아이템만 재생함. (ios 버전마다 다르지만) 한 화면에서 여러개의 객체가 생성이 가능하지만(ios 버전마다 다르지만) 애플의 궁극적인 목적은 AVPlayer는 한 화면에서 하나만 생성하는게 정상적인 것으로 보이고 player에 playerItem을 교체해 주는것이 맞을것으로 보임.

AVPlayer 사용법

1.  AVPlayer 생성

// 여러 가지 재생할 때
let player = AVPlayer()

// 한가지만 재생할 때
let player = AVPlayer(url: someURL)

2. AVPlayerItem

  • AVAsset을 사용한 AVFoundation인 클래스(객체)
  • 미디어 재생 시 사용
  • AVAsset은 정적 데이터만 가지고있고 AVPlayer를 만들어서 AVPlayer를 사용해야함
let fileUrl = file.url
let asset = AVAsset(url: fileUrl)
let playerItem = AVPlayerItem(asset: asset,
                              automaticallyLoadedAssetKeys: requiredAssetKeys)

3. control

  • player.replaceCurrentItem(with: playerItem)

AVPlayer는 한가지 미디어 소스에 대한 playback만 제공하기 때문에 replaceCurrentItem을 사용해서 currentItem을 바꿉니다.currentItem은 현재 재생되는 중인 미디어

  • addPeriodicTimeObserver(forInterval:queue:using:)

현재 재생 시간에 대해 observing 함.

let interval = CMTime(seconds: 1, preferredTimescale: 1)
let timeObserverToken = player.addPeriodicTimeObserver(
                                            forInterval: interval,
                                            queue: .main,
                                            using: playTimeCallback)

 

4. AVAudioSession

싱글톤으로 제공중. 오디오 포커스를 가지고 옴

let session = AVAudioSession.sharedInstance()
  • setActive(true or false): 오디오 포커싱 잡았다 품
  • category

  • Mode
    1. default: 웬만하면 이걸로 하면 된다
    2. moviePlayback: 영상 재생 시
    3. videoRecording: 영상 녹화 시
    4. spokenAudio: for continuous spoken audio. (ex) 팟캐스트 앱은 이 모드를 사용
    5. voicePrompt: 카플레이 등을 위한 모드. for text-to-speech
  • CategoryOption
    • mixWithOthers: 다른 앱의 소리와 우리 앱 소리가 함께 들릴 수 있게 하는 옵션.
    • duckOthers: 다른앱과 우리 앱 소리가 함께 나는데 우리 앱에서 소리가 날 때는 다른 앱 소리를 살짝 죽이는 옵션.
    • interruptSpokenAudioAndMixWithOthers: mixWithOthers + 다른 앱에서 spokenAudio 가 출력될 때에만 interrupt 걸고 우리 앱이 소리를 독차지
    • allowBluetoothA2DP: 블루투스 디바이스 지원을 위한 옵션
      • playback 카테고리에서는 기본제공이지만 playAndRecord 카테고리에서는 기본이 아니기 때문에 따로 셋팅해주어야 함
    • defaultToSpeaker: 연결된 오디오 receiver가 따로 있을때(ex: 아이폰 built-in receiver, 이어폰, 카오디오 등), 그쪽이 아닌 폰 speaker로 오디오를 전달하게 해주는 옵션

5. 기타

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함