本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
GetDASHStreamingSessionURL
擷取串流的MPEG動態自適應串流 over HTTP (DASH) URL。然後,您可以URL在媒體播放器中打開以查看流內容。
StreamName
和StreamARN
參數都是選擇性的,但您必須在呼叫此API作業StreamARN
時指定StreamName
或。
Amazon Kinesis 影片串流必須符合下列要求,才能透過MPEG以下方式提供資料:DASH
-
資料保留必須大於 0。
-
每個片段的視訊軌道必須包含 H.264 格式和 HEVC H.265 格式的「進階視訊編碼」(AVC) 中的編解碼器私人資料。如需詳細資訊,請參閱 MPEG-4 規格ISO/IEC14496-15
。如需將串流資料調整為指定格式的相關資訊,請參閱NAL調整旗標。 -
每個片段的音軌(如果存在)必須包含AAC格式(AAC規格ISO/IEC13818-7
)或 MS Wave 格式的編解碼器私有數據。
下列程序說明如何使用 MPEG-DASH 搭配 Kinesis Video Streams:
-
呼叫
GetDataEndpoint
API以取得端點。然後使用 --end 點 url 參數將GetDASHStreamingSessionURL
請求發送到此端點。 -
檢索 MPEG-DASH URL 使用
GetDASHStreamingSessionURL
. Kinesis Video Streams 會建立一個MPEGDASH串流工作階段,用於使用 MPEG-DASH 通訊協定存取串流中的內容。GetDASHStreamingSessionURL
返回會話的 MPEG-DASH 清單 URL(使MPEG用-進行流式傳輸所需的根資源)的已驗證(包括加密會話令牌DASH)。注意
不要在未經授權的實體可以訪問它的地方共享或存儲此令牌。令牌提供對流內容的訪問。使用與 AWS 憑據一起使用的相同措施保護令牌。
通過清單提供的媒體僅由請求的流,時間範圍和格式組成。沒有其他媒體資料 (例如要求視窗外的框架或替代位元率) 可用。
-
向支援 MPEG-DASH DASH 通訊協定的媒體播放程式提供 URL (包含加密工作階段權杖)。MPEGKinesis Video Streams 可透過資訊清單URL使用初始化片段和媒體片段。初始化片段包含流的編解碼器私有數據,以及設置視頻或音頻解碼器和渲染器所需的其他數據。媒體片段包含編碼的視頻幀或編碼的音頻樣本。
-
媒體播放器接收經過身份驗證,URL並正常請求流元數據和媒體數據。當媒體播放器請求數據時,它會調用以下操作:
-
GetDASHManifest:擷取資MPEGDASH訊清單,其中包含要播放之媒體的中繼資料。
-
獲取MP4InitFragment:檢索MP4初始化片段。媒體播放器通常會在載入任何媒體片段之前載入初始化片段。此片段包含 "
fytp
" 和moov
"MP4原子,以及初始化媒體播放器解碼器所需的子原子。初始化片段不對應於 Kinesis 視訊串流中的片段。它僅包含流和相應軌道的編解碼器私有數據,媒體播放器需要解碼媒體幀。
-
取得MP4MediaFragment:擷取MP4媒體片段。這些片段包含「
moof
」和「mdat
」MP4 原子及其子原子,其中包含編碼片段的媒體框架及其時間戳記。重要
每個片段中包含的轉碼器 private data (CPD) 都包含編解碼器特定的初始化資訊,例如影格速率、解析度和編碼設定檔,這些資訊對於正確解碼片段是必要的。CPD串流工作階段期間不支援變更。CPD必須通過查詢的媒體保持一致。
重要
不支援追蹤變更。在整個查詢的媒體中,曲目必須保持一致。如果串流中的片段從僅具有視訊變更為同時具有音訊和視訊,或是音軌變更為 A-Law AAC 音軌,串流就會失敗。
使用此動作擷取的資料可計費。詳情請參閱定價
。
-
注意
如需適用於 MPEG-DASH 工作階段的限制,請參閱 Kinesis Video Streams 配額。
您可以透過監控 GetMP4MediaFragment.OutgoingBytes
Amazon CloudWatch 指標來監控媒體播放器使用的資料量。如需使用 CloudWatch 監視 Kinesis Video Streams 的相關資訊,請參閱監控 Kinesis Video Streams。如需定價資訊,請參閱 Amazon Kinesis Video Streams 定價和定AWS
如需詳細資訊HLS,請參閱 Apple 開發人員網站
重要
如果在叫用 Kinesis Video Streams 封存媒體之後擲回錯誤API,除了HTTP狀態碼和回應本文之外,它還包含下列資訊:
-
x-amz-ErrorType
HTTPheader — 除了HTTP狀態碼提供的內容之外,還包含更具體的錯誤類型。 -
x-amz-RequestId
HTTP標題-如果您想向支持團隊報告問題,可以更好地診斷問題,如果給出請求 ID。 AWS
HTTP狀態碼和 ErrorType 標頭都可以用來做出關於錯誤是否可重試以及在什麼情況下是否可重試的程式設計決定,以及提供用戶端程式設計人員可能需要採取哪些動作才能成功再試一次的資訊。
如需詳細資訊,請參閱本主題底部的「錯誤」一節,以及常見錯誤。
請求語法
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
。如果PlaybackMode
是LIVE
,則FragmentSelectorType
可以設定,但不TimestampRange
應設定。如果PlaybackMode
是ON_DEMAND
或LIVE_REPLAY
,則TimestampRange
必須同時FragmentSelectorType
設定 AND。類型:DASHFragmentSelector 物件
必要:否
- DisplayFragmentNumber
-
片段會根據工作階段中的序號在資訊清單檔案中識別。如果設定 DisplayFragmentNumber 為
ALWAYS
,則會將 Kinesis Video Streams 片段編號新增至資訊清單檔案中的每個 S 元素,其屬性名稱為「kv: fn」。這些片段編號可用於記錄或與其他APIs(例如GetMedia
和GetMediaForFragmentList
)一起使用。一個自定義 MPEG-DASH 媒體播放器是必要的,以利用這些自定義屬性。預設值為
NEVER
。類型:字串
有效值:
ALWAYS | NEVER
必要:否
- DisplayFragmentTimestamp
-
根據 MPEG-DASH 規範,清單文件中片段的掛鐘時間可以使用清單本身中的屬性來導出。但是,通常情況下,MPEGDASH兼容的媒體播放器無法正確處理媒體時間軸中的差距。Kinesis Video Streams 會調整資訊清單檔案中的媒體時間表,以啟用不連續性的媒體播放。因此,從資訊清單檔案衍生的掛鐘時間可能不正確。如果設定 DisplayFragmentTimestamp 為
ALWAYS
,則會將精確的片段時間戳記新增至資訊清單檔案中的每個 S 元素,其屬性名稱為「kv: ts」。自定義 MPEG-DASH 媒體播放器是必要的,以利用這個自定義屬性。預設值為
NEVER
。如果DASHFragmentSelector是SERVER_TIMESTAMP
,時間戳記將是伺服器啟動時間戳記。同樣,如果DASHFragmentSelector是PRODUCER_TIMESTAMP
,時間戳記將是生產者開始時間戳記。類型:字串
有效值:
ALWAYS | NEVER
必要:否
- Expires
-
要求的工作階段到期前的時間 (以秒為單位)。此值可以介於 300(5 分鐘)到 43200(12 小時)之間。
當工作階段到期時,無法對該工作階段
GetMP4MediaFragment
進行新呼叫GetMP4InitFragment
、或。GetDashManifest
預設值為 300 (5 分鐘)。
類型:整數
有效範圍:最小值 300。最大值為 43200。
必要:否
- MaxManifestFragmentResults
-
在 MPEG-DASH 清單中返回的片段的最大數量。
如果
PlaybackMode
是LIVE
,則最新的片段會返回到此值。如果PlaybackMode
是ON_DEMAND
,則返回最舊的片段,直到此最大數量。當即時資訊清單中可用的片段數目較多時,視MPEGDASH訊播放程式通常會在開始播放之前緩衝內容。增加緩衝區大小會增加播放延遲,但會降低播放期間發生重新緩衝的可能性。我們建議一個活 MPEG-DASH 清單至少有 3 個片段和最多 10 個片段。
如果是
LIVE
或LIVE_REPLAY
,則預設值為 5 個片段,如果PlaybackMode
是,則預設值PlaybackMode
為 1,000ON_DEMAND
。1,000 個片段的最大值對應於具有 1 秒片段的流上的視頻超過 16 分鐘,以及具有 10 秒片段的流上的視頻超過 2 1/2 小時。
類型:Long
有效範圍:最小值為 1。最大值為 5000。
必要:否
- PlaybackMode
-
是否要擷取即時、即時重播或封存的隨選資料。
三種工作階段類型的功能包括:
-
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
-
要擷取資DASH訊清ARN單的資料流的 Amazon 資源名稱 () URL。MPEG
您必須指定
StreamName
或StreamARN
。類型:字串
長度限制:長度下限為 1。長度上限為 1024。
模式:
arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+
必要:否
- 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(包含會話令牌)。
類型:字串
錯誤
如需所有動作常見錯誤的資訊,請參閱常見錯誤。
- ClientLimitExceededException
-
Kinesis Video Streams 已限制要求,因為您已超過限制。稍後再嘗試撥打電話。如需限制的相關資訊,請參閱 Kinesis Video Streams 配額。
HTTP狀態碼:4
- InvalidArgumentException
-
指定的參數超出其限制、不受支援或無法使用。
HTTP狀態碼:4
- InvalidCodecPrivateDataException
-
視訊串流中至少一個軌道中的編解碼器私人資料對此作業無效。
HTTP狀態碼:4
- MissingCodecPrivateDataException
-
在視訊串流的至少一個軌道中找不到轉碼器私人資料。
HTTP狀態碼:4
- NoDataRetentionException
-
GetImages
要求不保留資料的串流 (也就是說,aDataRetentionInHours
為 0)。HTTP狀態碼:4
- NotAuthorizedException
-
狀態碼:403,調用者未授權在給定流上執行操作,或令牌已過期。
HTTP狀態碼:4
- ResourceNotFoundException
-
GetImages
當 Kinesis 影片串流找不到您指定的串流時,就會擲回此錯誤。GetHLSStreamingSessionURL
如果在請求的時間範圍內沒有片段PlaybackMode
的流請求具有ON_DEMAND
orLIVE_REPLAY
的會話,或者如果在過去 30 秒內沒有片段PlaybackMode
的LIVE
流請求具有 a 的會話,則GetDASHStreamingSessionURL
拋出此錯誤。HTTP狀態碼:
- UnsupportedStreamMediaTypeException
-
媒體類型 (例如 h.264 或 h.265 視訊AAC或 G.711 音訊) 無法從播放工作階段的第一個片段中曲目IDs的轉碼器判斷。音軌 1 的轉碼器 ID 應該是
V_MPEG/ISO/AVC
音軌 2 的編解碼器識別碼 (選擇性)A_AAC
。HTTP狀態碼:4
另請參閱
如需有關API在其中一種特定語言中使用此功能的詳細資訊 AWS SDKs,請參閱下列內容: