讀取串流影片分析結果 - Amazon Rekognition

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

讀取串流影片分析結果

您可以使用 Amazon Kinesis Data Streams Client Library 取用傳送至 Amazon Kinesis Data Streams 輸出串流的分析結果。如需詳細資訊,請參閱從 Kinesis 資料串流讀取資料。Amazon Rekognition Video 會將每個已分析影格的 JSON 影格記錄放入 Kinesis 輸出串流。Amazon Rekognition Video 不會分析透過 Kinesis 影片串流傳遞給其的每個影格。

傳送至 Kinesis 資料串流的影格記錄包含有關影格所在之 Kinesis 影片串流片段、影格在片段中的位置,以及影格中已辨識之人臉的資訊。它也包含串流處理器的狀態資訊。如需詳細資訊,請參閱 參考:Kinesis 人臉辨識記錄

Amazon Kinesis Video Streams 剖析器程式庫包含範例測試,這些測試會使用 Amazon Rekognition Video 結果,並將其與原始 Kinesis 影片串流整合。如需詳細資訊,請參閱 使用 Kinesis Video Streams 本機顯示 Rekognition 結果

Amazon Rekognition Video 訊將 Amazon Rekognition Video 訊分析資訊串流到 Kinesis 資料串流。以下是單一記錄的 JSON 範例。

{ "InputInformation": { "KinesisVideo": { "StreamArn": "arn:aws:kinesisvideo:us-west-2:nnnnnnnnnnnn:stream/stream-name", "FragmentNumber": "91343852333289682796718532614445757584843717598", "ServerTimestamp": 1510552593.455, "ProducerTimestamp": 1510552593.193, "FrameOffsetInSeconds": 2 } }, "StreamProcessorInformation": { "Status": "RUNNING" }, "FaceSearchResponse": [ { "DetectedFace": { "BoundingBox": { "Height": 0.075, "Width": 0.05625, "Left": 0.428125, "Top": 0.40833333 }, "Confidence": 99.975174, "Landmarks": [ { "X": 0.4452057, "Y": 0.4395594, "Type": "eyeLeft" }, { "X": 0.46340984, "Y": 0.43744427, "Type": "eyeRight" }, { "X": 0.45960626, "Y": 0.4526856, "Type": "nose" }, { "X": 0.44958648, "Y": 0.4696949, "Type": "mouthLeft" }, { "X": 0.46409217, "Y": 0.46704912, "Type": "mouthRight" } ], "Pose": { "Pitch": 2.9691637, "Roll": -6.8904796, "Yaw": 23.84388 }, "Quality": { "Brightness": 40.592964, "Sharpness": 96.09616 } }, "MatchedFaces": [ { "Similarity": 88.863960, "Face": { "BoundingBox": { "Height": 0.557692, "Width": 0.749838, "Left": 0.103426, "Top": 0.206731 }, "FaceId": "ed1b560f-d6af-5158-989a-ff586c931545", "Confidence": 99.999201, "ImageId": "70e09693-2114-57e1-807c-50b6d61fa4dc", "ExternalImageId": "matchedImage.jpeg" } } ] } ] }

在 JSON 範例中,請注意下列事項:

  • InputInformation— 有關用於將視訊串流至亞馬遜 Rekognition 視訊的 Kinesis 視訊串流的資訊。如需詳細資訊,請參閱 InputInformation

  • StreamProcessorInformation— 亞馬遜視訊串流處理器的狀態資訊。唯一可用於 Status 欄位的值是 RUNNING。如需詳細資訊,請參閱 StreamProcessorInformation

  • FaceSearchResponse— 包含串流視訊中符合輸入集合中人臉的臉孔的相關資訊。 FaceSearchResponse包含一個DetectedFace對象,該對象是在分析的視頻幀中檢測到的臉部。對於每個偵測到的人臉,陣列 MatchedFaces 皆包含在輸入集合中找到之相符人臉物件的陣列 (MatchedFace),以及相似度分數。

將 Kinesis 影片串流對應至 Kinesis 資料串流

您可能會想要將 Kinesis 影片串流影格對應至已發送至 Kinesis 資料串流的影格。例如,在串流影片顯示期間,您可能想要在已辨識的人臉周圍顯示方塊。週框方塊座標會做為 Kinesis 人臉辨識記錄的一部分傳送至 Kinesis 資料串流。若要正確顯示週框方塊,您需要將隨 Kinesis 人臉辨識記錄傳送的時間資訊,與來源 Kinesis 影片串流中相應的影格相對應。

您用來將 Kinesis 影片串流對應至 Kinesis 資料串流的技術取決於您要串流即時媒體 (例如即時串流影片),還是要串流封存媒體 (例如已儲存影片)。

串流即時媒體時的對應

若要將 Kinesis 影片串流影格對應至 Kinesis 資料串流影格
  1. 將作業的輸入參FragmentTimeCodeType數設PutMedia定為RELATIVE

  2. 呼叫 PutMedia,將即時媒體傳遞至 Kinesis 影片串流。

  3. 當您從 Kinesis 資料串流收到 Kinesis 人臉辨識記錄時,請儲存來自 KinesisVideo 欄位中 ProducerTimestampFrameOffsetInSeconds 的值。

  4. ProducerTimestampFrameOffsetInSeconds 欄位值相加,藉此計算對應至 Kinesis 影片串流影格的時間戳記。

串流封存媒體時的對應

若要將 Kinesis 影片串流影格對應至 Kinesis 資料串流影格
  1. 呼叫PutMedia將封存的媒體傳遞至 Kinesis 視訊串流。

  2. 當您從 PutMedia 操作回應收到 Acknowledgement 物件時,請储存承載欄位中的 FragmentNumber 欄位值。FragmentNumber 是 MKV 叢集的片段数目。

  3. 當您從 Kinesis 資料串流收到 Kinesis 人臉辨識記錄時,請储存來自 KinesisVideo 欄位的 FrameOffsetInSeconds 欄位值。

  4. 使用您在步驟 2 與 3 中儲存的 FrameOffsetInSecondsFragmentNumber 值來計算對應。FrameOffsetInSeconds 是具有特定 FragmentNumber 之片段的位移,其會傳送至 Amazon Kinesis Data Streams。如需取得指定片段號碼之影片影格的詳細資訊,請參閱 Amazon Kinesis Video Streams 的已封存媒體