ビデオソースは画像データのソースを表します。オンラインカメラまたはファイルなどがこれに該当します。ビデオソースはデータを供給できます。ビデオソースへのデータ送信はサポートされていません。

ビデオ ソースは、次の 1 つ以上の機能を実装します。

  • ビデオの配信元からのストリームデータ。ビデオサービスへのリクエストは定期的に発行され、その結果としてイベントが生成され、サブスクライブしているルールまたはクライアントに配信されます(これにより、ストリームがシミュレートされます)。
  • ビデオサービスにデータを問い合わせます。ビデオサービスにコンテンツデータを要求し、画像を返します。

ビデオソースの操作は、 ビデオアシスタント サービスコネクタ。ビデオソースを使用する場合は、管理者が組織にVideoAssistantServiceConnectorを設定する必要があります。設定方法については、 管理者向けリファレンス ガイド そして、Vantiqエッジインストールの場合、 Vantiq Edge リファレンス ガイド、具体的に ビデオアシスタントサーバーの実行 の三脚と ビデオアシスタントサービスコネクタの作成.

ビデオソースから返される画像は、デフォルトではメモリ内( TempBlob) – ドキュメントや画像リソースに保存されません(特に要求されない限り)。ビデオソースを使用するには、組織全体で一定の割り当て量が必要です。 サイズ制限 をご覧ください。

ビデオソースの定義

ビデオソースは通常、 ヴァンティックIDE 使用して、 追加 ボタンを押して選択する ソース…ビデオソースは、ビデオソースの定義を表すソースリソースを作成し、その定義をVantiqサーバーに登録のために送信することでも定義できます。ソースオブジェクトは、 POST リクエストで詳細に指定された通りになります。

例:

POST https://dev.vantiq.com/api/v1/resources/sources
{ 
    "name": "VIDEOCameraSource",
    "type": "VIDEO",
    "config": {
        "ipCamera": "http://online.camera.address:9900/aDemo/add/demoData"
    }
}

指定されたネットワークアドレスのカメラからデータを取得するためのクエリを実行できるビデオソースを作成します。この例では、カメラに定期的にデータを自動的にクエリするためのストリームは定義していません。

登録されると、ストリームが構成されている場合、ビデオ ソースはすぐに画像の読み取りと処理を開始し、クエリ操作もすぐに使用できるようになります。

関連するソース プロパティは次のとおりです。

  •  ユーザーがビデオソースに付けた名前。名前はすべてのソース間で一意である必要があります。
  • type 文字列 VIDEO これがビデオソースであることを示します。
  • 設定 追加の REMOTE 構成パラメータを含む JSON オブジェクト:
    • 正確には次のいずれかです。
      • ipカメラ ネットワーク上のカメラを表すエンドポイント。これは String 問題のカメラでサポートされている URI が含まれます。
      • ダイレクトカメラ サーバー(つまり、同じマシン上)で利用可能なカメラのアドレス。カメラの直接アドレスは環境に依存し、ほとんど使用されません。
      • ビデオファイル サーバー側で利用可能な、完全なファイルパスとファイル名。主にテスト用途を想定しています。
    • ポーリング間隔 ビデオサービスがポーリングされる間隔。REMOTEソースとは異なり、この値はVAIL期間(例えば3 seconds)。値 0 または値が指定されていない場合は、ポーリングは発生しません。
    • リクエストデフォルト リクエストを行う際に使用するデフォルトのコレクション
      • クエリー 画像を取得する際のデフォルトを定義するパラメータセット。ポーリングや直接クエリに使用されます。
        • contentType 返されるMIMEタイプを指定するために使用されます。ソースはデフォルトのコンテンツタイプを想定しています。 image/jpegサポートされている応答タイプの値は次のとおりです。
          • image/jpeg – JPEG 画像を返します。
          • image/png – PNG 画像を返します。
        • requestTimeout クエリを待機する時間を指定するために使用されます。指定された時間内にデータが受信されない場合はタイムアウトが発生し、リクエストは閉じられます。値はリクエストのVAIL期間を超えない範囲で指定する必要があります。 実行時間 デフォルトは 2 分です。 この制限を超えると、リクエストはタイムアウトになります。
        • リサイズ 結果の画像サイズを指定するために使用されます。これは以下の情報を含むJSONオブジェクトとして指定されます。
          • 最大高さ の三脚と 最大幅 – 結果画像の最大高さと幅を指定する整数。カメラまたはファイルから返される画像が指定されたサイズより小さい場合、サイズ変更は行われません。
          • 最大長辺 – 結果画像の長辺のサイズを指定する整数。短辺は比例して調整されます。上記のように、長辺がこの値より短い場合はサイズ変更は行われません。
          • なお、 リサイズ メンバーはどちらかを持つことができます 最大高さ の三脚と 最大幅 OR 最大長辺 ただし、両方ではありません。

