투케이2K

175. (Aws/Amazon) [Aws Kinesis Video Streams] WebRTC 뷰어 영상 재생 중 네트워크 환경 (Wifi To LTE) 변경 시 종료 상태 정리 본문

Aws (Amazon)

175. (Aws/Amazon) [Aws Kinesis Video Streams] WebRTC 뷰어 영상 재생 중 네트워크 환경 (Wifi To LTE) 변경 시 종료 상태 정리

투케이2K 2026. 1. 22. 19:33
728x90

[개발 환경 설정]

개발 환경 : Aws / Amazon Web Services

 

[설명 정리]

// --------------------------------------------------------------------------------------
[개발 및 환경]
// --------------------------------------------------------------------------------------

- 인프라 : Aws / Amazon Web Services


- 기술 구분 : Aws / Aws Kinesis Video Streams / KVS / WebRTC


- 사전) WebRTC 설명 : 

  >> WebRTC 란 웹, 애플리케이션, 디바이스 간 중간자 없이 오디오나 영상 미디어를 포착하고 실시간 스트림할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다

  >> WebRTC 는 간단한 API 를 통해 웹 브라우저, 모바일 애플리케이션 및 커넥티드 디바이스 간에 실시간 통신을 활성화할 수 있습니다

  >> WebRTC 주요 용어 : 

    - SDP (Session Description Protocol) : 오디오/비디오 코덱, 해상도, 포트 등 스트리밍 정보를 담은 텍스트 포맷
    - Offer / Answer : 통신 연결을 협상하기 위한 SDP 메시지 (초기 연결 설정)
    - ICE (Interactive Connectivity Establishment) : NAT/P2P 환경에서도 연결 가능한 경로(IP, 포트 등)를 찾기 위한 기술
    - Candidate : 가능한 연결 경로 (IP + Port 조합)

  >> WebRTC SDP 오퍼 생성 (뷰어) 및 응답 (마스터) 스트리밍 플로우 : 

    [Viewer → Signaling Server] -- SDP Offer --> [Master] : 뷰어는 마스터로 스트리밍 오퍼 신호 보낸다
    [Master] -- SDP Answer --> [Viewer] : 마스터는 특정 뷰어의 오퍼 신호 확인 후 응답을 보낸다

    [Viewer] -- ICE Candidate --> [Master] : 스트리밍을 할 수 있는 경로 확인
    [Master] -- ICE Candidate --> [Viewer] : 스트리밍을 할 수 있는 경로 확인

    P2P 연결 성립 → 스트리밍 시작

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[설 명]
// --------------------------------------------------------------------------------------

1. ✅ 사전) 휴대폰 환경에서 네트워크 환경이 변경 되는 상황 정리 : 

  >> WIFI 가 연결 된 상태에서 WebRTC 뷰어 연결 수행

  >> 정상적으로 WebRTC 연결 완료 후 영상이 출력되는 것 확인

  >> 휴대폰 상단 메뉴 스크롤을 내려 와이파이 기능 비활성 수행

  >> 시청 중이던 영상이 일시 중지 되는 것 확인


2. 일반적) WebRTC 연결 끊김이 생길 때 마스터에서 보이는 상태 정리 : 

  >> WebRTC 피어 연결이 끊기면 브라우저의 RTCPeerConnection 상태는 다음 흐름으로 변화합니다.

  >> connected → disconnected → failed or closed


3. ✅ 네트워크 전환 시) 뷰어 영상 중지 및 마스터에서 보이는 상태 정리 :

  >> 대부분의 경우 : 마스터는 "뷰어가 잠시 끊김(disconnected)" 으로만 감지

    - 즉 뷰어가 완전히 종료된 것으로 판단하지 않고, 단순한 네트워크 재협상(ICE 재시작) 과정이 필요하다고 판단

  >> 네트워크 전환(Wi‑Fi → LTE) 직후 마스터의 ICE 상태 정리 : 

    - iceConnectionState = "disconnected" : 잠시 연결이 불안정해진 상태

    - 이후 뷰어가 ICE restart 를 하면 다시 : "checking" → "connected" 로 회복 가능


4. ✅ 네트워크 전환 시) 뷰어가 ICE 재시작하지 않는 경우 마스터에서 보이는 상태 정리 :

  >> 마스터는 일정 시간이 지나 iceConnectionState = "failed" 또는 "closed" 상태로 넘어가며, 이때 비로소 뷰어가 끊긴 것처럼 인식하게 됩니다.

  >> 👉 이때도 마스터는 "뷰어가 앱을 닫았다"는 이벤트를 스스로 알 수는 없으며, 단지 WebRTC 연결이 성립할 수 없어서 실패 상태로 간 것으로 판단


5. 표 정리) 네트워크 환경 변경 시 마스터의 뷰어 상태 판정

----------------------------------------------------------------------------------------
          상황          |          ICE           |     상태마스터에서 뷰어는?
----------------------------------------------------------------------------------------
잠깐 끊김(네트워크 전환) |       disconnected     |   ❌ close 아님 — 잠시 끊김
----------------------------------------------------------------------------------------
뷰어가 ICE restart 시도 |  checking → connected  |   ⭕ 정상 복귀
----------------------------------------------------------------------------------------
뷰어가 아무 처리 안 함   |  disconnected → failed |   ⭕ close 비슷한 상태이지만 뷰어가 앱 종료했는지 여부는 모름
----------------------------------------------------------------------------------------
뷰어가 브라우저 탭 닫음  |         closed         |   ⭕ close 로 확실하게 알 수 있음
----------------------------------------------------------------------------------------

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[Aws Kinesis Video Streams] WebRTC SDP 협상 과정 프로세스 정리 정리

https://blog.naver.com/kkh0977/224030054470


[자바스크립트 AWS WebRTC 실시간 동영상 재생 수행]

https://blog.naver.com/kkh0977/223170500993?trackingCode=blog_bloghome_searchlist


[Aws Kvs WebRTC 실시간 영상 재생 관련 구성 요소 및 용어 정리]

https://blog.naver.com/kkh0977/223858189791


[업무 이슈] AWS WebRTC 실시간 비디오 재생 시 Client 클라이언트 연결 접속 및 해제 상태 확인 이슈

https://blog.naver.com/kkh0977/223966952222


[업무 이슈] 안드로이드 웹뷰에서 AWS WebRTC 웹 뷰어 영상 재생 중 앱 화면 종료 시 마스터에서 뷰어 close 상태가 늦게 감지 되는 이슈

https://blog.naver.com/kkh0977/224020488268


[Aws] WebRTC Viewer 뷰어 기기에서 실시간 디바이스 기기 해상도 확인 로직

https://blog.naver.com/kkh0977/224024795533


[업무 이슈] AWS WebRTC 마스터 SDK 초기화 시 STS 임시 자격 증명 UserId 값에 특수 문자 포함으로 인증 에러 발생 이슈

https://kkh0977.tistory.com/8565

https://blog.naver.com/kkh0977/224145469350


[업무 이슈] AWS WebRTC 마스터 GetIceServerConfig ICE 서버 사용 유효 기간 만료 TURN 릴레이 서버 연결 불가능 이슈

https://kkh0977.tistory.com/8564


[업무 이슈] AWS WebRTC 뷰어에서 동일한 clientId 사용해 스트리밍 시청 시 AWS 세션 초기화 이슈로 60 초내외 재사용 필요 이슈

https://kkh0977.tistory.com/8442

https://blog.naver.com/kkh0977/224094606649

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments