WebRTC 6

[WebRTC] Kurento를 사용하여 실시간 스트리밍하기

Kurento client를 활용하여 one2many call의 흐름을 익혀보자 대략적인 그림으로 그려보면, 1명의 스트리머가 있고 N명의 Viewer들이 존재하는 아래와 같은 그림일 것이다. 대략적인 서버의 구성은 아래의 그림과 같다. 이제 본격적으로 어떤 흐름으로 1:N 스트리밍을 할 수 있는지 알아보자 Presenter가 방송 켰을 때 1. Client가 웹에 들어오면 웹소켓으로 시그널링 서버와 연결을 한다. 2. 스트리머가 스트리밍 시작 버튼을 누르면, JSON형태로 id와 sdpOffer정보를 시그널링서버에 보낸다. 스트리머가 다른 방송을 보고 있는지 또는 다른 방송을 키고 있는지 여부를 파악해야 함 id는 WebSocket통신을 할 때, 어떤 메세지를 담고 있는지 구별해주는 id 이다. Pre..

WebRTC 2021.01.25

[WebRTC] WebRTC를 공부하며 스트리밍 과정 익히기

유튜브 플랫폼에서 구독자와 소통하기 위해 라이브 방송을 킨다고 가정해보자. 스트리밍을 하기 위해 가장 먼저 해야하는 것은 웹/앱에 연결된 카메라, 마이크 등에 연결을 해야한다. (카메라, 마이크가 연결되지 않으면 스트리밍을 하는 의미가 없어진다.) 그렇다면, 어떻게 연결할 수 있을까? 연결과정을 알아보자. 1. WebRTC와 미디어 장치 1-1. 미디어 장치와 연결하기 [1] 제약조건에 맞는 카메라, 마이크를 선택해준다. const openMediaDevices = async (constraints) => { return await navigator.mediaDevices.getUserMedia(constraints); } try { const stream = openMediaDevices({'video..

WebRTC 2021.01.16

[WebRTC] NAT, ICE, STUN, TURN 이란? ( WebRTC를 이해하기 위해 필요한 지식들)

WebRTC를 사용하기 전, 기본적으로 익혀야 할 지식들!! 🌎 NAT(Network Address Translation) '나'는 누구인지 '이름'으로 구별할 수 있듯, 각 기기에도 자신만의 이름이 있다. 그것이 바로 IP이고 이 IP는 고정IP, 유동IP 로 나뉘어서 실제 고유의 값일 수도 있고 아닐 수도 있다. 더 나아가서는 회사망/내부망(LAN)은 Private IP이기 때문에 다른 네트워크( 구글 홈페이지 접속, 일반적인 웹 사이트 접송) 등 다른 네트워크에서는 통용되지 않는다. 그렇기 때문에, 우리가 통상적인 네트워크에서 데이터를 주고 받기 위해서는 Public IP가 필요하다. NAT는 Private IP를 Public IP로 1대1 대응시켜 변환하는 장치를 말한다. 또한, IP주소를 재기록..

WebRTC 2021.01.11

[Kurento] 쿠렌토 서버 Docker로 실행시켜보기 (feat. 윈도우)

쿠렌토 서버 Docker로 실행시키기 윈도우 환경에서 로컬로 돌리게 되면 환경이 안맞는 부분도 발생할 수 있기 때문에 Docker를 사용하여 쿠렌토서버를 띄워보자 준비사항 Ubuntu 18.04 LTS Docker Docker에서 Kurento Media Server 실행시키기 우분투를 열고 명령어를 작성해준다. docker pull kurento/kurento-media-server:latest docker run -d --name kms --network host \ kurento/kurento-media-server:latest Docker 네트워크 게이트웨이가 호스트와 컨테이너 사이의 NAT 역할을 한다. 일단, 여기서는 Kurento Media Server가 동작하는지, Test할 것이기 때문에..

WebRTC 2021.01.08

[WebRTC] 쿠렌토(Kurento)는 무엇인가?

쿠렌토란? 전체 WebRTC 스택의 기능적 구현을 제공하는 미디어 서버이다. 쿠렌토를 사용할 수 있는 3가지 방법 1. 웹소켓 브라우저로부터 직접적으로 Kurento JavaScript SDK를 사용하기. ( 빠르게 테스트할 때만 추천) 2. Java EE 서버에서 Kurento Java SDK를 사용하기. ( 웹브라우저는 HTML, WebRTC 시그널링과 같은 작업을 위한 애플리케이션의 클라이언트) 3. Node.js에 Kurento JavaScript SDK을 사용하기. Media Server 를 왜 사용하는가? WebRTC는 P2P연결을 통해 웹 브라우저와 모바일 애플리케이션의 RTC기능을 제공하는 프로토콜과 APIs이다. 소프트웨어나 별도의 플러그인이 필요없고 단지 Peer 와 Peer 간의 P2..

WebRTC 2021.01.07

[WebRTC] WebRTC란 무엇일까?

🎞 WebRTC란 무엇인가? Web Real-Time Communication의 약자로 웹/앱에서 별다른 소프트웨어 없이 카메라, 마이크 등을 사용하여 실시간 커뮤니케이션을 제공해주는 기술이다. 우리가 잘 알고있는 화상통화, 화상 공유등을 구현할 수 있는 오픈소스 비디오, 음성 및 일반 데이터가 P2P방식으로 피어간의 전송되도록 지원 JavaScript API로 제공 알아야할 용어 및 개념 data streams, STUN/TURN servers, signaling, JSEP, ICE, SIP, SDP, NAT, UDP/TCP, network socket 등 💁‍♀️ WebRTC의 장점과 단점 1. 장점 [1] Latency가 짧다. 우리가 흔히 알고있는 인스타라이브, 유튜브라이브, 트위치 등은 RTMP..

WebRTC 2020.12.22