投稿日

ソラカメの動画をAIで解析する – SORACOM Flux での動画取得と分析方法

はじめに

SORACOM Fluxでは、ソラカメ(SORACOM Cloud Camera Services)で撮影された静止画や動画を AI で解析できます。静止画の取得は、「ソラカメ画像取得アクション」が用意されており、簡単に静止画を取得できます。一方で静止画の場合、たとえば、モーション検知をトリガーに静止画を取得したら分析したい事象(人や動物が通った等)が終わった後の画像だった、、といったように、意図したタイミングでの適切な静止画を取得することが難しい場合があります。そんなとき、動画であればある程度の時間があるので、より精度高く分析できる場合があります。

本記事では、モーション検知をトリガーにして、ソラカメのクラウド録画から動画を取得し、AIで解析するワークフローの構築方法を解説します。

前提条件

なぜ動画取得に工夫が必要なのか?

現在、SORACOM Fluxには「ソラカメから動画を取得する」という専用アクションは用意されていません。そのため、SORACOM APIアクションを使って、クラウド録画から動画をエクスポートする処理を実装する必要があります。
また、動画のエクスポート処理には時間がかかるため、エクスポートの完了を待つ仕組みも準備します。

なお、今回の方法はいくつかある方法の一つです。たとえば、ファイルを保存するストレージサービス「SORACOM Harvest Files」を使用した構築もできます。

ワークフロー全体像

今回構築するワークフローは以下の6つのステップで構成されます:

  1. ソラカメ モーション検知/サウンド検出イベントソース – Flux アプリのトリガー
  2. SORACOM API アクション – 動画エクスポート開始リクエスト
  3. SORACOM API アクション – エクスポート状況確認
  4. Republishアクション – エクスポート完了待ち(遅延処理)
  5. AI アクション – 動画のAI解析
  6. Email 通知アクション – 解析結果の通知(オプション)

それでは、各ステップを詳しく見ていきましょう。

ステップ1: ソラカメ モーション検知/サウンド検出イベントソースの設定

まず、ワークフローのトリガーとなるモーション検知イベントソースを設定します

[チャネルを作成する] から [ソラカメ モーション検知/サウンド検出] を選択します。

[デバイスを選択する] からソラカメ モーション検知/サウンド検出の対象とするソラカメを選択してください。

指定したカメラの ソラカメのモーション検知機能 が有効になっていることに注意してください。有効になっていれば、動きを検知したタイミングでこのイベントソースが起動します。

ちなみに、今回はソラカメ モーション検知/サウンド検出をイベントソースとしましたが、たとえばインターバルタイマーで定期的に実行することもできます。

ステップ2: 動画エクスポートのリクエスト

次にモーション検知をトリガーに、SORACOM API を使ってクラウド録画から動画をエクスポートする処理を開始します。

「ステップ1」で作成したチャネルを選択して、[アクションを追加]をクリックします。アクションとして[SORACOM API]アクションを選択します。

次に API とリクエスト Body を設定します。

API の設定

APIでは exportSoraCamDeviceRecordedVideo を指定します。

API の URL は以下のように指定します。

/v1/sora_cam/devices/<device_id>/videos/exports
  • {device_id}には、対象となるソラカメのデバイス ID に置き換えてください。

HTTP ボディの設定

HTTP ボディには、取得したい動画の時間範囲とオプションを指定します。

{
  "from": ${addSeconds(event.context.timestamp, -10)},
  "to": ${now()},
  "audioCodec": "mp3",
  "archive": false
}

パラメータについては以下のとおりです。

  • from: 動画の開始時刻(UNIX時間)
  • to: 動画の終了時刻(UNIX時間)
  • audioCodec: 音声コーデック(mp3を指定)
  • archive: アーカイブ化するかどうか(falseで通常エクスポート)

URL と HTTP ボディは以下のような設定となります。

この設定では、ソラカメ モーション検知/サウンド検出イベントソースが起動された時間 ( event.context.timestamp )  の10秒前から現在時刻までの動画を取得しています。(詳細は ソラカメ モーション検知/サウンド検出イベントソース を参照してください。)

ここまでのステップ1、ステップ2で以下のようになりました。

