피드로 돌아가기
Dev.toBackend
원문 읽기
WebRTC 없는 PHP Swoole 기반 RTP ↔ PCM 브릿지 구현을 통한 Web SIP Softphone 설계
SpechPhone: softphone com chamadas inbound, chat SIP e bridge RTP ↔ PCM em PHP + Swoole na Web
AI 요약
Context
기존 Web-based Softphone의 WebRTC 의존성과 복잡한 ICE/STUN/TURN 협상 과정을 제거하려는 시도. PHP 기반 비동기 런타임인 Swoole을 활용해 브라우저와 SIP 서버 간의 실시간 미디어 전송 가능성을 검증함.
Technical Solution
- WebRTC를 배제하고 WebSocket을 통한 PCM 데이터 전송 방식을 채택하여 미디어 파이프라인 단순화
- server.php(Control Plane)와 audio.php(Data Plane)를 분리하여 SIP 시그널링과 실시간 오디오 처리의 부하 격리
- Swoole Table 기반의 공유 메모리 구조를 도입하여 다중 Worker 환경에서 CallState(세션, 바인딩, 코덱 정보)의 일관성 유지
- RTP UDP 패킷을 PCM으로 디코딩하여 WebSocket으로 전달하는 RTP ↔ PCM 미디어 브릿지 설계
- SDP(Session Description Protocol) 기반의 코덱 협상을 통해 PCMA, PCMU, Opus 등 다양한 SIP 코덱의 유연한 대응 체계 구축
- INVITE, ACK, BYE 등 SIP 표준 메시지 핸들러 구현을 통한 Inbound Call 처리 프로세스 완성
실천 포인트
- 실시간 미디어 처리 시 제어 평면(Control Plane)과 데이터 평면(Data Plane)의 물리적/논리적 분리 검토 - 다중 프로세스/워커 환경에서 상태 동기화를 위해 Redis 대신 고성능 공유 메모리(Swoole Table 등) 적용 고려 - 표준 프로토콜(WebRTC)의 오버헤드가 큰 환경에서 특정 목적을 위한 전용 미디어 브릿지 설계의 효용성 분석