macOS는 왜 시스템 사운드 공유를 막을까 (그리고 30초 만에 끝나는 해결책)
Zoom 통화 중에 YouTube 영상을 모두에게 들려주려고 재생 버튼을 눌렀더니, 참가자들에게는 아무 소리도 들리지 않습니다. 또는 QuickTime으로 화면을 녹화했더니 완성된 영상에 시스템 사운드 없이 적막만 흐릅니다. 시스템 설정을 뒤져보고, Zoom의 오디오 옵션을 확인하고, QuickTime 메뉴를 들춰봐도 답이 없습니다.
이는 버그가 아닙니다. Apple의 의도적인 설계 결정입니다. macOS는 단순히 앱이 컴퓨터에서 재생 중인 오디오를 캡처하도록 허용하지 않습니다. Windows에서는 잘 되는 일이 왜 Mac에서는 불가능하게 느껴지는지 궁금하셨다면, 그 내부 사정은 다음과 같습니다.
macOS는 오디오를 어떻게 처리하는가
Mac에서 나는 모든 소리는 CoreAudio라는 시스템을 거칩니다. 그 중심에는 HAL(Hardware Abstraction Layer)이라는 계층이 있습니다. HAL은 소프트웨어와 오디오 하드웨어 사이의 관문 역할을 합니다. Spotify가 노래를 재생하면 CoreAudio는 HAL을 통해 그 오디오를 출력 장치(스피커 또는 헤드폰)로 보냅니다. Zoom이 사용자 목소리가 필요하면 HAL에 입력 장치(마이크)의 오디오를 요청합니다.
핵심은 이것입니다. CoreAudio는 입력과 출력을 완전히 별개의 세계로 다룹니다. 오디오는 스피커로 나가고, 마이크에서 들어옵니다. 둘을 연결해 주는 내장된 다리는 없습니다. 어떤 앱이 “지금 스피커로 재생되고 있는 소리를 그대로 달라"고 요청할 방법이 시스템에 존재하지 않는 것이죠.
이는 Windows와 다른 점입니다. Windows에는 오디오 스택에 직접 내장된 WASAPI 루프백 캡처 기능이 있습니다. WASAPI 루프백을 이용하면 어떤 앱이든 스피커로 향하는 오디오 스트림에 접근해 입력으로 읽을 수 있습니다. Windows 앱들이 “Stereo Mix"나 “What U Hear"를 녹음 소스로 제공할 수 있는 이유가 여기에 있습니다.
macOS는 이런 기능을 포함하지 않기로 선택했습니다.
Apple이 이 부분을 잠가두는 이유
Apple은 공식적인 설명을 내놓은 적이 없지만, macOS가 전반적으로 프라이버시와 보안을 어떻게 다루는지 보면 그 이유를 쉽게 짐작할 수 있습니다.
어떤 앱이든 시스템 사운드를 조용히 캡처할 수 있다면 심각한 프라이버시 문제가 될 것입니다. 백그라운드 프로세스가 FaceTime 통화, 음성 메시지, 비공개 화상 회의의 오디오를 사용자도 모르게 녹음하는 상황을 상상해 보세요. 루프백 경로를 제공하지 않음으로써 Apple은 사용자가 시스템 수준의 드라이버를 명시적으로 설치하고 권한을 부여하기 전에는 어떤 앱도 다른 앱의 오디오를 엿들을 수 없도록 보장하고 있습니다.
이는 macOS가 화면 녹화, 마이크, 카메라 접근을 앱별로 승인하도록 요구하는 것과 같은 철학입니다. Apple은 기본적으로 잠가둔 뒤 사용자가 직접 풀어 들어오게 하는 방식을 선호합니다.
그 대가로 화상 통화에서 노래 공유나 시스템 사운드 포함 튜토리얼 녹화처럼 정당한 사용 사례가 골치 아파집니다. 마땅히 기본 기능 같아 보이는 작업을 할 명확한 방법이 사라져 버린 것입니다.
가상 오디오 드라이버가 하는 일
macOS가 루프백 경로를 만들어 주지 않으니, 가상 오디오 드라이버를 이용해 직접 만드는 것이 해법입니다.
가상 오디오 드라이버는 HAL에 자신을 출력 장치이자 입력 장치로 동시에 등록하는 CoreAudio 플러그인입니다. 시스템 사운드를 이 가상 출력으로 보내면, 드라이버가 그 오디오를 대응되는 가상 입력으로 그대로 노출합니다. 마이크를 읽을 수 있는 앱(Zoom, QuickTime, OBS, Discord)이라면, 가상 장치를 입력 소스로 선택하기만 하면 시스템 사운드를 받을 수 있습니다.
기술적으로 보면 드라이버는 출력 측과 입력 측 사이에 놓이는 링 버퍼를 만듭니다. 출력으로 쓰인 오디오 샘플이 입력에서 다시 읽혀 나옵니다. macOS의 다른 부분에서 보면 평범한 마이크처럼 보이지만, 사실 그 “마이크"는 Mac에서 재생되는 소리를 그대로 실어 나르고 있는 것입니다.
이는 꼼수나 익스플로잇이 아닙니다. Apple의 CoreAudio 프레임워크가 명시적으로 서드파티 HAL 플러그인을 지원합니다. macOS의 오디오 기능을 확장하는 공식적인 방법이죠. 드라이버는 /Library/Audio/Plug-Ins/HAL/ 경로에 설치되며 관리자 비밀번호가 필요합니다. 가상 오디오 도구가 설치 중에 권한 상승을 요구하는 이유가 이것입니다.
Mac 오디오 루프백 도구의 짧은 역사
macOS에서 가상 오디오 장치가 필요한 상황은 새로운 일이 아닙니다. 사람들은 이 한계를 10년 넘게 우회해 왔습니다.
Soundflower는 초기 해법 중 하나였습니다. macOS에 가상 오디오 장치를 만드는 오픈소스 커널 확장이었죠. 수년간 포럼과 튜토리얼에서 정답처럼 통했습니다. 하지만 Soundflower는 원래 개발자가 손을 떼면서 방치되었고, Apple이 커널 확장을 단계적으로 폐지하면서 점점 불안정해졌습니다. 최신 macOS에서는 설치 자체가 실패하거나 오디오 결함을 일으키는 경우가 많습니다.
BlackHole은 Soundflower가 멈춘 자리를 이어받았습니다. 현재 macOS 버전에서 잘 작동하며 활발히 유지보수되는 오픈소스 가상 오디오 드라이버입니다. BlackHole 자체는 견고하지만 가공되지 않은 오디오 파이프에 가깝습니다. 시스템 사운드를 BlackHole로 보내면 Apple의 Audio MIDI Setup 유틸리티에서 다중 출력 장치를 직접 만들지 않는 한 스피커로는 더 이상 소리가 들리지 않습니다. 이런 종류의 설정에 익숙하신 분들에게 BlackHole은 잘 동작하지만, 그렇지 않은 분들에게는 여러 오디오 장치를 곡예하듯 다뤄야 하는 헷갈리는 과정입니다.
Rogue Amoeba의 Loopback은 99달러짜리 유료 앱으로, 앱별 라우팅이 가능한 가상 오디오 장치를 만드는 세련된 인터페이스를 제공합니다. 강력하지만, 어떤 앱이 어디로 오디오를 보낼지 세밀하게 제어해야 하는 오디오 전문가를 위해 설계되었습니다. 그저 Zoom 통화에서 시스템 사운드를 공유하고 싶을 뿐인 사용자에게 Loopback은 토스터 하나 사면 될 일에 상업용 주방을 통째로 사는 격일 수 있습니다.
현대적인 해결책
Soundshine은 더 단순한 접근을 택합니다. 가벼운 CoreAudio HAL 드라이버를 설치하고, 시스템 사운드를 실어 나르는 가상 마이크를 제공합니다. 터미널 명령도, Audio MIDI Setup의 다중 출력 장치 설정도, 복잡한 라우팅 다이어그램도 필요 없습니다.
Soundshine을 설치하면 설치 마법사가 드라이버 설치를 30초 정도에 처리해 줍니다. 그 다음에는 메뉴 막대 아이콘 하나로 오디오 라우팅을 켜고 끄는 스위치가 제공됩니다. 켜져 있는 동안 “Soundshine Microphone"이 모든 앱의 마이크 입력으로 표시됩니다. Zoom, Google Meet, QuickTime, OBS 등 어떤 앱에서든 이를 선택하면 시스템 사운드가 그대로 흘러갑니다.
그동안 스피커는 평소처럼 계속 작동합니다. Soundshine이 동시에 실제 출력 장치로도 오디오를 패스스루해 주기 때문에, 참가자가 듣는 것을 사용자도 똑같이 듣게 됩니다. 오디오는 48 kHz, 32-bit float 스테레오로 디지털 상태를 끝까지 유지하므로 음질 손실도 없습니다.
결론
macOS가 시스템 사운드를 공유하지 못하게 막는 이유는, Apple이 오디오 출력과 입력 사이의 루프백 경로를 의도적으로 제외했기 때문입니다. 프라이버시 우선의 설계 결정이며, 바뀔 가능성은 거의 없습니다. 해결책은 CoreAudio가 만들어 주지 않는 다리를 만들어 주는 가상 오디오 드라이버입니다.
수작업 설정 없이, 오디오 엔지니어링 지식 없이도 그 해결책의 가장 간단한 형태를 원하신다면 Soundshine을 한번 사용해 보세요.
어떤 오디오든, 어디로든
Soundshine은 시스템 사운드를 가상 마이크로 만들어 어떤 앱에서도 그대로 사용할 수 있게 합니다. 터미널도, 커널 확장도 필요 없습니다.
무료 다운로드