ステップ3: エクスポート状況の確認

動画のエクスポート処理は即座に完了しません。そのため、エクスポートが完了したかどうかを確認するAPIを呼び出します。
ステップ2で作成したチャネルに「SORACOM API」アクションを追加して、以下の設定を行ってください。

API の設定

APIでは getSoraCamDeviceExportedVideo を指定します。
APIのURLは以下のように指定します。

/v1/sora_cam/devices/<device_id>/videos/exports/${payload.exportId}
  • <device_id> には、対象となるソラカメのデバイス ID に置き換えてください。
  • ${payload.exportId} は、ステップ2 のAPIレスポンスに含まれるエクスポートIDを参照しています。Flux が SORACOM API を呼び出すときに置き換えるのでそのまま ${payload.exportId} を記載してください。 SORACOM Flux では、前のアクションの出力がpayloadという変数に格納され、その中の値を${payload.キー名}で参照できます。

HTTP ボディの設定

HTTP ボディ は空欄にします。

URL と HTTP ボディは以下のような設定となります。

ステップ4: エクスポート完了を待つ(遅延処理)

ステップ3で作成した エクスポート状況の確認の API のレスポンスには、statusというフィールドが含まれます。この値によって、次のアクションを分岐させます。

  • エクスポート処理中 → ステップ4(Republish)で待機してから再度確認
  • エクスポート完了 → ステップ5(AI解析)へ進む

Republishアクションの設定

ステップ 3 で作成したチャネルからRepublishアクションを作成します。
アクション実行条件では以下のように指定します。

payload.status == "initializing" || payload.status == "processing" || payload.status == "retrying"

この条件により、エクスポートがまだ完了していない場合にのみこのアクションが実行されます。

遅延時間の設定

Republishアクションでは、数秒の遅延時間を設定してから、ステップ2「動画エクスポートのリクエスト」出力チャネルにデータを戻します。これにより、一定時間待機してから再度エクスポート状況を確認するループが形成されます。

遅延時間は動画の長さによっても異なるので、実際に試して、最適な遅延時間をセットしてください。

ステップ5: AIによる動画解析

エクスポートが完了したら、いよいよAIで動画を解析します。ステップ 3 で作成したチャネルから AI アクションを作成します。

アクション実行条件では以下のように指定します。

payload.status == "completed"

この条件により、エクスポートが完了した場合にのみAI解析が実行されます。

「AIに動画を読み込ませる」の設定

AIアクションの設定画面で、「AIに動画を読み込ませる」にチェックを入れます。動画のパスには以下を指定します:

${payload.url}

これにより、ステップ3のAPIレスポンスに含まれる動画のURLがAIに渡されます。

プロンプトの設定

動画をAIに読み込ませた後、解析内容を指定するプロンプトを設定します。

例: 不審者検知の場合

この動画に人物が映っていますか?映っている場合、その人物の行動を詳しく説明してください。

例: 商品在庫確認の場合

この棚の商品の在庫状況を確認してください。品切れの商品はありますか?

プロンプトは、解析したい内容に応じて自由にカスタマイズできます。

以下のような設定となります。

ステップ6: 解析結果の通知(オプション)

最後にAI解析の結果を受け取るため、メール通知やWebhookで外部システムに通知できます。

メール通知アクションの場合

件名や本文に解析結果を含めることができます:

件名: ソラカメAI解析結果

本文: ${payload.response}

以下のような設定となります。

まとめ

本記事では、SORACOM Fluxでソラカメの録画動画を取得し、AIで解析する方法を解説しました。

ポイントのおさらい:

  1. 動画取得にはSORACOM APIアクションを使用する
  2. 動画エクスポートは非同期処理のため、Republishで完了を待つループを作る

  1. エクスポート完了後、動画URLを指定して AI 解析を実行する
  2. ステータスによる条件分岐を活用して、適切なフローを構築する

この仕組みを応用すれば、防犯カメラの映像分析や、製造現場での異常検知、店舗での来客行動分析など、さまざまなユースケースに対応できます。

静止画だけでなく動画も活用することで、より詳細で正確なAI解析が可能になります。ぜひお試しください!

ソラコム nori (江木)