개발/webrtc

· DEV/Backend
Coturn 시그널링 서버 설치 1단계: Coturn 설치 STUN 서버이자 TURN 릴레이인 Coturn은 ICE 프로토콜에 필요한 모든 기능을 지원하여 NAT 뒤에서 WebRTC 연결을 가능하게 합니다. Ubuntu 패키지 리포지토리에서 직접 설치할 수 있습니다. sudo apt-get update sudo apt-get install --no-install-recommends coturn 2단계: WebRTC용 Coturn 구성 WebRTC용 Coturn을 설정하려면 /etc/turnserver.conf 파일을 편집해야 합니다. 다음은 WebRTC용 Kurento Media Server와 함께 Coturn을 사용하기 위한 최소 구성 예입니다. # The external IP address of th..
· DEV/Backend
Kurento Media Server Docker 설치하는 방법 실행 환경 : Ubuntu 20.04 Docker 설치 sudo apt-get udpate sudo apt-get install docker.io Kurento Media Server용 Docker 이미지를 가져옵니다 이 이미지에는 Kurento Media Server의 로컬 apt-get 설치와 모든 추가 플러그인이 포함되어 있습니다. docker pull kurento/kurento-media-server:7.0.0 Docker 컨테이너를 실행합니다. 이 명령은 호스트의 네트워크 스택을 사용하여 Kurento Media Server 이미지로 새 컨테이너를 시작합니다 docker run -d --name kurento --network h..
· DEV/Backend
Kurento Media Server Local 설치하는 방법 GnuPG 설치 터미널을 열고 다음 명령을 실행하여 GnuPG가 설치되었는지 확인합니다. sudo apt-get update ; sudo apt-get install --no-install-recommends gnupg Kurento 저장소 추가 다음으로 시스템 구성에 Kurento 리포지토리를 추가해야 합니다. 다음 명령을 실행합니다. # Get DISTRIB_* env vars. source /etc/upstream-release/lsb-release 2>/dev/null || source /etc/lsb-release # Add Kurento repository key for apt-get. sudo apt-key adv \ --keys..
· DEV/Backend
WebRTC Signaling 프로세스 - 기초 Intro. WebRTC는 완전 P2P 기술이라, 서로 다른 네트워크에 있는 2개의 디바이스들을 연결하기 위해, 디바이스들의 위치와 미디어 포맷 협의가 필요하다 이 과정을 시그널링이라고 한다. 혼자 프로그램을 만들다보니, 디렉터리 구조나 함수 등을 모듈화하는데에 고민이 있고, 시그널링 관련 로직 처리에 대한 지식이 부족하기에 기술한다 Server 측 준비 사항 WebRTC 자체에서는 시그널링에 관한 전송 메커니즘을 제시하지 않으므로, 개발자가 취향껏 시그널링 서버를 통해 시그널링 관련 정보를 전달하면 된다. 서버의 역할 새로운 유저 등록, username 세팅 ,채팅 메세지 전송 등등 시그널링과 ICE Negotiation 특정 유저에게 메시지를 보낼 수 ..
· DEV/Backend
WebRTC 통신 설정하는 방법 Intro. 왜 궁금한가? socket.io로 방 관리를 하고, 시그널링 서버와 미디어 서버를 배포했다. fastify로 서버 인스턴스도 만들고 말이다. 그런데 막상 시그널링 코드를 짜려고 보니, 모르는 것 투성이라 기록한다. 일반적인 연결 흐름은 어떻게 되는가? 사용자 연결 가장 먼저 해야 할 일은 사용자 간의 연결이다. 가장 쉬운 방법은 두 사용자가 동일한 웹 사이트를 방문하는 것이다. 웹 페이지는 각 브라우저를 판별하고, 방 번호나 유저 ID 등을 발급함으로써 유저를 특정한다. 그 후 socket.io 등으로 시그널링 서버에 연결한다. 시그널링 시작 동일한 웹 페이지에 사용자가 접근했으니 이제 시그널링 메시지만 교환하면 된다. 시그널링 메세지란? 단순히 브라우저 사이..
· DEV/Backend
WebRTC Overview WebRTC(Web Real Time Communication)이란 중간자 없이 브라우저 간에 오디오나 영상 미디어를 포착하고, 스트림 등의 임의 데이터를 교환할 수 있도록하는 기술 제 3자 소프트웨어 설치 없이 종단 간 데이터 공유와 화상 회의를 가능하게 한다 WebRTC 사용법 RTCPeerConnection : 두 피어 간의 커넥션을 위한 인터 페이스 커넥션이 열리면 미디어 스트림/데이터 채널들울 커넥션에 연결할 수 있다. 시그널링을 하는 이유는 RTCPeerConnection에 사용할 정보를 얻기 위함 프로토콜,채널,코덱 및 형식, 데이터 전송 방법 등등 MediaStreamTrack : 미디어 스트림 정보를 다루는 인터페이스 Object로 음성,영상,텍스트를 포함하는..
· DEV/Backend
Intro. 왜 이 글을 쓰는가? kurento-client 라이브러리 ts도 있지만, 사용하고 싶지 않음 적은 레퍼런스, 혹시나 원하는 기능이 없는 경우를 만날 위험 존재 실패 사례 yarn dev @types/kurento-client --save-dev javascript로 된 라이브러리를 ts에서 가져다 쓰기 위해서는 타입을 선언해줘야 하기에 위처럼 install 한다. 하지만, 다운로드가 되었음에도 모듈이 없다는 에러가 발생했다. 해결 방법 yarn dev @types/kurento-client --save-dev yarn add kurento-client import kurento from "kurento-client"; const kurentoClient = kurento("ws://loca..
· DEV/Backend
ICE는 무엇인가 Interactive Connectivity Establishment (ICE) 는 브라우저가 peer를 통한 연결이 가능하도록 해주는 프레임 워크이다. WebRTC에서는 유저들을 브라우저 간 연결 할 네트워크 인터페이스와 포트를 찾고, 바인딩하는 과정을 ICE로 해결한다. 주의 사항 Peer에 접근 할 때 방화벽을 통과 해야 한다. 단말에 유일한 주소(Public IP)를 할당해야 한다. 라우터가 연결을 차단 할 경우 릴레이(우회)를 해야한다. ICE의 릴레이(우회) 앞서 말했다시피, 라우터 단에서 직접 연결을 차단 할 경우 데이터를 주고 받을 주소를 알 수 없다. 이 때 릴레이 서버를 이용한다. STUN(Session Traversal Utilities for NAT) 클라이언트가 ..
Intro. SDP SDP란 무엇일까? 왜 [[Kurento RTP 제어]] 이야기 할 때 등장하냐? 주고 받는 데이터는 무엇인가 Contents SDP는 해상도나 형식, 코덱, 암호화 등의 멀티미디어 컨텐츠의 연결을 설명하기 위한 메타데이터이다. 기술적으로는 SDP는 프로토콜은 아니다. 하지만, 디바이스 간의 미디어를 공유하기 위한 연결 정보 포맷을 제공한다. WebRTC에서 SDP는 미디어 스트림, 네트워크 주소 및 코덱 정보를 포함한, 두 Peer 간의 통신 세션 매개 변수를 정하는데 사용 된다. WebRTC 피어 간 공유하는 세션 정보를 담은 SDP 오퍼를 생성하고, 다른 피어에게 전달한다. 수신 피어는 SDP 오퍼를 분석하고, 수신 할 수 있는 미디어 유형과 연결 할 수 있는 네트워크 주소가 포..
berom
'개발/webrtc' 태그의 글 목록