피드로 돌아가기
Dev.toBackend
원문 읽기
WebSocket 기반 PCM 스트리밍을 통한 LAN 멀티 디바이스 오디오 동기화 구현
My speaker broke, so I built a LAN speaker
AI 요약
Context
기존 오디오 스피커 고장으로 인해 다수 기기에서 동시 재생 가능한 LAN 기반 오디오 시스템 필요성 대두. 오디오 데이터의 순차적 전달 보장과 여러 클라이언트 간의 정밀한 재생 시점 일치가 핵심 과제로 식별됨.
Technical Solution
- TCP 기반 WebSocket 채택을 통한 PCM 오디오 프레임의 순서 보장 및 전송 신뢰성 확보
- Server-side Decoding 구조 설계를 통해 MP3 파일을 PCM 바이트 스트림으로 변환 후 클라이언트에 전송하여 클라이언트 연산 부하 제거
- NTP 기반 네트워크 시각 동기화를 전제로 Server가 특정 시작 Timestamp를 전송하는 Global Sync 메커니즘 구현
- OS별 시스템 버퍼로 인한 재생 지연을 해결하기 위해 50ms의 Hardcoded Delay 상수를 도입한 보정 로직 적용
- 재생 중 발생하는 미세한 시차 해결을 위해 1초 주기로 오디오 진척도를 확인하고 데이터를 가감하는 Drift Correction 알고리즘 적용
실천 포인트
- 실시간 스트리밍 시 데이터 순서가 중요하다면 UDP보다 TCP 기반 프로토콜 검토 - 멀티 디바이스 동기화 설계 시 NTP 환경 확인 및 시스템 버퍼 지연 시간(OS-specific delay) 고려 - 클라이언트 리소스 제약 시 Server-side Decoding을 통한 처리 부하 분산 전략 수립 - 누적 오차 해결을 위한 주기적 Sync Check 및 보정 로직 구현