목록Live-Streaming/WebRTC (7)
기록해야 기억에 남는다
1) FFmpeg이란? 마이클 니더마이어의 주도 하에 개발되고 있는 오픈소스 프로젝트 LGPL / GPL 라이선스를 따르며, 모든 동영상 / 사진 포맷들의 인코딩/디코딩을 목표로 개발 진행 중 FFmpeg 자체는 오픈소스 이지만 FFmpeg 내에 사용되고 있는 H.264/H.265와 같은 유료 (로열티 문제) --- FFmpeg에서는 다음과 같은 기능을 제공함 --- ffmpeg - 미디어 포맷 변환 도구 ffplay - 간이 파일 재생기 ffprobe - 미디어 정보 표시 도구 ffserver - 라이브 방송을 하는 멀티미디어 스트리밍 서버. 버전 3.4이후 제거되었다. libavcodec - 오디오/비디오 코덱 라이브러리 libavformat - 멀티미디어 컨테이너의 디먹서/먹서 라이브러리 libav..
1) RecorderEndpoint callback 비디오 녹화를 위해 RecorderEndpoint 생성 시 이벤트 리스너 콜백 함수를 등록 해줄 수 있다. addRecordingListener - 녹화가 시작되면 호출되는 이벤트 리스너 등록 addPausedListener - 녹화가 일시정지 되면 호출되는 이벤트 리스너 등록 addStoppedListener - 녹화가 중단되면 호출되는 이벤트 리스너 등록 위 세 가지 메소드가 RecorderEndpoint에 정의되어 있고, 상위 클래스에도 추가적인 메소드들이 존재한다. RecorderEndpoint - UriEndpoint - Endpoint - MediaElement - MediaObject - KurentoObject 순으로 상속 관계 addMe..
1) RecorderEndpoint Kurento에서 제공하는 모듈 중 하나로 미디어 스트림을 받아 녹화 (저장) 하는 역할을 수행함 처음 생성할 때 destination uri (path)와 MediaSpec 등을 정해주어야 하며, 이후 변경 불가능 1:N의 경우 송출자가 1명이므로 송출자에게만 RecorderEndpoint를 부착하면 되며, N:M 일 경우 각각의 송출자에 대해 RecorderEndpoint를 부착해야 함. 2) RecorderEndpoint 생성 new RecorderEndpoint.Builder(pipeline, destination_uri).withMediaProfile(media_profile_spec_type).build(); 으로 생성 (1) MediaPipeline pip..
1) Kurento 'One2ManyCall' example elements Peer (WebRtcEndpoint) (Presenter, Viewer) 미디어 송출, 수신 역할 Kurento Java Client API 요청 처리 역할 (signaling, session 생성 등) Kurento Media Server media stream 중계, 처리 → Kurento Java Client API를 사용하는 Spring-Boot 기반 애플리케이션 서버를 사용하여 Kurento Media Server 기능을 제어 (즉, Kurento Java Client 는 KMS 기능을 이용하기 위한 API 서버 역할을 수행함) → Kurento Media Server의 경우 native c++ 기반의 프로그램이며 여..
1) 'Kurento' 란 무엇인가? 'Kurento' or 'KMS (Kurento Media Server)'는 'webRTC' 플랫폼용 고급 비디오 애플리케이션을 개발하는 데 사용할 수 있는 멀티미디어 서버 패키지이다. 즉, webRTC 서비스를 위한 Signaling, STUN/TURN, Media 서버 기능을 제공한다. Kurento 이외에도 Mediasoup, Janus, Jitsi 등 다양한 오픈소스가 존재함. 2) 'Kurento'의 특징 2-1) 모듈식 파이프라인 제공 (modular pipelines) KMS (kurento media server)가 있고 미디어 서버에서 제공하는 기능을 조작하기 위한 Kurento client SDK 제공 여기서 client는 iOS, Android와 ..
1) 'SDP'란 무엇인가? SDP (Session Description Protocol)는 "인터넷 상에서 멀티미디어 세션 정보를 알려주기 위해 `멀티미디어 세션 또는 호(呼)에 대한 정보`를 기술하는 포멧 관련 프로토콜" 즉, 단말 간 미디어 타입 및 포맷을 협상하는 프로토콜 'Offer/Answer' 모델로 동작하며 멀티미디어 세션 파라미터를 협상 (negotiation) 할 때 중요한 역할을 함 ex) codec negotiation과 같은 'capability exchange' 수행 2) 능력교환, 'capability exchange' 란 무엇인가? 'capability exchange' (능력 교환) 영상 회의 등에서 임의의 두 단말이 상대방과 통신하기 위해 서로 통신할 수 있는 공통되는 능..
1) webRTC란 무엇인가? WebRTC (Web Real-Time Communication) → '웹 기반 실시간 통신 기술' 구글이 WebRTC의 기반이 되는 기술을 인수 (ex. On2, GIPS) 해서 오픈소스로 공개함. 웹 애플리케이션 (브라우저) 간 '중간 서버 없이' 오디오/비디오 등의 '데이터를 교환'할 수 있는 기술. 기본적으로 P2P로 동작하며 'UDP 기반의 RTP 프로토콜'을 사용함. 주요 브라우저에서 JavaScript API로 제공된다. 2) WebRTC를 이해하기 위한 사전 지식 2-1) NAT NAT (Network Address Translation)는 'private IP를 public IP로 대응하기 위한 기술' 여러 장치의 host가 하나의 public IP 주소를 ..