여러 미디어 서버 중 Janus, Jitsi, Kurento, mediasoup, Medooze가 있었는데 kurento를 사용하기로 했다
==> 관련 레퍼런스가 많아 사용하기 쉬울 것 같아서
미디어 서버를 왜 쓸까?
피어 투 피어로 설정하게 되면 시청자가 몰리게 될 떄 호스트의 컴퓨터가 터지지 않을까? 그래서 씀
kurento 자체를 쓰려고 하니 설정할께 너무 많고 사용하기 힘들어서 관련 프레임워크를 알아보다가 openVidu를 알게됨
OpenVidu
Openvidu는 모든 하위 수준의 작업들을 래핑해서 숨기고 있다.
그래서 개발자는 WebRTC, ICE 후보, 미디어 서버와 같은 까다롭고 복잡한 구현 사항에 대해 관여하지 않아도 될 정도로 간단한 API를 제공한다.
내부적으로는 미디어 파이프라인을 생성, 연결, 수정하기 위해 쿠렌토를 사용하고 있다
- Openvidu Browser
클라이언트 측에서 사용할 라이브러리
화상 통화를 만들고, 비디오와 오디오를 주고받을 수 있게끔 도와준다
Openvidu에서 사용할 수 있는 모든 작업은 Openvidu 브라우저를 통해 관리된다
- Openvidu Server
서버 측 내용을 처리하는 애플리케이션
Openvidu 브라우저에서 작업을 수신하고, 비디오 통화를 설정하고, 관리하는 데 필요한 모든 작업을 수행한다
명시적으로 구현할 필요는 없고, 실행한 뒤에 접근할 수 있는 IP 주소만 알고 있으면 끝
영상 데이터와 채팅 데이터를 같은 메커니즘으로 미디어 서버를 두고 통신을 하려고 했는데 이렇게 되면 안되는 것 같음
즉, Openvidu는 영상 데이터를 보내기 위한(웹캠을 브라우저에 띄우기 위한) 용도로 사용되는 것
그림과 같이 deployment는 따로 docker를 통해 받고 server, client를 받야아함
server는 java, node, python 등 다양한 형태로 있는데 controller 자체가 메인이기 때문에 기존의 springboot 프로젝트에 합치는게 나음
로컬에서 테스트 해보기
openvidu client
git clone https://github.com/OpenVidu/openvidu-tutorials.git -b v2.21.0
react를 사용하니까 openvidu-library-react에 들어가서 설정
server에서 .env에 설정한 IP와 PORT를 가지고 client에서 설정하는건 당연(App.js)
openvidu server
# openvidu가 설치되는 경로
$ cd /opt
# openvidu on promises 설치
$ curl https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/install_openvidu_latest.sh | bash
# 설치한 서버 폴더에 들어감
cd openvidu
# IP, PORT 설정
nano .env
# 도커에서 openvidu server 실행
# MY_SECRET에서 테스트키를 고치고 실행시킨다
docker run -d -p 4443:4443 --name openvidu -e OPENVIDU_SECRET=auctopus openvidu/openvidu-dev:2.25.0
'CS' 카테고리의 다른 글
Git Flow 전략에 대해 (0) | 2023.01.10 |
---|---|
[CS]가상 메모리, 페이징과 세그멘테이션에 대해 (0) | 2023.01.07 |
WSL1을 WSL2로 업데이트 하는 방법 (0) | 2023.01.05 |
Kurento Docker로 설치하기 - Window 환경 (0) | 2023.01.05 |
[AWS]GitLab CI/CD 이용해서 Springboot 배포하기 (0) | 2023.01.03 |