Object Storage Service (OSS) のデータインデックス作成機能とフレームキャプチャ機能を使用して、IP カメラで収集されたビデオのインテリジェントなセマンティックインデックスシステムを作成できます。 このシステムは、収集されたビデオからフレームをキャプチャし、セマンティックコンテンツに基づいてビデオを検索できます。これは、インテリジェントセキュリティなどのシナリオに適しています。
ソリューションの概要
インテリジェントなセマンティックインデックスシステムを作成するには、次の手順を実行します。
ビデオが保存されているバケットを作成する: IP カメラで収集されたビデオを保存するバケットを作成し、処理するビデオをアップロードし、後続のビデオ検索のために事前に設定された時間間隔に基づいてキーフレームをキャプチャします。
フレームが保存されているバケットを作成する: ビデオからキャプチャされたキーフレームを保存するバケットを作成し、セマンティックコンテンツに基づくインテリジェントビデオ検索のために AISearch 機能を有効にします。
メリット
インテリジェントメディア処理: OSS と Intelligent Media Management (IMM) を一緒に使用して、大規模なビデオデータを処理および分析し、OSS にアップロードされた大規模なビデオデータを自動的に処理し、キーフレームを抽出し、メタデータを生成し、後続のセマンティック検索をサポートします。
セマンティック検索: OSS は、自然言語の説明と複数の条件の組み合わせに基づいてデータを正確に検索します。 これにより、目的の画像をすばやく検索し、複雑なシナリオでの検索要件を満たすことができます。 セマンティック検索は、より正確なイベントマッチングを提供し、手動フィルタリングのコストを削減します。
クロスモーダル検索: インテリジェントセマンティックインデックスシステムは、ビデオ、画像、テキストなどのマルチモーダルデータの一元管理とクロスモーダル検索機能を提供します。 OSS と IMM に依存するインテリジェントセマンティックインデックスシステムは、すぐに使えるソリューションであり、技術的なしきい値と O&M コストを大幅に削減します。
柔軟なスケーリング: OSS の分散ストレージアーキテクチャは、動的スケーリングをサポートして、大量のデータに簡単に対応できます。 負荷に基づいてコンピューティングリソースを動的にスケーリングして、安定したシステムパフォーマンスを確保できます。
1. ビデオが保存されているバケットを構成する
1.1 バケットを作成し、デバイスから収集されたビデオをアップロードする
OSS コンソール にログオンします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、[バケットの作成] をクリックします。
[バケットの作成] ページで、バケットの名前を指定します。
ipc-videos-oss-metaquery-demoなどのビジネス関連の名前を使用することをお勧めします。 その他のパラメーターについては、デフォルト設定を保持します。[OK] をクリックします。 表示されるページで、[バケットに移動]. をクリックします。
オブジェクト ページで、 をクリックします。 [オブジェクトのアップロード] ページで、[ファイルを選択] をクリックし、Video A.mp4 などのアップロードするビデオオブジェクトを選択し、その他のパラメーターについてはデフォルト設定を保持します。 [オブジェクトのアップロード] をクリックします。
1.2 IMM プロジェクトをバケットにバインドする
IMM が提供するフレームキャプチャを使用するには、IMM プロジェクトをバケットにバインドする必要があります。
左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、IMM をアクティブ化し、RAM ロールを承認してから、[プロジェクトをバケットにマップ] をクリックします。
[プロジェクトのマップ] ダイアログボックスで、IMM 構成の [プロジェクトの作成] を選択し、[プロジェクト名] フィールドに
video-snapshotなどのプロジェクト名を入力して、[OK] をクリックします。 システムは、バケットが配置されているリージョンに、対応する IMM プロジェクトを自動的に作成し、IMM プロジェクトを現在のバケットにバインドします。
1.3 フレームキャプチャのスタイルを作成する
フレームキャプチャのスタイルを作成します。 フレームは、ビデオが終了するまで固定された時間間隔でビデオからキャプチャされ、元のサイズで JPG 形式で保存されます。
|
|
1.4 フレームキャプチャのコードをコンパイルする
バケットにアップロードされたビデオオブジェクトは、作成されたフレームキャプチャのスタイルに基づいてキャプチャできます。 次のサンプルコードは、Python 用 OSS SDK を使用してフレームキャプチャを実行する方法の例を示しています。
環境を準備する
Python 用 OSS SDK を使用してフレームキャプチャを実行する前に、開発環境とアクセス認証情報を構成していることを確認してください。 詳細については、「はじめに」をご参照ください。
2. フレームを保存するバケットを構成する
2.1 バケットを作成する
IP カメラからキャプチャされたフレームを保存するバケットを作成します。 これにより、ビデオオブジェクトとフレームは異なるバケットに保存され、データ管理が最適化されます。
左側のナビゲーションウィンドウで、[バケットリスト] をクリックします。バケットリストページで、[バケットの作成] をクリックします。
[バケットの作成] ページで、バケットの名前を指定します。
ipc-frames-oss-metaquery-demoなどのビジネス関連の名前を使用することをお勧めします。 その他のパラメーターについては、デフォルト設定を保持します。[OK] をクリックします。 表示されるページで、[バケットに移動]. をクリックします。
2.2 バケットの AISearch を有効にする
バケットの AISearch を有効にします。 この場合、自然言語の説明と複数の条件に基づいてフレームを正確に検索できます。
説明 メタデータインデックスの作成に必要な時間は、バケット内のオブジェクトの数によって異なります。 [データインデックス作成] ページを更新して、AISearch が有効になっているかどうかを確認できます。 |
|
結果を確認する
yard with a car などの説明を指定すると、説明に一致するフレームが返されます。
|
|
ソリューションを実稼働環境に適用する
現在のインテリジェントセマンティックインデックスシステムが作成されます。 システムを製品にシームレスに統合し、実稼働環境に適用するには、コンシューマーアプリケーションを使用して操作を呼び出し、自然言語の説明を使用して目的のフレームまたはビデオオブジェクトをすばやくクエリして検索します。
コンシューマーアプリケーションの次のサンプルコードは、OSS 仕様に準拠した XML MetaQuery リクエストを作成する方法の例を示しています。
プログラムを実行した後、オブジェクトをクエリする説明を指定します。 例: yard with a car。 システムは、キャプチャされたフレームのパスと URL を含む結果を返します。 URL を使用して、フレームの詳細を表示できます。
4 件の一致する結果が見つかりました:")
オブジェクトパス: 2025-04-07/Video A/2.jpg
オブジェクト URL: https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91A/2.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025024Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=d2d849c56e230f6beaf199ee1ca756bb99b3f6a14ce64c1fa710127149375fac
------------------------
オブジェクトパス: 2025-04-07/Video C/2.jpg
オブジェクト URL: https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91C/2.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025024Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=1b3b456a32f9d0823dcfe5408d156df74e138a194bc06095877e00dd8079511e
------------------------
オブジェクトパス: 2025-04-07/Video C/1.jpg
オブジェクト URL: https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91C/1.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025024Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=1fc66719db2bbe611bc86a63a863d7f94ad9aebf14ccfaff8579938094ace3ef
------------------------
オブジェクトパス: 2025-04-07/Video A/1.jpg
オブジェクト URL: https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-10/%E8%A7%86%E9%A2%91A/1.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025024Z&x-oss-expires=900&x-oss-credential=LTAI********************%207%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=4dd7f808872b9d4c988efe78a09cb91fd2accbb3e9c12df7cdbdf60bdcc2e7a7
------------------------詳細情報
キャプチャされたフレームにタグを追加する
より効率的な検索を実現するために、OSS の オブジェクトタグ付け 機能を使用して、キーフレームにメタデータタグを追加できます。 たとえば、タグを使用してビデオのソースまたはビジネスシナリオを識別できます。これにより、多数のオブジェクトからターゲットフレームをすばやく検索できます。
3 つのビデオオブジェクト Video A.mp4、Video B.mp4、および Video C.mp4 を分析する場合。
Video A.mp4 | Video B.mp4 | Video C.mp4 |
|
|
|
裏庭のカメラから収集され、camera-a で撮影されたものとしてタグ付けされています。 | 店舗のカメラから収集され、camera-b で撮影されたものとしてタグ付けされています。 | 裏庭のカメラから収集され、camera-c によって撮影されたものとしてタグ付けされています。 |
次のサンプルコードは、動画をアップロードした後に、Python 用 OSS SDK を使用して各動画にタグを追加する方法の例を示しています。後続の組み合わせ取得をサポートする自動タグ管理を実装するには、ビジネス要件に基づいてタグを変更するだけで済みます。
コンシューマー アプリケーションの次のサンプル コードは、セマンティック記述とタグなどの他の条件を使用して、検索結果を取得するための複合クエリを実行する方法の例を示しています。
インテリジェントセマンティックインデックスシステムを実行した後、「庭に車がある」コンテンツに関連するビデオオブジェクトをフィルタリングするには、次の手順を実行します。
説明フィールドに検索キーワードを入力します:
yard with a carタグのフィルタリング条件を指定します:
camera = camera-a
現在のビデオオブジェクトでは、ビデオ A とビデオ C の両方が 庭に車がある という記述に適合しています。ただし、タグのフィルタリング条件により、camera-a タグが付いた取得オブジェクトのみが保持されます。この場合、ビデオ A のみがすべての条件を満たします。
DoMetaQuery リクエストを送信します。
// リクエストは成功しました。 HTTP ステータスコード: 200。
リクエストは成功しました。 HTTP ステータスコード: 200.
// OSS から 4 つの予備一致結果を取得し、クライアントタグフィルタリングを開始します...
OSS から 4 つの予備一致結果を取得し、クライアントタグフィルタリングを開始します...
// [1] '2025-04-07/Video A/2.jpg' という名前のオブジェクトはすべての条件を満たしています。
// オブジェクト URL: ...
// オブジェクトパス: ...
[1] '2025-04-07/Video A/2.jpg' という名前のオブジェクトはすべての条件を満たしています。
オブジェクト URL: https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91A/2.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025459Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=5e9d684ec141f9570f2f95713de492ac8291a39d1d655e4bb4c4d35b40d1e554
オブジェクトパス: 2025-04-07/Video A/2.jpg
-----------------------
// [2] '2025-04-07/Video A/1.jpg' という名前のオブジェクトはすべての条件を満たしています。
// オブジェクト URL: ...
// オブジェクトパス: ...
[2] '2025-04-07/Video A/1.jpg' という名前のオブジェクトはすべての条件を満たしています。
オブジェクト URL: https://ipc-frames-oss-metaquery-demo.oss-cn-beijing.aliyuncs.com/2025-04-07/%E8%A7%86%E9%A2%91A/1.jpg?x-oss-signature-version=OSS4-HMAC-SHA256&x-oss-date=20250407T025459Z&x-oss-expires=900&x-oss-credential=LTAI********************%2F20250407%2Fcn-beijing%2Foss%2Faliyun_v4_request&x-oss-signature=1c13310abdd764e8ac9f67e27a179f02949eaf47c4ed68358eefcb1965a6dd1e
オブジェクトパス: 2025-04-07/Video A/1.jpg
-----------------------
// クライアントフィルタリングが完了しました。 2 つの結果が見つかりました。
クライアントフィルタリングが完了しました。 2 つの結果が見つかりました。注: このチュートリアルでは、基本的な JavaScript の知識があることを前提としています。
フレームキャプチャのイベント通知ルールの設定
実際のアプリケーションでは、フレームは非同期でキャプチャされます。 フレームキャプチャタスクの完了時に、キャプチャされたフレームの処理結果を直接取得することはできません。 キャプチャされたフレームの処理結果を取得する場合は、Simple Message Queue (旧称 MNS) (SMQ) を使用してイベント通知を設定することをお勧めします。 この方法では、フレームキャプチャタスクが完了したときにインスタント通知を受信できます。 タスクステータスを繰り返しクエリする必要はありません。
フレームキャプチャのイベント通知ルールを設定するには、ビデオオブジェクトが格納されているバケットと同じリージョンにあるメッセージ Topic を作成する必要があります。 詳細については、「Topic ベースのメッセージングの概要」をご参照ください。 次のサンプルコードは、ビデオオブジェクトからフレームをキャプチャするときにイベント通知ルールを設定する方法を示しています。 Topic 名は Base64 エンコードされている必要があります。 たとえば、Topic 名がtest-topic の場合、エンコードされた名前はdGVzdC10b3BpYw です。





