GetDASHStreamingSessionURL - Amazon Kinesis Video Streams

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

GetDASHStreamingSessionURL

스트림의 HTTP를 통한 MPEG 동적 적응형 스트리밍 (DASH) URL을 검색합니다. 그런 다음 미디어 플레이어에서 URL을 열어 스트림 콘텐츠를 볼 수 있습니다.

StreamNameStreamARN 매개 변수는 모두 선택 사항이지만 이 API 작업을 StreamARN 호출할 때는 StreamName 또는 를 지정해야 합니다.

Amazon Kinesis 비디오 스트림에는 MPEG-DASH를 통해 데이터를 제공하기 위한 다음과 같은 요구 사항이 있습니다.

다음 절차는 Kinesis Video Streams와 함께 MPEG-DASH를 사용하는 방법을 보여줍니다.

  1. GetDataEndpointAPI를 호출하여 엔드포인트를 확보하십시오. 그런 다음 GetDASHStreamingSessionURL --endpoint-url 파라미터를 사용하여 이 엔드포인트로 요청을 전송합니다.

  2. 를 사용하여 MPEG-DASH URL을 검색합니다. GetDASHStreamingSessionURL Kinesis Video Streams는 MPEG-DASH 프로토콜을 사용하여 스트림의 콘텐츠에 액세스하는 데 사용할 MPEG-DASH 스트리밍 세션을 생성합니다. GetDASHStreamingSessionURL세션의 MPEG-DASH 매니페스트 (MPEG-DASH로 스트리밍하는 데 필요한 루트 리소스) 의 인증된 URL (암호화된 세션 토큰 포함) 을 반환합니다.

    참고

    승인되지 않은 주체가 액세스할 수 있는 곳에 이 토큰을 공유하거나 저장하지 마십시오. 토큰은 스트림 콘텐츠에 대한 액세스를 제공합니다. AWS 자격 증명에 사용하는 것과 동일한 방법으로 토큰을 보호하십시오.

    매니페스트를 통해 사용할 수 있는 미디어는 요청된 스트림, 시간 범위 및 형식으로만 구성됩니다. 다른 미디어 데이터 (예: 요청된 창 밖의 프레임 또는 대체 비트레이트) 는 사용할 수 없습니다.

  3. MPEG-DASH 프로토콜을 지원하는 미디어 플레이어에 MPEG-DASH 매니페스트의 URL (암호화된 세션 토큰 포함) 을 제공하십시오. Kinesis Video Streams를 사용하면 매니페스트 URL을 통해 초기화 프래그먼트와 미디어 프래그먼트를 사용할 수 있습니다. 초기화 프래그먼트에는 스트림의 코덱 전용 데이터와 비디오 또는 오디오 디코더 및 렌더러를 설정하는 데 필요한 기타 데이터가 포함됩니다. 미디어 프래그먼트에는 인코딩된 비디오 프레임 또는 인코딩된 오디오 샘플이 포함됩니다.

  4. 미디어 플레이어는 인증된 URL을 수신하고 스트림 메타데이터와 미디어 데이터를 정상적으로 요청합니다. 미디어 플레이어가 데이터를 요청하면 다음 액션을 호출합니다.

    • GetDashManifest: 재생하려는 미디어의 메타데이터가 포함된 MPEG DASH 매니페스트를 검색합니다.

    • GetMP4 InitFragment: MP4 초기화 프래그먼트를 검색합니다. 미디어 플레이어는 일반적으로 미디어 프래그먼트를 로드하기 전에 초기화 프래그먼트를 로드합니다. 이 프래그먼트에는 "" 및 fytp "moov" MP4 아톰과 미디어 플레이어 디코더를 초기화하는 데 필요한 하위 아톰이 포함되어 있습니다.

      초기화 프래그먼트는 Kinesis 비디오 스트림의 프래그먼트와 일치하지 않습니다. 여기에는 미디어 플레이어가 미디어 프레임을 디코딩하는 데 필요한 스트림 및 해당 트랙의 코덱 전용 데이터만 포함됩니다.

    • GetMP4MediaFragment: MP4 미디어 프래그먼트를 검색합니다. 이러한 프래그먼트에는 인코딩된 프래그먼트의 미디어 프레임과 타임스탬프가 들어 있는 mdat "" 및 "" MP4 원자와 해당 하위 원자가 포함됩니다. moof

      중요

      각 프래그먼트에 포함된 코덱 전용 데이터 (CPD) 에는 프래그먼트를 올바르게 디코딩하는 데 필요한 프레임 속도, 해상도, 인코딩 프로파일 등 코덱별 초기화 정보가 포함되어 있습니다. 스트리밍 세션 중에는 CPD 변경이 지원되지 않습니다. CPD는 쿼리된 미디어를 통해 일관성을 유지해야 합니다.

      중요

      트랙 변경은 지원되지 않습니다. 트랙은 쿼리된 미디어 전체에서 일관성을 유지해야 합니다. 스트림의 프래그먼트가 비디오만 포함되다가 오디오와 비디오를 모두 포함하는 것으로 변경되거나 AAC 오디오 트랙이 A-Law 오디오 트랙으로 변경되면 스트리밍이 실패합니다.

      이 작업으로 검색된 데이터에는 요금이 청구됩니다. 자세한 내용은 요금을 참조하세요.

참고

MPEG-DASH 세션에 적용되는 제한 사항은 Kinesis Video Streams 제한을 참조하십시오.

GetMP4MediaFragment.OutgoingBytesAmazon CloudWatch 지표를 모니터링하여 미디어 플레이어가 소비하는 데이터의 양을 모니터링할 수 있습니다. Kinesis Video Streams를 모니터링하는 CloudWatch 데 사용하는 방법에 대한 자세한 내용은 Kinesis 비디오 스트림 모니터링을 참조하십시오. 요금 정보는 Amazon Kinesis Video Streams 요금 AWS 및 요금을 참조하십시오. HLS 세션과 발신 AWS 데이터에 대한 요금이 모두 적용됩니다.

HLS에 대한 자세한 내용은 Apple 개발자 사이트의 HTTP 라이브 스트리밍을 참조하십시오.

중요

Kinesis Video Streams 아카이브 미디어 API를 호출한 후 오류가 발생하는 경우 HTTP 상태 코드 및 응답 본문 외에도 다음과 같은 정보가 포함됩니다.

  • x-amz-ErrorTypeHTTP 헤더 — HTTP 상태 코드가 제공하는 내용 외에도 보다 구체적인 오류 유형을 포함합니다.

  • x-amz-RequestIdHTTP 헤더 — 지원 팀에 문제를 보고하려는 경우 요청 ID를 제공하면 문제를 더 잘 진단할 수 있습니다. AWS

HTTP 상태 코드와 ErrorType 헤더를 모두 사용하여 오류를 재시도할 수 있는지 여부와 조건에 대해 프로그래밍 방식으로 결정할 수 있으며, 클라이언트 프로그래머가 성공적으로 다시 시도하기 위해 취해야 할 조치에 대한 정보도 제공할 수 있습니다.

자세한 내용은 이 항목 하단의 오류 섹션 및 일반적인 오류를 참조하십시오.

Request Syntax

POST /getDASHStreamingSessionURL HTTP/1.1 Content-type: application/json { "DASHFragmentSelector": { "FragmentSelectorType": "string", "TimestampRange": { "EndTimestamp": number, "StartTimestamp": number } }, "DisplayFragmentNumber": "string", "DisplayFragmentTimestamp": "string", "Expires": number, "MaxManifestFragmentResults": number, "PlaybackMode": "string", "StreamARN": "string", "StreamName": "string" }

URI 요청 파라미터

요청은 URI 파라미터를 사용하지 않습니다.

요청 본문

요청은 JSON 형식으로 다음 데이터를 받습니다.

DASHFragmentSelector

요청된 프래그먼트의 시간 범위 및 타임스탬프의 소스.

