

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# GetDASHStreamingSessionURL
<a name="API_reader_GetDASHStreamingSessionURL"></a>

擷取串流的 MPEG 動態自適應串流透過 HTTP (DASH) URL。然後，您可以在媒體播放器中開啟 URL 以檢視串流內容。

`StreamName` 和 `StreamARN` 參數都是選用的，但您必須在叫用此 API 操作`StreamARN`時指定 `StreamName`或 。

Amazon Kinesis 影片串流對於透過 MPEG-DASH 提供資料有下列需求：
+  [影片播放軌跡需求](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/video-playback-requirements.html)。
+ 資料保留必須大於 0。
+ 每個片段的影片軌道必須針對視訊媒體的 H.264 格式的進階視訊編碼 (AVC)，以及針對 H.265 格式的 HEVC 中包含轉碼器私有資料。如需詳細資訊，請參閱 [MPEG-4 specification ISO/IEC 14496-15](https://www.iso.org/standard/55980.html)。如需將串流資料轉換為特定格式的相關資訊，請參閱 [NAL Adaptation Flags](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-reference-nal.html)。
+ 每個片段的音訊軌道 (如果有) 必須包含 AAC 格式的編碼器私有資料 ([AAC 規格 ISO/IEC 13818-7](https://www.iso.org/standard/43345.html)) 或 [MS Wave 格式](https://www.mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html)。

下列程序說明如何搭配 Kinesis Video Streams 使用 MPEG-DASH：

1. 呼叫 `GetDataEndpoint` API 以取得端點。然後使用 [--endpoint-url 參數](https://docs.aws.amazon.com/cli/latest/reference/)將`GetDASHStreamingSessionURL`請求傳送至此端點。

1. 使用 擷取 MPEG-DASH URL`GetDASHStreamingSessionURL`。Kinesis Video Streams 會建立 MPEG-DASH 串流工作階段，用於使用 MPEG-DASH 通訊協定存取串流中的內容。 `GetDASHStreamingSessionURL`會傳回工作階段 MPEG-DASH *資訊清單* （使用 MPEG-DASH 串流所需的根資源） 的已驗證 URL （包括加密工作階段字符）。
**注意**  
不要在未經授權的實體可以存取它的地方共用或存放此字符。權杖可讓您存取串流的內容。使用與 AWS 登入資料搭配使用的相同量值來保護字符。

   透過資訊清單提供的媒體僅包含請求的串流、時間範圍和格式。不提供其他媒體資料 （例如請求視窗外的影格或替代位元速率）。

1. 將 MPEG-DASH 資訊清單的 URL （包含加密的工作階段字符） 提供給支援 MPEG-DASH 通訊協定的媒體播放器。Kinesis Video Streams 透過資訊清單 URL 提供初始化片段和媒體片段。初始化片段包含串流的轉碼器私有資料，以及設定視訊或音訊解碼器和轉譯器所需的其他資料。媒體片段包含編碼的影片影格或編碼的音訊範例。

1. 媒體播放器會正常接收已驗證的 URL 並請求串流中繼資料和媒體資料。當媒體播放器請求資料時，它會呼叫下列動作：
   +  **GetDASHManifest：**擷取 MPEG DASH 資訊清單，其中包含您要播放之媒體的中繼資料。
   +  **GetMP4InitFragment：**擷取 MP4 初始化片段。媒體播放器通常會先載入初始化片段，再載入任何媒體片段。此片段包含「`fytp`」和「`moov`」MP4 原子，以及初始化媒體播放器解碼器所需的子原子。

     初始化片段不會對應至 Kinesis 影片串流中的片段。它只包含串流和個別軌道的轉碼器私有資料，媒體播放器需要這些資料來解碼媒體影格。
   +  **GetMP4MediaFragment：**擷取 MP4 媒體片段。這些片段包含「`moof`」和「`mdat`」MP4 原子及其子原子，其中包含編碼片段的媒體影格及其時間戳記。
**重要**  
每個片段中包含的轉碼器私有資料 (CPD) 包含轉碼器特定的初始化資訊，例如影格速率、解析度和編碼描述檔，這些是正確解碼片段的必要資訊。串流工作階段期間不支援 CPD 變更。CPD 必須透過查詢的媒體保持一致。
**重要**  
不支援追蹤變更。追蹤在整個查詢媒體中必須保持一致。如果串流中的片段從只有視訊變更為同時擁有音訊和視訊，或者 AAC 音軌變更為 A-Law 音軌，則串流將會失敗。

     使用此動作擷取的資料可計費。如需詳細資訊，請參閱 [定價](https://aws.amazon.com/kinesis/video-streams/pricing/)。

**注意**  
如需適用於 MPEG-DASH 工作階段的限制，請參閱 [Kinesis Video Streams 配額](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html)。

您可以透過監控 `GetMP4MediaFragment.OutgoingBytes`Amazon CloudWatch 指標來監控媒體播放器使用的資料量。如需有關使用 CloudWatch 監控 Kinesis Video Streams 的資訊，請參閱[監控 Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/monitoring.html)。如需定價資訊，請參閱 [Amazon Kinesis Video Streams 定價](https://aws.amazon.com/kinesis/video-streams/pricing/)和[AWS 定價](https://aws.amazon.com/pricing/)。同時收取 HLS 工作階段和傳出 AWS 資料的費用。

如需 HLS 的詳細資訊，請參閱 [Apple 開發人員](https://developer.apple.com)網站上的 [HTTP 即時串流](https://developer.apple.com/streaming/)。

**重要**  
如果在叫用 Kinesis Video Streams 封存媒體 API 後擲出錯誤，除了 HTTP 狀態碼和回應內文之外，還包含下列資訊：  
 `x-amz-ErrorType` HTTP 標頭 – 除了 HTTP 狀態碼提供的內容之外，還包含更具體的錯誤類型。
 `x-amz-RequestId` HTTP 標頭 – 如果您想要向支援團隊報告問題 AWS ，如果指定請求 ID，則更能診斷問題。
HTTP 狀態碼和 ErrorType 標頭都可以用來對錯誤是否可以重試和在何種條件下進行程式設計決策，並提供用戶端程式設計人員可能需要採取的動作的相關資訊，以便成功重試。  
如需詳細資訊，請參閱本主題底部的**錯誤**區段，以及[常見錯誤](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html)。

## 請求語法
<a name="API_reader_GetDASHStreamingSessionURL_RequestSyntax"></a>

```
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 請求參數
<a name="API_reader_GetDASHStreamingSessionURL_RequestParameters"></a>

請求不會使用任何 URI 參數。

## 請求主體
<a name="API_reader_GetDASHStreamingSessionURL_RequestBody"></a>

請求接受採用 JSON 格式的下列資料。

 ** [DASHFragmentSelector](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-DASHFragmentSelector"></a>
所請求片段的時間範圍和時間戳記的來源。  
如果 `PlaybackMode`是 `ON_DEMAND`或 ，則需要此參數`LIVE_REPLAY`。如果 PlaybackMode 為`` ，則此參數為選用`LIVE`。如果 `PlaybackMode`是 `LIVE`，`FragmentSelectorType`則可以設定 ，但`TimestampRange`不應設定 。如果 `PlaybackMode`是 `ON_DEMAND`或 `LIVE_REPLAY`，`TimestampRange`則必須同時設定 `FragmentSelectorType`和 。  
類型：[DASHFragmentSelector](API_reader_DASHFragmentSelector.md) 物件  
必要：否

 ** [DisplayFragmentNumber](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-DisplayFragmentNumber"></a>
根據片段在工作階段中的序號，在資訊清單檔案中識別片段。如果 DisplayFragmentNumber 設定為 `ALWAYS`，Kinesis Video Streams 片段編號會新增至資訊清單檔案中具有屬性名稱 “kvs：fn” 的每個 S 元素。這些片段編號可用於記錄或與其他 APIs（例如 `GetMedia`和 `GetMediaForFragmentList`) 搭配使用。需要自訂 MPEG-DASH 媒體播放器，才能利用這些自訂屬性。  
預設值為 `NEVER`。  
類型：字串  
有效值:`ALWAYS | NEVER`   
必要：否

 ** [DisplayFragmentTimestamp](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-DisplayFragmentTimestamp"></a>
根據 MPEG-DASH 規格，可以使用資訊清單本身中的屬性衍生資訊清單檔案中片段的時鐘時間。不過，MPEG-DASH 相容媒體播放器通常無法正確處理媒體時間軸中的差距。Kinesis Video Streams 會調整資訊清單檔案中的媒體時間軸，以啟用播放具有不連續性的媒體。因此，從資訊清單檔案衍生的時鐘時間可能不準確。如果 DisplayFragmentTimestamp 設定為 `ALWAYS`，則準確的片段時間戳記會新增至資訊清單檔案中具有屬性名稱 “kvs：ts” 的每個 S 元素。自訂 MPEG-DASH 媒體播放器是利用此自訂屬性的必要項目。  
預設值為 `NEVER`。當 [DASHFragmentSelector](API_reader_DASHFragmentSelector.md)為 時`SERVER_TIMESTAMP`，時間戳記將是伺服器啟動時間戳記。同樣地，當 [DASHFragmentSelector](API_reader_DASHFragmentSelector.md)為 時`PRODUCER_TIMESTAMP`，時間戳記將是生產者起始時間戳記。  
類型：字串  
有效值:`ALWAYS | NEVER`   
必要：否

 ** [Expires](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-Expires"></a>
請求的工作階段過期前的秒數。此值可以介於 300 (5 分鐘） 和 43200 (12 小時） 之間。  
當工作階段過期時，就`GetMP4MediaFragment`無法對該工作階段進行新的 `GetDashManifest`、 `GetMP4InitFragment`或 呼叫。  
預設值為 300 (5 分鐘)。  
類型：整數  
有效範圍：最小值為 300。最大值為 43200。  
必要：否

 ** [MaxManifestFragmentResults](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-MaxManifestFragmentResults"></a>
MPEG-DASH 資訊清單中傳回的片段數量上限。  
當 `PlaybackMode`為 時`LIVE`，最新的片段會傳回至此值。當 `PlaybackMode`為 時`ON_DEMAND`，會傳回最舊的片段，最多達到此最大數量。  
當即時 MPEG-DASH 資訊清單中有更多可用的片段時，影片播放器通常會在開始播放之前緩衝內容。增加緩衝區大小會增加播放延遲，但可減少播放期間重新緩衝的可能性。我們建議即時 MPEG-DASH 資訊清單至少有 3 個片段，最多有 10 個片段。  
如果 `PlaybackMode`是 `LIVE`或 ，則預設為 5 個片段`LIVE_REPLAY`，如果 `PlaybackMode`是 ，則預設為 1，000 個片段`ON_DEMAND`。  
1，000 個片段的最大值對應於具有 1 秒片段之串流上的影片超過 16 分鐘，以及具有 10 秒片段之串流上的影片超過 2 1/2 小時。  
類型：Long  
有效範圍：最小值為 1。最大值為 5000。  
必要：否

 ** [PlaybackMode](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-PlaybackMode"></a>
要擷取即時、即時重播或封存的隨需資料。  
三種工作階段類型的功能包括下列項目：  
+  ** `LIVE` **：對於此類型的工作階段，MPEG-DASH 資訊清單會持續更新為可用的最新片段。我們建議媒體播放器每隔一秒擷取新的資訊清單。在媒體播放器中播放此類型的工作階段時，使用者介面通常會顯示「即時」通知，沒有用於選擇要顯示之播放視窗中的位置的清理程式控制。
**注意**  
在 `LIVE`模式中，最新的可用片段會包含在 MPEG-DASH 資訊清單中，即使片段之間有間隙 （亦即，如果片段遺失）。這種差距可能會導致媒體播放器停止或導致播放跳躍。在此模式中，如果片段比播放清單中的最新片段舊，則不會將片段新增至 MPEG-DASH 資訊清單。如果遺失的片段在後續片段新增至資訊清單後變成可用，則不會新增較舊的片段，也不會填滿間隙。
+  ** `LIVE_REPLAY` **：對於此類型的工作階段，MPEG-DASH 資訊清單的更新方式與`LIVE`模式的更新方式類似，只是從包含指定開始時間的片段開始。片段會新增為下一個片段的持續時間，而不是在擷取片段時新增的片段。例如，如果工作階段中的片段長度為兩秒，則每兩秒會將新的片段新增至資訊清單。此模式有助於在偵測到事件時開始播放，並繼續在工作階段建立時尚未擷取的即時串流媒體。此模式也適用於串流先前封存的媒體，而不會受限於 `ON_DEMAND` 模式中的 1，000 個片段限制。
+  ** `ON_DEMAND` **：對於此類型的工作階段，MPEG-DASH 資訊清單包含工作階段的所有片段，最高可達 中指定的數字`MaxManifestFragmentResults`。每個工作階段只能擷取一次資訊清單。在媒體播放器中播放此類型的工作階段時，使用者介面通常會顯示清除器控制項，以選擇要在播放視窗中顯示的位置。
在所有播放模式中，如果 `FragmentSelectorType`是 `PRODUCER_TIMESTAMP`，且如果有多個片段具有相同的啟動時間戳記，則具有較大片段編號 （即較新的片段） 的片段會包含在 MPEG-DASH 資訊清單中。不包含其他片段。具有不同時間戳記但持續時間重疊的片段仍會包含在 MPEG-DASH 資訊清單中。這可能會導致媒體播放器發生非預期的行為。  
預設值為 `LIVE`。  
類型：字串  
有效值:`LIVE | LIVE_REPLAY | ON_DEMAND`   
必要：否

 ** [StreamARN](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-StreamARN"></a>
要擷取 MPEG-DASH 資訊清單 URL 之串流的 Amazon Resource Name (ARN)。  
您必須指定 `StreamName`或 `StreamARN`。  
類型：字串  
長度限制：長度下限為 1。長度上限為 1024。  
模式：`arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`  
必要：否

 ** [StreamName](#API_reader_GetDASHStreamingSessionURL_RequestSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-request-StreamName"></a>
要擷取 MPEG-DASH 資訊清單 URL 的串流名稱。  
您必須指定 `StreamName`或 `StreamARN`。  
類型：字串  
長度限制：長度下限為 1。長度上限為 256。  
模式：`[a-zA-Z0-9_.-]+`  
必要：否

## 回應語法
<a name="API_reader_GetDASHStreamingSessionURL_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "DASHStreamingSessionURL": "string"
}
```

## 回應元素
<a name="API_reader_GetDASHStreamingSessionURL_ResponseElements"></a>

如果動作成功，則服務傳回 HTTP 200 回應。

服務會傳回下列 JSON 格式的資料。

 ** [DASHStreamingSessionURL](#API_reader_GetDASHStreamingSessionURL_ResponseSyntax) **   <a name="KinesisVideo-reader_GetDASHStreamingSessionURL-response-DASHStreamingSessionURL"></a>
媒體播放器可用來擷取 MPEG-DASH 資訊清單的 URL （包含工作階段字符）。  
類型：字串

## 錯誤
<a name="API_reader_GetDASHStreamingSessionURL_Errors"></a>

如需所有動作常見錯誤的資訊，請參閱[常見錯誤類型](CommonErrors.md)。

 ** ClientLimitExceededException **   
Kinesis Video Streams 已調節請求，因為您已超過限制。稍後再嘗試進行呼叫。如需限制的相關資訊，請參閱 [Kinesis Video Streams 配額](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html)。  
HTTP 狀態碼：400

 ** InvalidArgumentException **   
指定的參數超過其限制、不支援或無法使用。  
HTTP 狀態碼：400

 ** InvalidCodecPrivateDataException **   
至少其中一個視訊串流軌道中的轉碼器私有資料不適用於此操作。  
HTTP 狀態碼：400

 ** MissingCodecPrivateDataException **   
在影片串流的至少一個軌跡中找不到轉碼器私有資料。  
HTTP 狀態碼：400

 ** NoDataRetentionException **   
 `GetImages` 請求的串流不會保留資料 （也就是 `DataRetentionInHours`的 為 0)。  
HTTP 狀態碼：400

 ** NotAuthorizedException **   
狀態碼：403，發起人無權在指定的串流上執行 操作，或權杖已過期。  
HTTP 狀態碼：401

 ** ResourceNotFoundException **   
 `GetImages` 當 Kinesis Video Streams 找不到您指定的串流時， 會擲回此錯誤。  
 `GetHLSStreamingSessionURL` 如果`LIVE_REPLAY`請求具有 `ON_DEMAND`或 `PlaybackMode`的工作階段的串流在請求的時間範圍內沒有片段，或者請求具有 `PlaybackMode`的工作階段的串流在過去 30 秒內沒有片段，`LIVE`則`GetDASHStreamingSessionURL`擲回此錯誤。  
HTTP 狀態碼：404

 ** UnsupportedStreamMediaTypeException **   
媒體的類型 （例如，h.264 或 h.265 視訊或 AAC 或 G.711 音訊） 無法從播放工作階段第一個片段中軌道的編解碼器 IDs 決定。軌道 1 的轉碼器 ID 應該是 ，`V_MPEG/ISO/AVC`並且可選地，軌道 2 的轉碼器 ID 應該是 `A_AAC`。  
HTTP 狀態碼：400

## 另請參閱
<a name="API_reader_GetDASHStreamingSessionURL_SeeAlso"></a>

如需在其中一種語言特定 AWS SDKs中使用此 API 的詳細資訊，請參閱下列內容：
+  [AWS 命令列界面 V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS 適用於 .NET V4 的 SDK](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS 適用於 C\$1\$1 的 SDK](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS 適用於 Go 的 SDK v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS 適用於 Java V2 的 SDK](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS 適用於 JavaScript V3 的 SDK](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS 適用於 Kotlin 的 SDK](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS 適用於 PHP V3 的 SDK](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS 適用於 Python 的 SDK](https://docs.aws.amazon.com/goto/boto3/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 
+  [AWS 適用於 Ruby V3 的 SDK](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-reader-data-2017-09-30/GetDASHStreamingSessionURL) 