ビデオソースへのリクエスト

ビデオソースへのリクエスト(ポーリングまたはSELECT経由)を行う際に、リクエストを完全に記述したJSONドキュメントを提供できます。このドキュメントには、以下のプロパティを含めることができます。

  • contentType レスポンスを処理するMIMEコンテンツタイプ。このプロパティは、ビデオサービスがレスポンスで提供するコンテンツタイプにデフォルトで設定されるため、ほとんどの場合、設定する必要はありません。サポートされているレスポンスタイプ値は次のとおりです。
    • image/jpeg – JPEG 画像を返します。
    • image/png – PNG 画像を返します。
  • requestTimeout リクエストがデータを受信するまでの時間。指定された時間内にデータが受信されない場合、タイムアウトが発生し、リクエストは終了します。値はリクエストの有効期間を超えないVAIL期間として指定する必要があります。 実行時間 デフォルトは 2 分です。 この制限を超えると、リクエストはタイムアウトになります。
  • リサイズ 結果の画像サイズを指定するために使用されます。これは以下の情報を含むJSONオブジェクトとして指定されます。
    • 最大高さ の三脚と 最大幅 – 結果画像の最大高さと幅を指定する整数。カメラまたはファイルから返される画像が指定されたサイズより小さい場合、サイズ変更は行われません。
    • 最大長辺 – 結果画像の長辺のサイズを指定する整数。短辺は比例して調整されます。上記のように、長辺がこの値より短い場合はサイズ変更は行われません。
    • なお、 リサイズ メンバーはどちらかを持つことができます 最大高さ の三脚と 最大幅 OR 最大長辺 ただし、両方ではありません。

これらすべてのケースでは、クエリ時に指定された値がソース定義で指定された値よりも優先されます。

クエリ値に機密データが含まれている場合は、それをVantiq Secretsとして保存し、コード内で参照することができます。 @secrets 構文.

ビデオ ソースを管理するには、次の REST 要求が使用されます。

ビデオソースを作成する

POST https://dev.vantiq.com/api/v1/resources/sources
{ 
    "name": "VIDEOCameraSource",
    "type": "VIDEO",
    "config": {
        "ipCamera": "http://online.camera.address:9900/aDemo/add/demoData"
    }
}

指定された URI で応答するビデオ サービスを含む REST ソースを作成します。

ファイルから読み取るビデオ ソースを定義するには、以下を使用します。

POST https://dev.vantiq.com/api/v1/resources/sources
{ 
    "name": "VIDEOFileSource",
    "type": "VIDEO",
    "config": {
        "videoFile": "/some/file/location/sample.mov"
    }
}

ファイルから読み取り、結果のサイズを変更するビデオ ソースを定義するには、以下を使用します。

POST https://dev.vantiq.com/api/v1/resources/sources
{ 
    "name": "VIDEOFileSource",
    "type": "VIDEO",
    "config": {
        "videoFile": "/some/file/location/sample.mov"
        "requestDefaults": {
            "query": {
                "resize": {
                    "maxWidth": 400,
                    "maxHeight": 300
                }
            }
        }
    }
}

ビデオソースを削除する

DELETE https://dev.vantiq.com/api/v1/resources/sources/VIDEOCameraSource

前の例で作成したソースを削除します。

ビデオサービスからのストリームデータ

ビデオ サービスからソースされるストリームは、pollingInterval を設定することによって定義されます。

リクエストは ポーリング間隔 秒。 リクエストに対する応答によってイベントが生成され、それがサブスクライブしているルールに配信されます。

ストリーミング REST ソースの定義例:

{
     "name": "RESTServiceName",
     "type": "REMOTE",
     "config": {
        "ipCamera": "http://online.camera.address:9900/aDemo/add/demoData"
        "pollingInterval": "1 minute"
    }
}

このソースは、指定された URI のカメラから 1 分ごとに新しい画像を取得します。

ビデオサービスから読む

ビデオサービスは、次のような場合にクエリに応答できます。 SELECT ビデオソースで発行されます。 WITH SELECT の句は、選択を実行するときに使用する要求ドキュメントを指定するために使用されます。

応答の本文には、呼び出し元に配信されるクエリの結果が含まれます。 SELECT 例えば:

var someData = SELECT FROM SOURCE videoSource WITH contentType="image/png"

カメラまたはソースのコンテンツ タイプをオーバーライドします。

var someData = SELECT FROM SOURCE videoSource WITH contentType = "image/png", 
                resize = { maxHeight: 300, maxWidth: 400 }

コンテンツ タイプと画像サイズを上書きします。

画像操作