이 파라미터는 또는 인 경우 PlaybackMode 필수입니다. ON_DEMAND LIVE_REPLAY 있는 경우 이 매개변수는 PlaybackMode 선택사항입니다 LIVE. PlaybackModeLIVE인 경우 는 설정할 FragmentSelectorType 수 있지만 TimestampRange 설정해서는 안 됩니다. ON_DEMAND또는 PlaybackMode LIVE_REPLAY 인 경우 둘 다 FragmentSelectorType TimestampRange 설정해야 합니다.

유형: DASHFragmentSelector객체

필수 여부: 아니요

DisplayFragmentNumber

프래그먼트는 세션의 시퀀스 번호를 기반으로 매니페스트 파일에서 식별됩니다. 로 ALWAYS 설정하면 Kinesis Video Streams 프래그먼트 번호가 속성 이름이 “kvs:fn”인 매니페스트 파일의 각 S 요소에 추가됩니다. DisplayFragmentNumber 이러한 프래그먼트 번호는 로깅에 사용하거나 다른 API (예: 및) 와 함께 사용할 수 있습니다. GetMedia GetMediaForFragmentList 이러한 사용자 지정 속성을 활용하려면 사용자 지정 MPEG-DASH 미디어 플레이어가 필요합니다.

기본 값은 NEVER입니다.

타입: 문자열

유효 값: ALWAYS | NEVER

필수 여부: 아니요

DisplayFragmentTimestamp

MPEG-DASH 사양에 따라 매니페스트 파일에 있는 프래그먼트의 월 클럭 시간은 매니페스트 자체의 속성을 사용하여 도출할 수 있습니다. 그러나 일반적으로 MPEG-DASH 호환 미디어 플레이어는 미디어 타임라인의 격차를 제대로 처리하지 못합니다. Kinesis Video Streams는 매니페스트 파일의 미디어 타임라인을 조정하여 불연속성이 있는 미디어를 재생할 수 있도록 합니다. 따라서 매니페스트 파일에서 파생된 벽시계 시간이 정확하지 않을 수 있습니다. 로 설정하면 속성 이름이 “ALWAYSkvs:ts”인 매니페스트 파일의 각 S 요소에 정확한 프래그먼트 타임스탬프가 추가됩니다. DisplayFragmentTimestamp 이 사용자 지정 특성을 활용하려면 사용자 지정 MPEG-DASH 미디어 플레이어가 필요합니다.

기본 값은 NEVER입니다. DASHFragmentSelectorSERVER_TIMESTAMP인 경우 타임스탬프는 서버 시작 타임스탬프가 됩니다. 마찬가지로, DASHFragmentSelector is가 PRODUCER_TIMESTAMP 되면 타임스탬프가 프로듀서 시작 타임스탬프가 됩니다.

타입: 문자열

유효 값: ALWAYS | NEVER

필수 여부: 아니요

Expires

요청된 세션이 만료될 때까지의 시간 (초). 이 값은 300 (5분) 에서 43200 (12시간) 사이일 수 있습니다.

세션이 만료되면 해당 세션에 대해 새 전화를 걸거나 전화를 걸 GetMP4MediaFragment 수 없습니다. GetDashManifest GetMP4InitFragment

기본값은 300(5분)입니다.

유형: 정수

유효 범위: 최소값은 300입니다. 최대 값은 43200입니다.

필수 여부: 아니요

MaxManifestFragmentResults

MPEG-DASH 매니페스트에서 반환되는 최대 프래그먼트 수입니다.

PlaybackMode 경우 가장 최근의 프래그먼트가 이 값까지 반환됩니다. LIVE is인 경우 PlaybackModeON_DEMAND 최대 개수까지 가장 오래된 프래그먼트가 반환됩니다.

라이브 MPEG-DASH 매니페스트에서 사용할 수 있는 프래그먼트 수가 많으면 비디오 플레이어가 재생을 시작하기 전에 콘텐츠를 버퍼링하는 경우가 많습니다. 버퍼 크기를 늘리면 재생 지연 시간은 늘어나지만 재생 중에 리버퍼링이 발생할 가능성은 줄어듭니다. 라이브 MPEG-DASH 매니페스트에는 최소 3개의 프래그먼트와 최대 10개의 프래그먼트가 있는 것이 좋습니다.

기본값은 또는 인 경우 5개 프래그먼트이고, PlaybackMode 인 경우 1,000개입니다LIVE. LIVE_REPLAY PlaybackMode ON_DEMAND

최대 값인 1,000개의 프래그먼트는 1초 프래그먼트가 있는 스트림의 경우 16분 이상의 비디오에 해당하고, 10초 프래그먼트가 포함된 스트림의 경우 2시간 반 이상의 비디오에 해당합니다.

타입: Long

유효 범위: 최소값 1. 최대값은 5000입니다.

필수 여부: 아니요

PlaybackMode

실시간, 실시간 리플레이 또는 아카이브된 온디맨드 데이터 중 무엇을 검색할지 여부.

세 가지 유형의 세션의 특징은 다음과 같습니다.

  • LIVE: 이 유형의 세션의 경우 MPEG-DASH 매니페스트는 사용 가능한 최신 프래그먼트로 계속 업데이트됩니다. 미디어 플레이어가 1초 간격으로 새 매니페스트를 검색하는 것이 좋습니다. 미디어 플레이어에서 이러한 유형의 세션을 재생하면 일반적으로 사용자 인터페이스에 “실시간” 알림이 표시되며, 이 알림은 재생 창에서 표시할 위치를 선택할 수 있는 스크러버 컨트롤이 없습니다.

    참고

    LIVE모드에서는 프래그먼트 사이에 간격이 있더라도 (즉, 프래그먼트가 없는 경우) 사용 가능한 최신 프래그먼트가 MPEG-DASH 매니페스트에 포함됩니다. 이와 같은 간격이 생기면 미디어 플레이어가 멈추거나 재생이 갑자기 중단될 수 있습니다. 이 모드에서는 플레이리스트의 최신 프래그먼트보다 오래된 프래그먼트가 MPEG-DASH 매니페스트에 추가되지 않습니다. 후속 프래그먼트가 매니페스트에 추가된 후 누락된 프래그먼트를 사용할 수 있게 되면 이전 프래그먼트는 추가되지 않고 공백도 메워지지 않습니다.

  • LIVE_REPLAY: 이 유형의 세션에서 MPEG-DASH 매니페스트는 지정된 시작 시간의 프래그먼트를 포함하여 시작한다는 점을 제외하면 LIVE 모드 업데이트 방식과 비슷하게 업데이트됩니다. 프래그먼트가 인제스트될 때 추가되는 대신 다음 프래그먼트의 지속 시간이 경과하면 프래그먼트가 추가됩니다. 예를 들어 세션의 프래그먼트 길이가 2초인 경우 2초마다 매니페스트에 새 프래그먼트가 추가됩니다. 이 모드는 이벤트가 감지된 시점부터 재생을 시작하고 세션 생성 시점에 아직 인제스트되지 않은 미디어를 계속 라이브 스트리밍할 수 있는 데 유용합니다. 이 모드는 모드에서 1,000개의 프래그먼트 한도에 제한되지 않고 이전에 보관된 미디어를 스트리밍하는 데에도 유용합니다. ON_DEMAND

  • ON_DEMAND: 이 유형의 세션의 경우 MPEG-DASH 매니페스트에는 세션의 모든 프래그먼트가 지정된 수까지 포함됩니다. MaxManifestFragmentResults 매니페스트는 각 세션마다 한 번만 검색해야 합니다. 미디어 플레이어에서 이러한 유형의 세션을 재생하면 일반적으로 사용자 인터페이스에는 표시할 재생 창의 위치를 선택할 수 있는 스크러버 컨트롤이 표시됩니다.

모든 재생 모드에서 동일한 시작 타임스탬프를 가진 프래그먼트가 여러 개 있는 경우 프래그먼트 수가 더 큰 프래그먼트 (즉, 최신 프래그먼트) 가 MPEG-DASH 매니페스트에 포함됩니다. FragmentSelectorType PRODUCER_TIMESTAMP 다른 프래그먼트는 포함되지 않습니다. 타임스탬프는 다르지만 지속 시간이 겹치는 프래그먼트는 여전히 MPEG-DASH 매니페스트에 포함됩니다. 이로 인해 미디어 플레이어에서 예상치 못한 동작이 발생할 수 있습니다.

