Swift Audio : 오디오 관련 프레임워크를 알아보자

나우리·2024년 10월 24일

Swift

목록 보기
7/13

AVFaudio를 활용하여 녹음하고, 재생하고, progressbar를 처리하는 등 간단한 기능을 만들면서 배운점을 기록하고자 한다.

AVFoundation과 AVFaudio의 차이점

처음부터 헷갈렸던 점은 AVFoundation과 AVFaudio의 차이점이었다.
swift로 녹음기를 만든다고 할 때 AVFoundation을 활용한 코드나 작성 내용이 주로 보였기 때문에 프레임워크 설정없이 작업할 때 자동으로 추가할 때 추천하는 AVFaudio 프레임워크는 무엇인지 궁금했다.

간단히 설명하자면, AVFoundation은 음악, 영상 등 미디어를 처리할 수 있는 프레임워크이다.
그 중 audio 관련 기능만 모아둔 프레임워크가 AVFaudio 프레임워크이다.

만약 영상 같은 시각적 처리가 필요없이 오직 재생 및 녹음만 필요하다면 비교적 큰 프레임워크인 AVFoundation보다는 AVFaudio를 선언하여 효율적으로 사용할 수 있다.

AVFoundation의 구조

(이미지 출처 : avfoundation programming guide)

AVFoundation의 구조는 다음과 같다.
따로 떼어진 Audio-only Classes가 AVFaudio로 분리되어있다.

AVFoundation은 core Audio, core Media, Core animation를 기반으로 조금 더 모듈화되고, 사용자가 편하게 사용할 수 있는 프레임워크이다.

AVKit은 그 중 영상 처리를 위해 인터페이스를 구축해놓은 프레임워크인데, 영상 재생앱을 만들고자 할 경우 조금 더 간단하고, 자동으로 최신 OS 기능을 수용할 수 있다.

커스텀이 필요한 경우 AVFoundation을 쓰는 게 맞다.
기본 UI가 제공되진 않지만 메타데이터나 자막을 읽어서 별도 처리를 하거나, 재생 중 미디어 샘플의 실시간 처리가 가능하다고 한다.

영상 편집 기능을 만들려면 AVKit 대신 AVFoundation이나 그 아래 있는 Core 프레임워크를 활용해야 할 듯하다.
그리고 영상이 아닌 오디오 녹음 및 처리를 위해서는 역시 AVFoundation을 활용해야 했다.

오디오 처리를 위한 프레임워크

오디오 처리를 위한 프레임워크는 찾아본 바에 의하면 3가지 정도가 있었다.

  • AVFaudio (AVFoundation 내)
  • Core Audio
  • AudioKit

AudioKit의 경우 조금 더 사용이 편했고 다양한 오디오 시각화도 기본적으로 제공하는 듯했다. 관련 소스코드도 다양했지만 오픈 소스기반 프레임워크이고, apple이 관리하는 프레임워크는 아니었다.

이번 프로젝트에는 비교적 공식 프레임워크를 써보고 싶었기 때문에 자세히 조사해보진 않았다.
audiokit documentation
나중에 공식 문서를 읽어보면 좋을 듯하다.

AVFAudio와 Core Audio의 차이

공식문서를 읽어봤을 때 바로 느껴지는 가장 큰 차이점은 core audio의 경우 하드웨어에 직접 접근이 가능한 것이었다.
하드웨어에 직접 접근해 샘플 레이트, 채널 수, 버퍼 크기 등을 자유롭게 설정할 수 있는 듯하다. 이런 기능을 생각해볼 때 정말 오디오가 끊김없이 이어지고, 다른 오디오와 맞물려 동작할 때 지연없이, 혹은 지연처리를 완벽히 제어하려면 이를 활용하는 게 좋을 듯했다.

audio 스트리밍을 하는 팟캐스트 앱 등을 만든다면 core Audio를 활용하여 최적화하는 게 필요하지 않을까?

다만 하드웨어까지 제어하려면 상당히 숙련되어야 할 것 같다.
현재 녹음과 재생 처리를 할 때는 core Audio정도의 저수준 프레임워크보다는 상대적으로 간편한 AVFaudio를 활용하는 게 좋을 것 같다고 판단했다.

다음 글에서는 개인적으로 AVFaudio 프레임워크의 class와 func들을 살펴보고자 한다.

<참고자료>

AVFoundation Programming Guide
AVFaudio Documentation
Core Audio Documentation

profile
왕초보 개발일지

0개의 댓글