ビデオソースはダウンロードに使用されます(すなわち(受信)画像。これらは以下のプロパティを含むオブジェクトとして返されます。

  • ファイルタイプ – 画像エンティティのMIMEタイプ
  • コンテンツサイズ – 画像エンティティのサイズ(バイト単位)
  • コンテンツ参照 – リソース参照 TempBlob エンティティの内容を保持する

その TempBlob 有効期限が設定されています(デフォルトは2分)。その時間内に保存されない場合、データは失われます。

画像をドキュメントまたは画像として保存する

ビデオソースに対するクエリの結果をVantiqドキュメントまたは画像として保存するには、 saveAs へのパラメータ WITH SELECT ステートメントの句。 の値は、 saveAs パラメータは次のようにする必要があります ResourceReference 結果を保存する場所を特定します。

例えば、次のVAILコードはビデオソース(ここでは imageSource) という名前の VAIL ドキュメントに保存します。 myImage.

var imageRef = "system.documents/myImage"
var fetchedImg = SELECT ONE FROM SOURCE imageSource WITH saveAs = imageRef

SELECT ステートメントの戻り値 (ここでは、 fetchedImg 変数)、画像が保存されたリソース参照になります。

画像分析のシナリオでは、 system.images 画像を配置するタイプとしてはより適切かもしれません。

ドキュメントを保存するか画像を保存するかを動的に決定する

上で述べたように、 saveAs パラメータが指定されている場合、ドキュメントまたは画像は指定どおりに保存されます。しかし、エンティティを取得し、何らかの基準に基づいて保存するかどうかを判断したい場合もあります。常に保存してから不要なものを削除するのではなく、 processWith パラメータに一致する最初のデバイスのリモートコントロール URL を返します。

その processWith パラメータはオプションで提供され、 saveAs パラメータ。 ザ・ processWith パラメータには、受信したエンティティを保存するか破棄するかを決定するために呼び出されるプロシージャの名前を指定する必要があります。

プロシージャ (パッケージおよび/またはサービス内に存在する可能性があります) には、次の署名が必要です。

//
// Process/Filter document/image/video reference
//
// @param targetContent String Document/Image/Video content, encoded as base64 if necessary
// @param targetSize Integer Size of targetContent string
// @param isBase64Encoded Boolean Is the string passed along the entity value or the base64-encoded entity value
// @param fileType String MIME content type of target/entity
// @param entitySize Integer The size of the entity to be saved
// @param entityRef ResourceReference to the entity to be saved
// @return Boolean true if resource is to be saved, false to discard it.

PROCEDURE someProcedureName(targetContent String,
                            targetSize Integer,
                            isBase64Encoded Boolean,
                            fileType String,
                            entitySize Integer,
                            entityRef String): Boolean

コラボレー

  • ターゲットコンテンツ – 保存するコンテンツ。文字列として表されます。MIMEタイプがテキストでない場合は、base64エンコードされる場合があります。
  • ターゲットサイズ – の大きさ targetContent 整数として
  • Base64エンコード - それは targetContent base64でエンコードされた値
  • ファイルタイプ – 提示された文書/画像/ビデオのMIMEタイプ(文字列)
  • エンティティサイズ – 保存されるエンティティのサイズ(整数)。これは以下のものとは異なる場合があります。 targetSize もし targetContent base64 でエンコードされています。
  • エンティティ参照 – 保存するエンティティのリソース参照。

手続きはブール値を返す必要があります – true 指定どおりにエンティティを保存するには、 false エンティティを保存せずに破棄します。

サイズ制限は記載の通りに適用されます こちら.

たとえば、次の手順では、ドキュメントが JPEG 画像 (MIME タイプに基づく) である場合は保存し、そうでない場合は破棄します。

package doc.example

PROCEDURE ExampleService.filter(targetContent String,
                               targetSize Integer,
                               isBase64Encoded Boolean,
                               fileType String,
                               entitySize Integer,
                               entityRef String): Boolean
if (fileType == "image/jpeg") {
    return true
} else {
    return false
}

この手順を使用するには、前の例を次のように拡張します。

var imageRef = "system.documents/myImage"
var fetchedImg = SELECT ONE FROM SOURCE imageSource WITH saveAs = imageRef,
    processWith = "doc.example.ExampleService.filter"

画像操作時のサイズ制限

ビデオソースを使用するには、組織が割り当て量を持っている必要があります。 documentExpansion詳細は documentExpansion クォータについては、 管理者向けリファレンス ガイド.

返された画像はVantiqサーバーに保存されます。このストレージは、ドキュメント、画像、または動画の展開で同時に消費できるメモリ量を制限している組織クォータによって制御されます。これらの制限を超えた場合、リクエストはエラーになります。