기본값은 LIVE입니다.

타입: 문자열

유효 값: LIVE | LIVE_REPLAY | ON_DEMAND

필수 여부: 아니요

StreamARN

MPEG-DASH 매니페스트 URL을 검색할 스트림의 Amazon 리소스 이름 (ARN) 입니다.

또는 를 지정해야 합니다. StreamName StreamARN

유형: 문자열

길이 제약: 최소 길이 1. 최대 길이는 1024입니다.

패턴: arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+

Required: No

StreamName

MPEG-DASH 매니페스트 URL을 검색할 스트림의 이름입니다.

또는 를 지정해야 합니다. StreamName StreamARN

유형: 문자열

길이 제약 조건: 최소 길이는 1입니다. 최대 길이는 256입니다.

패턴: [a-zA-Z0-9_.-]+

필수 여부: 아니요

응답 구문

HTTP/1.1 200 Content-type: application/json { "DASHStreamingSessionURL": "string" }

응답 요소

작업이 성공하면 서비스가 HTTP 200 응답을 반송합니다.

다음 데이터는 서비스에 의해 JSON 형식으로 반환됩니다.

DASHStreamingSessionURL

미디어 플레이어가 MPEG-DASH 매니페스트를 검색하는 데 사용할 수 있는 URL (세션 토큰 포함).

타입: 문자열

Errors

모든 작업에 공통되는 오류에 대한 내용은 일반적인 오류 섹션을 참조하십시오.

ClientLimitExceededException

한도를 초과했기 때문에 Kinesis Video Streams가 요청 병목 현상을 일으켰습니다. 나중에 전화를 걸어 보세요. 제한에 대한 자세한 내용은 Kinesis Video Streams 제한을 참조하십시오.

HTTP 상태 코드: 400

InvalidArgumentException

지정된 파라미터는 제한을 초과하거나, 지원되지 않거나, 사용할 수 없습니다.

HTTP 상태 코드: 400

InvalidCodecPrivateDataException

비디오 스트림의 트랙 중 하나 이상에 있는 코덱 개인 데이터는 이 작업에 유효하지 않습니다.

HTTP 상태 코드: 400

MissingCodecPrivateDataException

비디오 스트림의 트랙 중 하나 이상에서 코덱 개인 데이터를 찾을 수 없습니다.

HTTP 상태 코드: 400

NoDataRetentionException

GetImages데이터를 보관하지 않는 스트림 (즉, a가 0인 스트림) 에 DataRetentionInHours 대해 요청되었습니다.

HTTP 상태 코드: 400

NotAuthorizedException

상태 코드: 403, 호출자가 지정된 스트림에서 작업을 수행할 권한이 없거나 토큰이 만료되었습니다.

HTTP 상태 코드: 401

ResourceNotFoundException

GetImagesKinesis Video Streams에서 지정한 스트림을 찾을 수 없는 경우 이 오류가 발생합니다.

GetHLSStreamingSessionURL요청된 시간 범위 내에 LIVE_REPLAY 프래그먼트가 없는 스트림에 대해 a ON_DEMAND 또는 f가 있는 세션이 요청되거나 지난 30초 내에 LIVE 프래그먼트가 없는 스트림에 대해 a가 있는 세션이 요청되면 이 GetDASHStreamingSessionURL 오류가 발생합니다. PlaybackMode PlaybackMode

HTTP 상태 코드: 404

UnsupportedStreamMediaTypeException

재생 세션의 첫 번째 프래그먼트에 있는 트랙의 코덱 ID로는 미디어 유형 (예: h.264 또는 h.265 비디오 또는 AAC 또는 G.711 오디오) 을 결정할 수 없습니다. 트랙 1의 코덱 ID는 다음과 같아야 하고, 선택적으로 트랙 2의 코덱 ID는 다음과 같아야 합니다. V_MPEG/ISO/AVC A_AAC

HTTP 상태 코드: 400

참고

언어별 AWS SDK 중 하나에서 이 API를 사용하는 방법에 대한 자세한 내용은 다음을 참조하십시오.