本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 Kinesis Video Streams 使用串流中繼資料
您可以使用 Amazon Kinesis Video Streams 生產者,在 Kinesis 影片串流中的個別片段層級SDK內嵌中繼資料。Kinesis Video Streams 中的中繼資料是可變鍵/值對。您可以使用它來描述片段的內容、嵌入必須與實際片段一起傳輸的相關感應器讀數,或滿足其他自訂需求。中繼資料會做為 GetMedia或 GetMediaForFragmentListAPI操作的一部分提供。它會與片段一起存放,在整個串流保留期間。您的取用應用程式可以使用 ,根據中繼資料讀取、處理和反應使用剖析器程式庫觀察攝影機的輸出。
中繼資料可以用兩種模式內嵌於串流中的片段:
-
非持久性 – 您可以根據已發生的業務特定條件,將中繼資料一次性或臨時附加到串流中的片段。一個範例是智慧攝影機,在將片段傳送到其 Kinesis 影片串流之前,會偵測動作並將中繼資料新增至包含動作的對應片段。您可以將中繼資料套用至下列格式的片段中:
Motion = true
。 -
持久性 – 您可以根據持續需求,將中繼資料附加至串流中的連續片段。一個範例是智慧攝影機,其會傳送與其傳送至其 Kinesis 影片串流之所有片段相關聯的目前緯度和經度座標。您可以將中繼資料套用至所有下列格式的片段中:
Lat = 47.608013N , Long = -122.335167W
您可以根據應用程式的需求,同時在同一片段附加兩種模式的中繼資料。內嵌中繼資料可能包括偵測到的物件、追蹤的活動、GPS座標,或您想要與串流中片段建立關聯的任何其他自訂資料。中繼資料是以鍵值字串對編碼。
將中繼資料新增至 Kinesis 影片串流
您新增至 Kinesis 影片串流的中繼資料會建模為MKV標籤,這些標籤會實作為索引鍵/值對。
中繼資料可以是暫時性,例如標記串流內的事件,或持久性,例如識別指定事件發生的片段。持久性中繼資料項目會保留,並套用至每個連續片段,直到取消為止。
注意
使用 新增的中繼資料項目上傳至 Kinesis Video Streams與使用 TagStream、 UntagStream和 APIs實作的串流層級標記不同ListTagsForStream。
串流中繼資料 API
您可以在生產者中使用下列操作SDK來實作串流中繼資料。
PIC
PUBLIC_API STATUS putKinesisVideoFragmentMetadata(STREAM_HANDLE streamHandle, PCHAR name, PCHAR value, BOOL persistent);
C++ 生產者 SDK
/** * Appends a "tag" or metadata - a key/value string pair into the stream. */ bool putFragmentMetadata(const std::string& name, const std::string& value, bool persistent = true);
Java 生產者 SDK
您可以使用 Java 生產者 SDK,MediaSource
使用 將中繼資料新增至 MediaSourceSink.onCodecPrivateData
:
void onFragmentMetadata(final @Nonnull String metadataName, final @Nonnull String metadataValue, final boolean persistent) throws KinesisVideoException;
持久性和非持久性中繼資料
對於非持久性中繼資料,您可以新增數個相同名稱的中繼資料項目。生產者會SDK收集中繼資料佇列中的中繼資料項目,直到它們在下一個片段之前。中繼資料項目套用至串流後,中繼資料佇列將清空。若要重複中繼資料,請再次呼叫 putKinesisVideoFragmentMetadata
或 putFragmentMetadata
。
對於持久性中繼資料,生產者會以與非持久性中繼資料相同的方式SDK收集中繼資料佇列中的中繼資料項目。不過,中繼資料項目在加上下一個片段時,不會從佇列中移除。
呼叫 putKinesisVideoFragmentMetadata
或 putFragmentMetadata
,persistent
設定為 true
,有以下行為:
-
呼叫 會將中繼資料項目API放入佇列。當項目在佇列中時,中繼資料會新增為每個片段的MKV標籤。
-
API 使用與先前新增的中繼資料項目相同的名稱和不同的值呼叫 會覆寫項目。
-
API 使用空值呼叫 會從中繼資料佇列中移除 (取消) 中繼資料項目。