Kinesis Video Streams API 및 프로듀서 라이브러리 지원 - Amazon Kinesis Video Streams

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Kinesis Video Streams API 및 프로듀서 라이브러리 지원

Kinesis Video Streams는 스트림을 생성 및 관리하고 스트림에서 미디어 데이터를 읽고 쓸 수 있는 API를 제공합니다. Kinesis Video Streams 콘솔은 관리 기능 외에도 라이브 video-on-demand 및 재생을 지원합니다. 또한 Kinesis Video Streams는 애플리케이션 코드에서 미디어 소스에서 데이터를 추출하고 Kinesis 비디오 스트림에 업로드하는 데 사용할 수 있는 프로듀서 라이브러리 세트를 제공합니다.

Kinesis Video Streams API

Kinesis Video Streams는 Kinesis 비디오 스트림을 생성하고 관리하기 위한 API를 제공합니다. 다음과 같이 미디어 데이터를 읽고 스트림에 쓸 수 있는 API도 제공합니다.

  • 프로듀서 API — Kinesis Video Streams는 Kinesis 비디오 스트림에 미디어 데이터를 쓰기 위한 API를 제공합니다PutMedia. PutMedia 요청에서 생산자는 미디어 조각 스트림을 전송합니다. 조각은 독립적인 프레임 시퀀스입니다. 조각에 속한 프레임은 다른 조각의 어떤 프레임에 대한 종속성도 없어야 합니다. 자세한 정보는 PutMedia을 참조하세요.

    프래그먼트가 도착하면 Kinesis Video Streams는 고유한 프래그먼트 번호를 오름차순으로 할당합니다. 또한 각 프래그먼트의 생산자측 및 서버측 타임스탬프를 Kinesis Video Streams별 메타데이터로 저장합니다.

  • 소비자 API — 소비자는 다음 API를 사용하여 스트림에서 데이터를 가져올 수 있습니다.

    • GetMedia - 이런 API를 사용할 때 소비자는 시작 조각을 식별해야 합니다. 그런 다음 API가 스트림에 추가되는 순서대로 조각을 반환합니다(조각 번호가 증가하는 순서대로). 조각에 있는 미디어 데이터는 Matroska(MKV)와 같은 구조화 형식으로 압축됩니다. 자세한 정보는 GetMedia을 참조하세요.

      참고

      GetMedia는 조각이 어디에 있는지 압니다(데이터 스토어에 보관되거나 실시간으로 사용 가능). 예를 들어, GetMedia가 시작 조각이 보관되어 있다고 판단하는 경우 데이터 스토어로부터 조각을 반환하기 시작합니다. 아직 보관되지 않은 새로운 프래그먼트를 반환해야 하는 경우 인메모리 스트림 버퍼에서 프래그먼트를 읽는 것으로 GetMedia 전환합니다.

      이는 스트림에 의해 수집되는 순서대로 조각을 처리하는 지속적 소비자의 예입니다.

      GetMedia는 비디오 처리 애플리케이션이 실패하거나 뒤쳐지는 경우 추가적인 작업 없이 따라잡을 수 있도록 합니다. 애플리케이션은 GetMedia를 사용하여 데이터 스토어에 보관되어 있는 데이터를 처리하고, 애플리케이션이 따라잡으면서 GetMedia가 계속하여 미디어 데이터를 데이터가 도착하는 대로 실시간으로 공급합니다.

    • GetMediaFromFragmentList (및 ListFragments) - 배치 처리 애플리케이션은 오프라인 소비자로 간주됩니다. 오프라인 소비자는 ListFragmentsGetMediaFromFragmentList API를 조합하여 특정 미디어 조각이나 비디오 범위를 명시적으로 가져올 수 있습니다. ListFragmentsGetMediaFromFragmentList는 애플리케이션이 특정 시간 범위 혹은 조각 범위에 대해 비디오 조각을 식별한 다음 순차적으로 혹은 병렬로 가져와 처리할 수 있게 해 줍니다. 이와 같은 접근 방식은 대량의 데이터를 병렬로 신속하게 처리해야 하는 MapReduce 애플리케이션 제품군에 적합합니다.

      예를 들어, 소비자가 하루 동안의 비디오 조각을 처리해야 하는 경우를 가정해 보겠습니다. 소비자는 다음을 수행할 것입니다.

      1. ListFragmentsAPI를 호출하고 원하는 프래그먼트 컬렉션을 선택할 수 있는 시간 범위를 지정하여 프래그먼트 목록을 가져옵니다.

        API는 지정된 범위 안에 있는 모든 조각으로부터 메타데이터를 반환합니다. 메타데이터는 프래그먼트 번호, 제작자 측 및 서버 측 타임스탬프 등과 같은 정보를 제공합니다.

      2. 조각 메타데이터 목록을 취하고 임의의 순서대로 조각을 검색합니다. 예를 들어 소비자는 하루 동안의 모든 프래그먼트를 처리하기 위해 목록을 하위 목록으로 분할하고 작업자 (예: 여러 Amazon EC2 인스턴스) 가 를 사용하여 GetMediaFromFragmentList 프래그먼트를 병렬로 가져와서 병렬로 처리하도록 할 수 있습니다.

