Notice
Recent Posts
Recent Comments
Link
투케이2K
141. (TWOK/LOGIC) [Aws] 자바스크립트 Aws Kvs WebRTC Master 생산자 실시간 양방향 음성 통화 교환 로직 - getUserMedia audio 본문
투케이2K 로직정리
141. (TWOK/LOGIC) [Aws] 자바스크립트 Aws Kvs WebRTC Master 생산자 실시간 양방향 음성 통화 교환 로직 - getUserMedia audio
투케이2K 2025. 5. 14. 19:16[로직 정리]
정리 로직 : Web / Aws
상태 : [Aws] 자바스크립트 Aws Kvs WebRTC Master 생산자 실시간 양방향 음성 통화 교환 로직 - getUserMedia audio
[설 명]
// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------
1. Aws Kinesis Video Streams (Kvs) 인프라 구축 필요
2. Aws WebRTC 실시간 스트리밍 교환을 위한 신호 채널 생성 및 ARN 주소 확인 필요
3. 내용 정리 및 로직에 표시 된 용어 정리 :
>> WebRTC : 웹 브라우저 기반으로 오디오나 영상 미디어 스트림을 교환할 수 있는 기술
>> RTCPeerConnection : 로컬 기기와 원격 피어 간의 연결을 수행하는 객체
>> ICE : NAT/P2P 환경에서도 연결 가능한 경로 (IP, 포트 등) 를 찾기 위한 기술로 Peer 와 통신에 사용할 수 있는 방법
>> ICE candidate : 연결 가능한 (IP + Port 조합) 경로로 Peer 가 통신에 사용할 수 있는 방법
>> Master (생산자) : 디바이스 역할로 실시간 카메라 영상을 업로드 수행
>> Viewer (소비자) : 클라이언트 (Web, App) 역할로 P2P 연결 되어 실시간 스트리밍 동영상 및 음성 데이터 확인
>> Track : 오디오 트랙, 미디어 트랙, 자막 트랙 등과 같이 단일 데이터 컴포넌트를 의미
>> Streams : 각 트랙들의 집합을 의미합니다
>> TUN (Traversal Using Relay around NAT) : 주변의 릴레이를 사용한 순회를 의미하며, 서버를 통해 모든 정보를 중계하여 대칭 NAT 제한을 우회하는데 사용되는 방식
>> STUN (Session Traversal Utilities for NAT) : 두 장치가 서로의 공용 IP 주소를 검색하고 직접 연결을 시작할 수 있는 방식
4. 참고 : Master 와 Viewer 는 전체 로직은 동일하게 작성할 수 있지만, SignalingClient 이벤트 부분에서 sendSdpOffer , sendSdpAnswer 를 하냐 차이점은 있음
>> Viwer : sendSdpOffer 전송
>> Master : sendSdpAnswer 전송
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------
1. [Master] KinesisVideo 비디오 재생 및 정보 관련 객체 초기화 수행
2. [Master] KinesisVideoSignalingChannels iceServers 신호 채널 정보 확인 객체 초기화 수행
3. [Master] iceServers 서버 연결 정보 확인
4. [Master] TUN , STUN 서버 연결 정보 추출 및 RTCPeerConnection 객체 config 설정 및 초기화 수행
5. [Master] SignalingClient 생성 및 이벤트 수신 대기 수행
>> 이벤트 생성 및 수신 대기 종류 : open , sdpOffer , iceCandidate , close , error
>> open : SignalingClient open 이벤트 수신
>> sdpOffer : viwer 가 sendSdpOffer 이벤트 요청 시 감지하는 부분 (viwer 가 master 에 연결 요청)
>> iceCandidate : ICE 후보 이벤트 수신 부분
>> close : SignalingClient close 이벤트 수신
>> error : SignalingClient error 이벤트 수신
6. [Master] peerConnection.addEventListener [track] 이벤트 리스너를 등록해 실시간 스트림 데이터 수신 대기 및 스트림 데이터 출력 로직 작성
>> viwer 에서도 마이크 음성 데이터를 마스터에 전송할 수 있으므로, 전송 된 데이터가 있으면 출력 수행 하기 위함
>> track 이벤트로 감지 된 스트림이 있는 경우 > master 는 지정 된 비디오 및 오디오 객체에 스트림 지정 및 출력 수행 (remoteView.srcObject = event.streams[0];)
7. [Master] SignalingClient open 이벤트 발생 시 getUserMedia audio 사용 권한 요청 및 마이크로 수신 된 track 을 streams 에 추가 실시
>> 해당 로직을 추가해야 viewer 에서 track 이벤트 감지 후 master 가 전송하는 음성 출력 가능
>> master 는 실시간으로 마이크에 입력 된 음성을 viewer 에게 전송 수행
8. [Viewer] 마스터에게 sendSdpOffer 요청 수행
9. [Master] SignalingClient sdpOffer 이벤트 발생 시 createAnswer 생성 및 viewer 에게 sendSdpAnswer 응답 전송 수행
>> sdpOffer 로 넘겨 받은 상대방 오퍼를 내 Remote 에 추가
>> Answer 옵션 지정 및 생성 createAnswer
>> Answer 를 내 local 로 저장
>> SDP Answer 응답 전송
10. [Master] 실시간 마이크 음성 전송 및 수신 대기 로직 작성 완료
11. [Master] 마이크를 통해서 음성 데이터 실시간 전송 및 peerConnection.addEventListener [track] 에서 상대방이 전달 한 음성 출력 수행
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[자바스크립트 AWS Kvs WebRTC 디바이스 역할 (master) sdp answer 응답 및 실시간 비디오 스트림 전송 수행]
https://blog.naver.com/kkh0977/223863377974
[자바스크립트 AWS WebRTC 실시간 동영상 재생 수행]
https://blog.naver.com/kkh0977/223170500993?trackingCode=blog_bloghome_searchlist
[Aws KVS 비디오 스트림 , 신호 전송 채널 차이점 설명 정리]
https://blog.naver.com/kkh0977/223854439046
[Aws Kvs WebRTC 실시간 영상 재생 관련 구성 요소 및 용어 정리]
https://blog.naver.com/kkh0977/223858189791
[업무 이슈] 자바스크립트 AWS KVS signalingClient sendSdpAnswer 오퍼 응답 이슈 - remoteClientId 누락
https://blog.naver.com/kkh0977/223864517421
// --------------------------------------------------------------------------------------
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments