1. 50ms의 마법: 원격 제어에서 반응 속도가 왜 생명인가?
원격 제어 솔루션을 사용할 때 사용자가 "답답하다"고 느끼는 가장 큰 이유는 바로 '화면 딜레이(레이턴시)' 때문입니다. PC에서 마우스를 클릭했는데 스마트폰 화면이 0.5초 뒤에 반응한다면, 사용자는 더블 클릭을 하거나 엉뚱한 위치를 터치하여 심각한 조작 오류를 범하게 됩니다. 손가락으로 실제 스마트폰을 터치하는 것과 동일한 자연스러운 사용감을 구현하려면, 캡처부터 네트워크 전송, 디코딩 및 렌더링에 이르는 '엔드-투-엔드(End-to-End) 지연 시간'이 인간의 인지 한계인 100ms 미만, 이상적으로는 50ms(0.05초) 안팎으로 억제되어야 합니다.
과거의 VNC나 RDP 프로토콜이 수백 밀리초의 지연을 보였던 한계를 뛰어넘어, KODARI가 초저지연 실시간 양방향 스트리밍을 구현하기 위해 채택한 WebRTC(Web Real-Time Communication)와 고성능 WebSocket 하이브리드 아키텍처의 설계 비밀을 심층 기술 분석합니다.
2. 안드로이드 MediaProjection과 MediaCodec 하드웨어 가속
초저지연 스트리밍의 첫 단계는 스마트폰 화면을 CPU 부하 없이 빛의 속도로 캡처하고 압축하는 것입니다.
- MediaProjection API: 안드로이드 5.0 이상에서 제공하는 공식 가상 디스플레이 캡처 API로, GPU 프레임버퍼(Framebuffer)에 렌더링된 화면 비트맵을 직접 추출합니다.
- MediaCodec 하드웨어 인코더 연동: 추출된 원본 화면 프레임을 CPU 소프트웨어로 인코딩하면 폰이 뜨거워지고 프레임레이트가 10fps로 곤두박질칩니다. KODARI는 퀄컴 스냅드래곤, 삼성 엑시노스 칩셋의 하드웨어 전용 인코더 블록(H.264/AVC Baseline Profile)에 직접 텍스처 버퍼(Surface)를 연결하여, 단 3~5ms 만에 1080p 고화질 프레임을 실시간 압축 인코딩합니다.
- 동적 비트레이트 조절 (Adaptive Bitrate): Wi-Fi나 5G 네트워크 대역폭이 일시적으로 저하되면 인코더의 비트레이트를 3Mbps에서 800kbps로 실시간 가변 조절하여 끊김(Stuttering) 없는 무중단 화면 송출을 보장합니다.
3. WebRTC DataChannel과 저지연 경량 WebSocket 시그널링
영상 스트림과 사용자 제어 명령은 서로 다른 네트워크 프로토콜 특성을 요구합니다.
- WebRTC P2P 미디어 파이프라인: 영상 프레임은 비신뢰성 기반이지만 지연이 전혀 없는 UDP 기반의 WebRTC 미디어 채널을 통해 전송됩니다. 패킷이 1~2개 유실되더라도 TCP처럼 재전송을 기다리지 않고 다음 프레임을 즉각 그려내므로 딜레이가 누적되지 않습니다.
- WebSocket 제어 패킷 채널: 반면 클릭, 드래그, 백버튼 등 사용자 조작 이벤트는 1글자도 유실되면 안 되므로 전용 경량 바이너리 WebSocket 채널을 통해 전송되며, 패킷 크기를 16바이트 미만으로 극도로 슬림화하여 전송 지연 시간을 2ms 이내로 단축시켰습니다.
4. 브라우저 WebCodecs 기반 제로-카피(Zero-Copy) 디코딩
상담원이나 자녀의 웹 브라우저 단에서도 초저지연 디코딩 최적화가 필수적입니다.
- 기존의 무거운 자바스크립트 소프트웨어 디코더 대신 최신 모던 브라우저 표준인 'WebCodecs VideoDecoder' API를 활용하여, 수신된 H.264 NAL 유닛을 PC의 외장 그래픽카드(NVIDIA, AMD, Intel GPU) 하드웨어 디코더로 즉각 넘겨줍니다.
- 캔버스(Canvas) 렌더링 시 메모리 복사를 거치지 않는 제로-카피(Zero-Copy) 파이프라인을 구축함으로써, 60fps 고주사율 모니터에서도 화면 찢김(Tearing) 없이 완벽하게 부드러운 원격 조작 환경을 완성했습니다.