Kinesis Video Streams 란?
- 스마트폰, 보안 카메라, 웹캠, 차량 내장 카메라, 드론 등의 디바이스에서 제공되는 동영상을 API를 사용하여 클라우드로 스트리밍하거나 실시간 비디오 처리 또는 동영상 분석을 위한 애플리케이션을 빌드하는데 사용할 수 있는 완전 관리형 AWS 서비스입니다.
Kinesis Video Streams 구성 요소
- 생산자 : 보안 카메라, 스마트폰 카메라, 대시보드 카메라와 같은 임의의 영상 생성 디바이스를 사용하여 데이터를 Kinesis 비디오 스트림에 공급하는 임의의 소스 생산자이며 하나 이상의 비디오 스트림을 생성할 수 있습니다.
- 소비자 : Kinesis 비디오 스트림으로부터 조각 및 프레임과 같은 데이터를 가져와 열람 및 처리하거나 분석합니다.
- 청크 : 생산자로부터 데이터를 수신하면 들어오는 미디어 데이터를 저장하는 저장소이며 소비자가 미디어 데이터를 요청하면 지정한 조각 번호로 시작하는 청크 스크립을 반환합니다.
*** 조각은 독립적인 미디어 프레임 시퀀스입니다. 조각에 속한 프레임은 다른 조각의 어떤 프레임에 대한 종속성도 없어야 합니다.
*** 시퀀스가 모여서 한 개의 프레임이 되며 프레임은 영상에 뿌려지는 낱 장으로 프레임이 모여서 영상이 됩니다..
Kinesis Video Streams 구성 요소
- 생산자 : 보안 카메라, 스마트폰 카메라, 대시보드 카메라와 같은 임의의 영상 생성 디바이스를 사용하여 데이터를 Kinesis 비디오 스트림에 공급하는 임의의 소스 생산자이며 하나 이상의 비디오 스트림을 생성할 수 있습니다.
- 소비자 : Kinesis 비디오 스트림으로부터 조각 및 프레임과 같은 데이터를 가져와 열람 및 처리하거나 분석합니다.
- 청크 : 생산자로부터 데이터를 수신하면 들어오는 미디어 데이터를 저장하는 저장소이며 소비자가 미디어 데이터를 요청하면 지정한 조각 번호로 시작하는 청크 스크립을 반환합니다.
WebRTC 란?
- 라이브 비디오를 디바이스에서 API를 통해 웹 브라우저, 모바일 애플리케이션 및 연결된 디바이스간에 실시간 통신을 가능하게 하는 오픈소스 프로젝트입니다.
- 연결된 피어간 지연시간이 짧은 미디어 스트리밍을 제공합니다.
WebRTC 기술 개요
- P2P 연결을 설정하기 위해 상호연결설정(ICE), TURN, STUN을 비롯한 IETF 프로토콜을 포합합니다.
- 완전 관리형 기능으로서 애플리케이션과 디바이스간에 미디어를 안전하게 스트림하기 위해 신호 또는 미디어 중계 서버와 같은 WebRTC 관련 클라우드 인프라를 구축, 운영 또는 확장할 필요가 없습니다.
- 모든 WebRTC 통신은 표준화된 암호화 프로토콜을 통해 안전하게 암호화됩니다.
*** P2P 연결은 인터넷을 사용중인 다수의 사용자들이 서버를 거치지 않고 직접 데이터를 전송할 수 있도록 하는 연결 방식을 의미합니다.
WebRTC 구성 요소
- Signaling Channel : 애플리케이션이 신호 메시지를 교환하여 P2P 연결을 검색, 설정 제어 및 종료할 수 있도록하는 리소스입니다.
- Peer : 웹캠, 모바일 등 Kinesis Video Strams with WebRTC 를 사용해서 실시간 양방향 스트리밍을 위해 구성된 모든 디바이스 또는 애플리케이션입니다.
- Master : 연결을 시작하고 신호 채널의 연결된 Viewer 와 미디어를 검색하고 교환할 수 있는 기능을 통해 신호 채널에 연결되는 Peer 입니다. 신호 채널에는 최대 1개의 Master 만 연결 가능합니다.
- Viewer : 신호 채널에서 Master 의 미디어를 검색하고 교환할 수 있는 기능으로 신호 채널에 연결된 Peer 입니다. 제공되는 신호 채널을 통해 다른 시청자를 발견하거나 상호 작용할 수 없으며 최대 10개의 Viewer 만 연결 가능합니다.
- SDP : 데이터가 전송되면 두 Peer 가 서로 이해할 수 있도록 해상도, 코덱, 암호화 등과 같은 연결의 멀티미디어 콘텐츠를 설명하는 표준입니다.
- SDP Offer : 세션을 생성하거나 수정하기 위해 세션 설명을 생성하는 에이저트가 보낸 SDP 메시지입니다.
- SDP Answer : 제안자로부터 받은 제안에 대한 응답으로 응답자가 보낸 SDP 메시지입니다.
- ICE : 웹 브라우저가 Peer 와 통신에 사용할 수 있는 방법입니다.
- ICE candidate : 송신 Peer 가 통신에 사용할 수 있는 방법입니다.
- webRTC SDK : WebRTC 기능이 있는 카메라 장치가 지연 시간이 짧은 P2P 미디어 스트리밍에 연결할 수 있도록 장치 및 애플리케이션 클라이언트에서 다운로드, 설치 및 구성할 수 있는 소프트웨어 라이브러리입니다.
- STUN(Session Traversal Utilities for NAT) : NAT 용 세션 탐색 유틸리티를 의미하며 Public IP 를 검색하고 Peer 와의 직접 연결을 방해하는 라우터의 제한을 결정하는데 사용되는 프로토콜입니다.
*** 애플리케이션이 NAT 또는 방화벽 뒤에 위치한 경우 Kinesis Video Streams STUN 엔드포인트를 사용하여 Public 주소를 검색할 수 있습니다. - TURN(Traversal Using Relays around NAT) : NAT 주변의 릴레이를 사용한 순회를 의미하며 TURN 서버와의 연결을 열고 해당 서버를 통해 모든 정보를 중계하여 대칭 NAT 제한을 우회하는데 사용되는 프로토콜입니다.
*** NAT 또는 방화벽이 직업 연결(대칭 NAT 의 경우)을 허용하지 않는 경우 클라우드를 통해 미디어를 중계하는 Kinesis Video Streams TURN 엔트포인트에 연결할 수 있습니다.
WebRTC 주요 사용 포트
- RTP(실시간 전송 프로토콜) : 5004 포트를 사용합니다.
- Signaling 단계 : 80 / 443 (WebSockets : TCP 접속에 통신 채널을 제공하는 통신 프로토콜) 포트를 사용해서 신호를 보냅니다.
- Discovery 단계 : 3478 포트를 사용해서 서버와 통신합니다.
- P2P 연결 : 0 – 65535 범위에서 임의 포트를 사용해서 연결합니다.
WebRTC 작동 방식
지금까지 간단하게 AppStream 2.0에 대해 알아보았습니다.
자세한 안내는 AWS의 관리 안내서를 참고하시기 바랍니다.
https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/what-is-kvswebrtc.html
감사합니다.
SA 김봉진