Electron 렌더 프로세스에서 벗어나 Swift로 녹화 엔진을 재구축한 이유

Rebuilding our Electron meeting-recording engine in Swift

Electron 렌더 프로세스에서 벗어나 Swift로 녹화 엔진을 재구축한 이유

Circleback은 미팅 녹화 엔진을 Electron의 렌더 프로세스에서 Swift 기반 네이티브 코드로 전면 재작성했습니다. 렌더 프로세스는 GC 일시 중지, 스로틀링 등 실시간 오디오/비디오 캡처에 적합하지 않다고 판단했기 때문입니다. macOS에서는 ScreenCaptureKit, Windows에서는 libobs를 사용하고, Swift 레이어로 통합했습니다. 또한 Swift의 @Published 속성을 React의 Jotai atom으로 자동 변환하는 내부 도구 'Atomic'을 개발해 브리지 코드를 제거했습니다. 이 글은 클록 동기화, 드라이버 샘플 레이트 불일치, 충돌에도 안전한 fragmented MP4 등 녹화 엔진 구현의 까다로운 문제와 해결책을 다룹니다.

렌더 프로세스는 실시간 오디오 및 비디오 캡처에 적합한 곳이 아닙니다. 캡처 엔진은 GC 일시 중지, 스로틀링 또는 브라우저 런타임이 반응성을 유지하기 위해 수행하는 다른 어떤 것도 용납할 수 없습니다.

이 날의 다른 글

2026-08-21