다음 다이어그램은 이들 API 호출 동안의 조각 및 청크의 데이터 흐름을 보여 줍니다.

API 호출 동안의 조각 및 청크의 데이터 흐름을 보여 주는 다이어그램

생산자가 PutMedia 요청을 전송할 때 페이로드에 있는 미디어 메타데이터를 전송한 다음 미디어 데이터 조각의 시퀀스를 전송합니다. 데이터를 수신하면 Kinesis Video Streams는 들어오는 미디어 데이터를 Kinesis Video Streams 청크로 저장합니다. 각 청크는 다음과 같은 요소로 구성됩니다.

  • 미디어 메타데이터의 사본

  • 조각

  • Kinesis Video Streams별 메타데이터 (예: 프래그먼트 번호, 서버측 및 생산자측 타임스탬프)

소비자가 미디어 메타데이터를 요청하면 Kinesis Video Streams는 요청에서 지정한 프래그먼트 번호부터 시작하여 청크 스트림을 반환합니다.

스트림의 데이터 지속성을 활성화하면 스트림에서 프래그먼트를 수신한 후 Kinesis Video Streams는 프래그먼트의 복사본도 데이터 스토어에 저장합니다.

엔드포인트 검색 패턴

컨트롤 플레인 REST API

Kinesis Video Streams 컨트롤 플레인 REST API에 액세스하려면 Kinesis Video Streams 서비스 엔드포인트를 사용하십시오.

데이터 플레인 REST API

Kinesis Video Streams는 더 나은 확장 및 트래픽 격리 속성을 보장하기 위해 셀룰러 아키텍처를 사용하여 구축되었습니다. 각 스트림은 지역의 특정 셀에 매핑되므로 애플리케이션은 스트림이 매핑된 올바른 셀별 엔드포인트를 사용해야 합니다. Data Plane REST API에 액세스할 때는 올바른 엔드포인트를 직접 관리하고 매핑해야 합니다. 이 프로세스인 엔드포인트 검색 패턴은 다음과 같습니다.

  1. 엔드포인트 검색 패턴은 GetEndpoints 작업 중 하나에 대한 호출로 시작됩니다. 이러한 액션은 컨트롤 플레인에 속합니다.

    1. Amazon Kinesis Video Streams또는 Amazon Kinesis Video Streams 아카이브 서비스의 엔드포인트를 검색하는 경우 를 사용하십시오. GetDataEndpoint

    2. Amazon Kinesis Video Kinesis Video KinAmazon Kinesis Video Streams, 또는 Kinesis 비디오 시그널링에 대한 엔드포인트를 검색하는 경우에는 를 사용하십시오. GetSignalingChannelEndpoint

  2. 엔드포인트를 캐싱하고 재사용하십시오.

  3. 캐시된 엔드포인트가 더 이상 작동하지 않는 경우 를 새로 GetEndpoints 호출하여 엔드포인트를 새로 고치십시오.

프로듀서 라이브러리

Kinesis 비디오 스트림을 생성한 후 스트림으로 데이터 전송을 시작할 수 있습니다. 애플리케이션 코드에서 이러한 라이브러리를 사용하여 미디어 소스에서 데이터를 추출하고 Kinesis 비디오 스트림에 업로드할 수 있습니다. 사용 가능한 생산자 라이브러리에 대한 자세한 내용은 Kinesis 비디오 스트림 프로듀서 라이브러리 단원을 참조하십시오.