버전
menu_open
대상 플랫폼:
Wwise SDK 2023.1.3
Wwise SDK를 이용해 오디오 세션 작업하기

Wwise SDK를 이용해 개발 오디오 앱이 쉽고 정확하게 오디오 세션을 관리하게 하기 위해서는 간단한 조치가 몇 가지 필요합니다. Wwise는 사용자들이 앱의 중요한 부분에 집중할 수 있도록 뒤에서 iOS 오디오 세션의 많은 복잡한 부분들을 처리하고 있습니다. All audio interruption and route change mechanics are already taken care of internally by Wwise and their associated callbacks are completely optional for the end user. 이 경우 사운드 엔진의 중지와 재개 또한 SDK에서 관리됩니다.

Wwise로 오디오 앱 환경 설정하기

개발 앱의 오디오 세션과 여기에 사용되는 다양한 콜백의 환경 설정을 하기 위해서는 다음을 사용합니다.

struct AkPlatformInitSettings::AkAudioSessionProperties 멤버를 사용해 eCategoryeCategoryOptions, eMode 를 원하는 오디오 세션 카테고리로 설정하고 필요에 따라 앱의 오버라이드 옵션과 모드를 설정합니다.

참고:
  • enum AkAudioSessionCategoryOptions 멤버는 복수의 카테고리 옵션을 갖도록 설정할 수 있는 비트마스크(bitmask)입니다. Integration Demo IntegrationDemoAppDelegate.mm에서 GetAudioSessionCategoryOptionBitMask() 메소드는 bool type 입력을 이용해 어떻게 마스크로 필요한 옵션을 설정/해제할 수 있는지 예시를 통해 보여주고 있습니다.

Wwise SDK 사용자 앱에 필요한 아래의 간단한 조치를 하면 iOS 오디오 세션에 온전히 호환되는 오디오 앱을 쉽게 만들 수 있습니다.

  1. 오디오 세션 카테고리를 설정하세요.
    • struct AkPlatformInitSettings.audioSession.eCategory를 원하는 값으로 설정하세요.
    • struct AkPlatformInitSettings.audioSession.eCategoryOptions를 원하는 값으로 설정하세요 (선택 사항).

  2. 중단 콜백을 등록하세요 (선택 사항).
    • struct AkPlatformInitSettings.audioCallbacks.interruptionCallback 을 사용자 지정 콜백 메소드로 설정하세요.
    • 오디오 애플리케이션의 유형과 게임 장르에 따라 사용자 중단 콜백으로 다음과 같은 많은 작업을 할 수 있습니다.
      • 리듬 게임과 같이 오디오에 의존적인 애플리케이션에서는 게임 전체를 중지시키는 데 사용됩니다.
      • 오디오 재생 애플리케이션에서는 해당 콜백을 이용해 앱 중단을 시각적으로 반영하는 데 사용됩니다.
      • '시작' 오디오 중단이 발생하면 true 로 설정된 렌더링 옵션과 함께 Wwise가 내부적으로 사운드 엔진을 중지시킵니다.
  3. 경로 변경 알림 등록하기 (선택 사항).
    • AVAudioSessionRouteChangeNotification 에 대해 iOS NotificationCenter에 등록하고 이를 위한(콜백) 선택자를 제공합니다.
    • Integration Demo 소스 코드에서 간단한 예제를 확인하세요.

참고: iOS Integration Demo IntegrationDemoAppDelegate.mm 소스 코드에서 위에서 설명한 모든 조치에 대한 예제를 확인하세요.
경고: 위에 나온 모든 조치는 AK::SoundEngine::Init( &in_initSettings, &in_platformInitSettings )로 사운드 엔진을 초기화하기 전에 마쳐야 합니다.
참고: 오직 오디오 세션 카테고리 AkAudioSessionCategoryPlayAndRecord 만이 앱의 백그라운드 상태에서 오디오를 재생하거나 녹음할 수 있습니다. 이 동작이 필요한 경우, 앱 정보 plist도 Xcode에서 수정해 'Required background modes(필요한 백그라운드 모드)' 키를 'App plays audio or streams audio/video using Airplay(앱이 Airply를 이용해 오디오를 재생하거나 오디오/비디오를 스트리밍함)' 값으로 추가합니다.

Changing the Audio Session Configuration at Runtime

To reconfigure the audio session after the sound engine has been initialized, use the AK::SoundEngine::iOS::ChangeAudioSessionProperties() API call. This is useful if, for example, your app needs microphone input temporarily and needs to switch to the Play and Record category for the duration of the recording.

참고: Changing audio session properties during runtime causes the sink to reset. Any audio playback will glitch for a fraction of a second at this time. Therefore, it is better to call this API while the app is silent.

Refer to the iOS Integration Demo DemoAppLifecycle.cpp source code for a demonstration of how this is done.

전형적인 오디오 세션 공유 시나리오

여기서는 다양한 오디오 세션 공유 시나리오에서 발생하는 호출 처리에 대한 이해를 돕기 위해, Wwise와 iOS 오디오 세션으로 애플리케이션간의 오디오를 어떻게 다루는 지 자세히 설명합니다.

  1. 개발 앱이 오디오 재생/녹음을 하는 도중 걸려온 전화를 받을 때, 그리고 이 전화가 활성화됐을 때 아무런 앱 전환이 일어나지 않는 경우:
    • 전화벨이 울리는 순간, 시스템에 의해 개발 앱 오디오 세션이 비활성화되며 (전화는 다른 앱들보다 항상 최상위 우선권이 있음) 전화 앱이 포그라운드로 옵니다.
    • Wwise SDK가 iOS로부터 '시작' 중단 알림을 받아 오디오 처리를 중지시킵니다.
    • 개발 앱 중단 콜백이 등록돼있는 경우 Wwise SDK가 이를 적절한 매개 변수로 호출합니다.
    • 또한, 등록돼 있는 오디오 경로 변경 알림을 받아서 개발 앱에게 오디오 세션 카테고리가 변경됐음을 알려줍니다.
    • 사용자가 전화를 끊거나 끝났을 때:
      • 개발 앱 오디오 세션이 재개됩니다.
      • Wwise SDK가 iOS로부터 '끝' 중단 알림을 받아 오디오 처리를 재개합니다.
      • 그런 다음, '끝' 중단 콜백이 등록돼있는 경우 개발 앱이 이를 적절한 매개 변수로 받습니다.

  2. 개발 앱이 오디오 재생/녹음을 하는 도중 걸려온 전화를 받을 때, 그리고 이 전화가 활성화됐을 때 앱 전환이 일어나는 경우:
    • 전화벨이 울리는 순간, 시스템에 의해 개발 앱 오디오 세션이 비활성화되며 (전화는 다른 앱들보다 항상 최상위 우선권이 있음) 전화 앱이 포그라운드로 옵니다.
    • Wwise SDK가 '시작' 중단 알림을 받아 오디오 처리를 중지시킵니다.
    • 개발 앱 중단 콜백이 등록돼있는 경우 Wwise SDK가 이를 적절한 매개 변수로 호출합니다.
    • 또한, 등록돼 있는 오디오 경로 변경 알림을 받아서 개발 앱에게 오디오 세션 카테고리가 변경됐음을 알려줍니다.
    • 전화를 받는 도중 사용자가 홈 버튼을 눌러 개발 앱으로 되돌아가는 경우:
      • 개발 앱 오디오 세션이 재개됩니다.
      • The Wwise SDK receives an AppDidBecomeActive notification, which will resume the audio processing.
      • If your app is using a mixable session category (Ambient or PlayAndRecord with the 'mixable' option), the Wwise SDK will mute the background music bus.
      • 어느 세션 카테고리를 사용하든, 개발 앱 오디오가 포그라운드에 있는 동안 이 오디오는 전화 앱 소리와 혼합됩니다.
    • 사용자가 수신 전화로 되돌아갈 경우:
      • Wwise SDK가 오디오 처리를 중지합니다.
  3. 다양한 세션 카테고리에서 이어폰 리모컨 조작에 따른 영향
    • 개발 앱의 환경 설정이 AkAudioSessionCategoryAmbient 카테고리를 사용하도록 돼있는 경우:
      • 이어폰에 붙어있는 리모컨 (재생/정지) 버튼을 누르면 백그라운드의 음악 앱으로부터 나오는 사용자 음악을 시작/일시정지합니다.
      • The Wwise SDK will mute and unmute the background music bus accordingly.
      • 오디오 세션 카테고리가 혼합 가능한 카테고리이기 때문에 음악 앱과 개발 앱의 소리가 혼합됩니다.
    • 개발 앱 환경 설정이 AkAudioSessionCategorySoloAmbient 카테고리를 사용하도록 돼있는 경우:
      • 이어폰에 붙어있는 리모컨의 재생 버튼을 누르면 백그라운드의 음악 앱으로부터 나오는 사용자 음악을 시작합니다.
      • 혼합 불가능 카테고리이기 때문에 개발 앱 오디오 세션이 비활성화되며 Wwise SDK가 '시작' 오디오 중단 알림을 받아 등록돼있는 사용자 중단 콜백 호출을 받습니다.
      • Wwise SDK 사운드 엔진이 내부적으로 중지됩니다.
      • 리모컨을 눌러 사용자 음악을 정지시키면 개발 앱 오디오 세션이 복구됩니다.
      • Wwise SDK 가 '끝' 소스 변경 알림을 받아 내부적으로 오디오 엔진을 재개합니다.
    • 개발 앱의 환경 설정이 AkAudioSessionCategoryPlayAndRecord 카테고리를 사용하도록 돼있는 경우:
      • By default, behavior is similar to the AkAudioSessionCategorySoloAmbient category.
      • With AkAudioSessionCategoryOptionMixWithOthers enabled, the behavior is similar to the AkAudioSessionCategoryAmbient category.

이 페이지가 도움이 되었나요?

지원이 필요하신가요?

질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!

지원 페이지를 방문해 주세요

작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.

프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.

Wwise를 시작해 보세요