2-7주차

2-7주차 기능 추가 및 수정 사항

7주차 평가 목록

화상 공유 구현 (아직 불안정 하므로 test server 구현)

1. 개요

프로젝트명: V-Talk (WebRTC 기반 스마트 회의 플랫폼)
목표: 사용자 간 실시간 화상 회의 및 화면 공유 기능을 제공하여 원격 협업을 효율적으로 수행할 수 있도록 지원
사용 기술:

  • WebRTC: 실시간 미디어 스트리밍 (비디오/오디오)
  • Firebase Realtime Database (RTDB): 시그널링(Signaling) 처리 및 연결 관리
  • Firestore: 사용자 및 채팅방 데이터 관리
  • JavaScript (ES6): 클라이언트 로직 구현

2. 구현 기능 요약

(1) 화상 공유 시작 (호스트)

  • 호스트가 “화상 공유 시작” 버튼을 클릭하면 navigator.mediaDevices.getUserMedia()를 통해 비디오 스트림을 가져옴
  • 가져온 스트림은 <video id="localVideo"> 요소에 표시되고, Firebase RTDB의 videoChatUsers/{roomId} 경로에 **호스트 정보(newUid 포함)**를 등록
  • 이후 호스트는 PeerConnection을 생성하고 Offer를 Firebase에 저장하여 뷰어가 수신할 수 있도록 함

(2) 화상 공유 보기 (뷰어)

  • 뷰어는 채팅창에 표시된 [보기] 버튼을 클릭하면 joinVideoChat(hostNewUid) 함수를 통해 호스트의 Offer를 수신
  • Offer를 기반으로 PeerConnection을 생성하고 Answer를 생성하여 Firebase로 전송
  • 호스트는 해당 Answer를 수신해 연결을 확립하고, 뷰어의 <video id="remoteVideo">에 호스트 화면이 표시됨

(3) 연결 관리 및 종료

  • ICE CandidatevideoChatCandidates/{roomId} 경로를 통해 교환
  • 화상 공유 종료 시, 모든 PeerConnection과 관련 Firebase 데이터(videoChatOffers, videoChatCandidates, videoChatUsers)를 정리

3. 주요 기술 구조

항목설명
SignalingFirebase RTDB 경로(videoChatOffers, videoChatCandidates, videoChatUsers) 사용
스트림 관리localVideo, remoteVideo DOM 요소로 로컬/원격 스트림 표시
PeerConnection 관리videoPeerConnections[roomId][uid] 구조로 다자간 연결 관리
UI 요소“화상 공유 시작 / 종료” 버튼, “보기” 버튼, “화상 공유 종료됨” 안내 메시지

4. 구현 결과

  • 호스트가 화상 공유를 시작하면 정상적으로 영상이 표시됨
  • 뷰어는 “보기” 버튼 클릭 시 호스트의 영상을 수신하고 시청 가능

호스트가 화상 공유를 시작 할 때

뷰어가 호스트의 화상 공유를 보기 버튼을 눌러 참여 할 때

호스트가 화상 공유를 종료 할 때

미구현 기능 (추후 추가 예정)

  • 호스트 화상 공유 종료 버튼을 누르면 뷰어 같이 종료 되게끔 만들 것.

Be the first to comment

Leave a Reply

Your email address will not be published.


*