Amazon Web Services 한국 블로그

Amazon Kinesis Video Streams – 시각 지원 앱을 위한 서버리스 비디오 수집 및 저장

휴대폰, 보안 카메라, 아기용 모니터, 드론, 웹캠, 대시보드 카메라, 심지어 위성까지 모든 것들이 고강도의 고품질 비디오 스트림을 생성할 수 있습니다. 이제 가정, 사무실, 공장, 도시, 거리 및 고속도로 곳곳에 수많은 카메라가 있습니다. 홍수와 기타 자연 재해의 속성을 측정하고, 공공 안전을 높이고, 여러분의 자녀가 안전한지 알려줄 수 있습니다. 개인별 재미 있는 영상 속에서 멋진 순간을 저장하거나 공공 분야 교통량 문제를 식별하고 해결하는 데 도움이 되는 데이터를 수집하는 등의 활동을 하고 있습니다.

이러한 비디오 카메라의 데이터량을 감당하는 것은 어렵습니다. 스트림 수신은 예고 없이 개별적으로 또는 수백만번까지도 찾아옵니다. 스트림에는 미루거나 일시적으로 중단한다거나 좀 더 적절한 시기에 처리하도록 둘 수 없는 가치 있는 실시간 데이터가 포함되어 있습니다. 그러나, 원시 데이터를 보유하고 나면 다른 문제들이 발생합니다. 비디오 데이터를 저장, 암호화 및 인덱싱해야 합니다. 가치 추출, 즉 콘텐츠를 면밀히 분석하고 내용을 이해하며 조치를 취하도록 하는 것이 가장 중요한 다음 단계입니다.

새로운 Amazon Kinesis Video Streams
오늘 실시간 스트리밍 서비스인 Amazon Kinesis 패밀리의 신제품인 Amazon Kinesis Video Streams를 소개하겠습니다. 이제 자체 인프라를 설정 또는 실행할 필요 없이 수 백만 대의 카메라 디바이스에서 스트리밍 비디오(또는 기타 타임 인코딩 데이터)를 수집할 수 있습니다. Kinesis Video Streams는 수신 스트림을 허용하고, 이를 지속적으로 암호화된 형태로 저장하고, 타임 인덱스를 생성하며, 시각 지원 애플리케이션 생성을 지원합니다. Amazon Rekognition Video, MXNet, TensorFlow OpenCV 또는 자체 사용자 지정 코드를 사용하여 수신 스트림을 처리할 수 있으며,  꿈과 같은 신규 로봇 공학, 데이터 분석 및 소비자 앱을 지원합니다.

여러분을 위해 모든 인프라가 완전 관리됩니다. 우선 생산자 SDK(디바이스 측)를 사용하여 앱을 생성한 다음 원하는 디바이스에서 저희에게 비디오를 보냅니다. 안전한 TLS 연결을 통해 수신 비디오가 도달하면 타임 인덱스 형태로 저장되고, AWS Key Management Service(KMS)로 암호화됩니다. 그 다음은 Video Streams Parser Library(클라우드 측)를 사용하여 비디오 스트림을 소비하고 그로부터 가치를 추출합니다.

화질의 수준, 보내는 디바이스의 수에 관계없이 Kinesis Video Streams는 확장성을 통해 요구 사항을 충족합니다. 늘 말씀 드린 것처럼 여러분은 애플리케이션과 비즈니스에만 집중할 수 있습니다. Amazon Kinesis Video Streams는 여러분이 이미 알고 있는 AWS의 부분을 기반으로 합니다. 비용 효율적인 내구성을 위해 S3에 있는 비디오를 저장하고, AWS Identity and Access Management(IAM)를 사용하여 액세스를 제어합니다. 또한 AWS Management Console, AWS 명령줄 인터페이스(CLI)로부터 그리고 API 세트를 통해 액세스가 가능합니다.

