피드로 돌아가기
Dev.toFrontend
원문 읽기
Native Module 구현을 통한 음성 녹음 데이터 유실 제로화 및 64kbps 최적화
Going native for voice recording
AI 요약
Context
React Native 오픈소스 라이브러리의 OS Backgrounding 및 Memory Warning 처리 미흡으로 인한 녹음 파일 유실 발생. 라이브러리 수준의 추상화로 인해 Audio Session 제어권과 Interruption Recovery Hook 확보가 불가능한 구조적 한계 노출.
Technical Solution
- AVAudioSessionCategoryPlayAndRecord 및 AVAudioSessionModeSpokenAudio 설정을 통한 음성 최적화 신호 처리 및 동시 재생 환경 구축
- AVAudioSessionInterruptionNotification 기반의 상태 저장 및 JS 이벤트 송신 로직을 통한 전화 수신 등 외부 간섭 시의 Clean Pause 구현
- Memory Warning 발생 시 즉각적인 Recorder 중단 및 M4A Header Finalization 처리를 통한 부분 파일의 재생 가능성 확보
- dBFS 기반의 수치 데이터를 -50dB Floor 기준의 Normalized Level로 변환하여 Waveform UI의 시각적 가독성 최적화
- Main Run Loop 내 50ms 주기 Timer 설정을 통한 RN Bridge 전송 효율과 UI 반응성 간의 트레이드오프 최적화
- MPEG4AAC 포맷, 44.1kHz Sample Rate, Mono 채널, 64kbps Bit Rate 조합을 통한 범용 호환성 및 저장 공간 효율성 달성
실천 포인트
1. OS-level Interruption(전화, 알람 등) 발생 시 상태를 영속화하고 Recovery 경로를 설계했는가
2. Memory Warning 시 프로세스 강제 종료 전 데이터 Finalization 처리를 수행하는가
3. UI 업데이트 주기(Sampling Rate)가 브릿지 전송 성능 및 사용자 인지 속도와 정렬되어 있는가
4. 하드웨어 제약 조건에 맞는 최적의 코덱과 비트레이트를 선정하여 저장 공간을 최적화했는가