ストリーミングビデオの分析結果の読み取り - Amazon Rekognition

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ストリーミングビデオの分析結果の読み取り

Amazon Kinesis Data Streams クライアントライブラリを使用して、Amazon Kinesis Data Streams 出力ストリームに送信された分析結果を消費することができます。詳細については、「Kinesis Data Streams からのデータの読み取り」を参照してください。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 データストリームにストリーミングします。1 つのレコードの 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 – Amazon Rekognition Video へのビデオのストリーミングに使用される Kinesis Video Streams に関する情報。詳細については、「InputInformation」を参照してください。

  • StreamProcessorInformation - Amazon Rekognition Video ストリームプロセッサのステータス情報。Status フィールドに使用できる唯一の値は RUNNING です。詳細については、「StreamProcessorInformation」を参照してください。

  • FaceSearchResponse - 入力コレクションの顔と一致するストリーミングビデオ内の顔に関する情報が含まれます。 には、分析されたビデオフレームで検出された顔である DetectedFace オブジェクトFaceSearchResponseが含まれています。検出されたそれぞれの顔について、配列 MatchedFaces には、入力コレクションで見つかった一致する顔オブジェクト (MatchedFace) の配列と類似スコアが含まれます。

Kinesis ビデオストリームの Kinesis データストリームへのマッピング

Kinesis ビデオストリームフレームを、Kinesis デーデータストリームに送信される分析済みフレームにマッピングすることもできます。たとえば、ストリーミングビデオの表示中に、認識された人物の顔の周囲にボックスを表示するなどです。境界ボックスの座標は、Kinesis 顔認識レコードの一部として Kinesis データストリームに送信されます。境界ボックスを正しく表示するには、Kinesis 顔認識レコードと共に送信される時間情報を、ソース Kinesis ビデオストリームの対応するフレームにマッピングする必要があります。

Kinesis ビデオストリームを Kinesis データストリームにマッピングするために使用する手法は、ライブメディア (ライブストリーミングビデオなど) をストリーミングしているか、アーカイブ済みメディア (保存済みビデオなど) をストリーミングしているかによって異なります。

ライブメディアストリーミング中のマッピング

Kinesis ビデオストリームフレームを Kinesis データストリームフレームにマップするには
  1. PutMedia オペレーションの入力パラメータFragmentTimeCodeTypeを に設定しますRELATIVE

  2. PutMedia を呼び出し、Kinesis ビデオストリームにライブメディアを配信します。

  3. Kinesis データストリームから Kinesis 顔認識レコードを受信したら、ProducerTimestamp フィールドから FrameOffsetInSecondsKinesisVideo の値を保存します。

  4. ProducerTimestamp および FrameOffsetInSecondsフィールドの値を一緒に追加して、Kinesis ビデオストリームのフレームに対応するタイムスタンプを計算します。

アーカイブ済みメディアストリーミング中のマッピング

Kinesis ビデオストリームフレームを Kinesis データストリームフレームにマップするには
  1. PutMedia を呼び出して、アーカイブされたメディアを Kinesis ビデオストリームに配信します。

  2. Acknowledgement オペレーションの応答から PutMedia オブジェクトを受け取ったら、ペイロード フィールドから FragmentNumber フィールドの値を保存します。FragmentNumber は、MKV クラスタークラスターのフラグメント番号です。

  3. Kinesis データストリームから Kinesis 顔認識レコードを受信したら、FrameOffsetInSeconds フィールドから KinesisVideo フィールドの値を保存します。

  4. ステップ 2 および 3 で保存した FrameOffsetInSeconds および FragmentNumber の値を使用して、マッピングを計算します。FrameOffsetInSeconds はフラグメントのオフセットであり、FragmentNumber と共に Amazon Kinesis データストリームに送信されます。特定のフラグメント番号のビデオフレームの取得の詳細については、「Amazon Kinesis Video Streams のアーカイブ済みメディア」を参照してください。