Amazon Kinesis Video Streams 개념
몇 가지 개념을 살펴본 다음 스트림을 설정해 보겠습니다.

  • 생산자 – 생산자는 데이터를 비디오 스트림에 공급하는 데이터 원본입니다. 아기 모니터, 드론에 달린 비디오 카메라 또는 다른 특이한 무언가가 될 수도 있습니다. 온도 센서나 위성이 될 수도 있습니다! Amazon Kinesis Video 생산자 SDK는 연결 설정과 비디오 스트림을 손쉽게 하는 여러 기능을 제공합니다.
  • 스트림 – 스트림을 통해 라이브 비디오 데이터를 전송하고, 선택적으로 저장하고, 실시간 또는 배치를 통해 데이터를 소비할 수 있습니다. 스트림은 또한 오디오, 레이더, 광선 레이더 및 센서 판독 값을 포함한 기타 유형의 타임 인코딩된 데이터를 전달할 수 있습니다. 대부분의 경우 생산자와 스트림 사이에는 일대일 매핑이 있습니다. 복수의 비종속적 애플리케이션이 단일 스트림으로부터 데이터를 소비 및 처리할 수 있습니다.
  • 조각 및 프레임 – 조각은 스트림에서 시간 제한이 있는 개별 프레임 세트입니다.
  • 소비자 – 소비자는 스트림으로부터 데이터(조각 또는 프레임)을 가져와 이를 처리, 분석 또는 표시합니다. 소비자는 실시간 또는 작업 후에 실행할 수 있으며, Video Streams Parser Library 최상단에 빌드됩니다.

Amazon Kinesis Video Streams 사용하기
앞서 언급한 대로 생산자와 스트림 사이에는 일대일 매핑이 있습니다. 대부분의 경우 생산자의 각 인스턴스는 Kinesis Video Streams API를 사용하여 고유한 스트림을 생성합니다. 하지만 테스트 또는 데모를 목적으로 하는 경우, 또는 일정하게 적은 수의 스트림을 필요로 하는 경우 이를 수동으로 생성할 수 있습니다.

스트림을 수동으로 생성하기 위해 Kinesis Video Streams 콘솔을 열고 [Create Kinesis video stream]을 클릭하겠습니다.

스트림의 이름을 입력한 다음 [Create stream]을 클릭합니다.

스트림을 사용자 지정하고 싶다면 [Use default settings]을 선택 취소할 수도 있습니다(대부분의 설정을 이후 변경할 수 있습니다).

제 스트림은 즉시 사용 준비가 되었습니다. 스트림을 시작하는 대로 콘솔에 비디오가 표시됩니다.

Kinesis 팀이 저와 이 화면을 공유했지만 직접 살펴볼 시간은 없었습니다. 치타처럼 빠르게 넘어가도 되겠죠?

Amazon Kinesis Video Streams 개발
다음 단계는 생산자 SDK를 사용하여 생산자 앱을 빌드하는 것입니다. 앱은 디바이스에서 또는 현장에서 실행되고, 스트림을 생성하고 조각 스트림(각각 일반적으로 비디오의 2~10초를 나타냅니다)을 스트림에 게시하는 데 책임을 갖습니다. 이때 조각 스트림 게시 시 다음을 호출합니다. PutMedia 함수.

소비자 측에서는 다음을 호출합니다. GetMediaGetMediaFromFragmentList 함수를 호출하여 Matroska(MKV) 컨테이너 형식의 스트림으로부터 콘텐츠에 액세스합니다. 그리고 소비자 측에서는 Video Streams Parser Library에 포함된 것을 사용하여 원하는 콘텐츠를 추출합니다. GetMedia 는 매우 낮은 지연 시간으로 지속적인 스트리밍을 하는 데 사용됩니다. GetMediaFromFragment 목록은 배치 중심으로 선택적 처리를 가능케 합니다.

정식 출시
Amazon Kinesis Video Streams미국 동부(버지니아 북부), 미국 서부(오레곤), EU(아일랜드), EU(프랑크푸르트)아시아 태평양(도쿄) 리전에서 사용 가능하며, 이를 통해 시각 지원 서비스 빌드를 바로 시작할 수 있습니다. 요금은 생산된 비디오의 양, 소비된 비디오의 양, 저장된 비디오의 양을 기반으로 합니다.

Jeff;

이 글은 AWS re:Invnet 2017 소식으로 Amazon Kinesis Video Streams – Serverless Video Ingestion and Storage for Vision-Enabled Apps의 한국어 번역입니다.