투케이2K

163. (Aws/Amazon) [Aws Kinesis Video Streams] WebRTC SDP Offer 전송 후 Answer 를 받지 못하는 이슈 정리 본문

Aws (Amazon)

163. (Aws/Amazon) [Aws Kinesis Video Streams] WebRTC SDP Offer 전송 후 Answer 를 받지 못하는 이슈 정리

투케이2K 2026. 1. 1. 12:11
728x90

[개발 환경 설정]

개발 환경 : Aws / Amazon Web Services

 

[설명 정리]

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

- 인프라 : Aws / Amazon Web Services


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


- 사전) 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. Signaling Channel Endpoint 문제 : 

  >> Role을 `VIEWER`로 호출하지 않음
  
  >> `Protocols`에 `WSS` 누락
  
  >> 잘못된 Region


2. Answer Listener 등록 순서 오류 (매우 흔함) : 

  >> Offer 전송 전에 반드시 Answer Listener 등록 필요

  >> 늦게 등록 시 Answer 유실


3. Viewer ClientId 문제 : 

  >> ClientId 중복 사용

  >> 앱 재실행 시 동일 ClientId 재사용

  >> WebSocket 재연결 시 ClientId 갱신 필요


4. Master 로직 문제 : 

  >> Offer 수신 후 Answer 생성 코드 누락

  >> clientId를 지정하지 않고 Answer 전송

  >> 다중 Viewer 처리 미구현


5. SDP / Media / Codec 문제 : 

  >> Master에서 Track 추가 안 함

  >> m-line 불일치

  >> Safari / iOS → H264만 지원


6. GetIceServerConfig 미호출 및 재사용 문제 :

  >> Viewer 도 반드시 호출해야 함

  >> Master 만 호출하면 Viewer ICE 없음

  >> 한번 호출로 생성 된 값을 다음번 접속 시 재사용 시 만료 기간 등으로 인해 문제가 발생할 수 있음


7. ICE Candidate가 생성되지 않는 문제 : 

  >> Listener 미등록 : onicecandidate 미등록 , sendIceCandidate 누락

  >> setLocalDescription 누락 : ICE gathering 시작 안 됨

  >> 네트워크 차단 : UDP 3478 차단 , TCP 3478 차단 , TCP 443 미허용


8. 네트워크 환경 이슈 : 

  >> 모바일 통신망 (LTE / 5G) : Carrier Grade NAT , UDP 일부 허용 → 연결 불안정 , TURN TCP 443 거의 필수

  >> 회사망 / 공공망 : UDP 전면 차단 , 프록시 존재 , TURN TCP만 가능

  >> VPN 환경 : 터널링으로 MTU 감소 , SDP Fragment Drop 발생 가능


9. TLS / WSS / 보안 이슈 : 

  >> WebSocket 세션 유지 문제 : Idle timeout , TLS 재협상 , Ping / KeepAlive 필요

  >> TLS SNI 차단 : 일부 방화벽에서 SNI 기반 차단 , VPN OFF 테스트 필수

  >> Android TLS 문제 : 구형 OS TrustStore , TURN 인증서 검증 실패

  >> iOS ATS 정책 : TLS 1.2+ , SHA-256 인증서 필수


10. SDP / MTU / DTLS 문제 : 

  >> SDP 크기 문제 : VPN / 모바일에서 Fragment Drop , Codec 정리 필요

  >> DTLS Handshake 실패 : UDP 차단 , TURN TCP 필요


11. ✅ 디버깅 가이드 : Chrome

  >> `chrome://webrtc-internals`

  >> candidateType: relay

  >> protocol: tcp / udp


12. ✅ 로그 체크 순서 : 

  >> Viewer Offer 로그

  >> Master Offer 수신 로그

  >> Answer 전송 로그

  >> ICE Candidate 로그

  >> CloudWatch Signaling 로그

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






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

[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

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