[Swift] iOS AudioSession 녹음과 동시에 다른 오디오 믹싱하는 옵션

반응형

    AudioSession

     

    AudioSession은 싱글톤으로 구현되어 있으며 앱 오디오 세션과 앱의 인터페이스를 정의할 수 있습니다.

     

    setActive 함수는 앱이 오디오를 사용하겠다고 통보하는 기능을 하고 반대로 setDeactive는 앱이 오디오를 사용하지 않겠다고 통보합니다. 오디오 세션을 설정할때는 3가지 옵션이 있는데 각각 다음과 같습니다. 예를 들어 카플레이를 사용할 때는 모드를. voicePrompt를 사용합니다.

     

    • Category (playback, playAndRecord)
    • Mode (default)
    • Option (mixWIthOthers, duckOthers)

     

    위의 코드의 핵심은 mixWithOthers 옵션을 사용해 다른 앱과 오디오가 겹칠 때 동시에 재생한다는 것과 defaultToSpeaker와 블루투스를 위해서 allowBluetoothA3DP 옵션을 사용한다는 것입니다. 또한 카테고리는 재생과 녹음을 동시에 할 것이기 때문에 .playAndRecord 를 사용합니다. 또한 웹에서 오디오를 재생할 때 앱에서 녹음이 먼저 진행되고 있다면 앱의 마이크가 죽어버리는 문제가 있는데 그때에는 웹에서 다른 오디오 파일을 한 번 재생하고 바로 정지해야 합니다. 이는 WKWebKit 에 있는 버그로 알려져 있습니다.

     

     

    iOS 녹음 기능을 사용하면서 동시에 음악을 재생하거나 다른 미디어를 재생할 때 설정해줘야 하는 옵션은 AudioSession을 통해서 설정할 수 있습니다. 다음과 같이 카테고리를 playAndRecord로 설정하고 mixWithOthers 옵션을 추가한 후에 setActive 함수를 호출해주면 됩니다.


     

     

     또한 웹에서 음악 또는 영상 파일을 재생하는 경우에는 다음과 같이 WKWebViewConfiguration 에 mediaTypesRequiringUserActionForPlayback 값을 빈배열을 추가해줘야 합니다.


     

    참고자료

     

     

    https://wlaxhrl.tistory.com/92

     

    iOS에서의 Audio Session

    Apple의 Audio Session Documentation 을 참고하여 따로 정리해본 오디오 세션 정리글입니다. Audio Session 동작에 대한 개괄적인 설명과 play, record 등을 위한 Audio Session Setting 방법을 다룹니다. 더 상세히 공

    wlaxhrl.tistory.com

     

    https://developer.apple.com/audio/

     

    Audio - Apple Developer

    Find presentations, documentation, and development resources for working with audio on Apple Platforms.

    developer.apple.com

     

    반응형

    댓글

    Designed by JB FACTORY