最近のアクセス:
Process プロシージャー

後で Analyze プロシージャーで分析するために、処理対象のビデオを送信します。このタスクは、処理の遅延のために非同期で実行されます。

パラメーター

  • in:&video :: Video データタイプ
    処理されるビデオです。
  • in:&locale :: Locale, GeneXusAI
    入力音声の言語ロケールです。
  • in:&callbackObject :: ObjectName, GeneXus
    ビデオが処理された後に呼び出されるオプションのオブジェクト名です (Procedure オブジェクトなど)。
  • in:&provider :: Provider, GeneXusAI.Configuration
    プロバイダーの設定です。
  • inout:&Messages :: Messages, GeneXus.Common
    タスクによって返された警告メッセージとエラーメッセージのコレクションです。エラーが返された場合はコードの内容を確認してください。詳細については、エラーコードと説明を参照してください。
  • out:&videoId :: VideoId, GeneXusAI.Video
    ビデオが処理された後に Analyze プロシージャーを呼び出すためのビデオの識別子です。

設定

次の表に、この AI タスクを使用する際に設定する必要があるプロパティ (アクセスに必要な資格情報) を示します。
  PropertyKey
ProviderType キー KeySecret Account
Alibaba 内容安全 app-key 用户AccessKey 用户AccessKey
Amazon  - - -
Baidu  视频内容分析 视频内容分析  
Google  Video Intelligence API - -
IBM  - - -
Microsoft  Video Indexer - Azure Connect
SAP  - - -
Tencent  - - -

ここでは、ビデオの同期処理と非同期処理という 2 つの方法について説明します。処理が終わると、プロバイダーによって実行された分析結果を取得できます。つまり、Process タスクと Analyze タスクの両方を使用する必要があります。

同期処理

ビデオを同期処理するために、処理ステータスをポーリングします。その実行方法の例を次に示します。
&callbackObject = "" // この方法ではコールバックオブジェクトの指定は不要
&VideoId = GeneXusAI.Video.Process(&video,&locale,&callbackObject,&provider,&Messages) 
if &Messages.Count > 0 
  <process_errors>
else
   do while True
      &outputAnalysis = GeneXusAI.Video.Analyze(&videoId,&provider,&Messages) // ポーリング
      if &outputAnalysis.Completed OR &Messages.Count > 0 
         exit // ループを終了
      endIf
     &x = Sleep(30) // ポーリング再開まで 30 秒待機
   endDo
   if &Messages.Count > 0
       <process_errors> 
   else
       <analyze_result>
   endIf
endIf
ビデオのサイズが大きい場合、この方法では時間がかかる可能性があることに注意してください。この場合は、非同期の方法を使用することを検討してください。

非同期処理

ビデオを非同期処理するには、このタスクに対してコールバックオブジェクトを指定します。
たとえば、次のようにコードを記述します:
&callbackObject = Link(VideoHandler) // 参照を維持するためのオブジェクト名を取得
&VideoId = GeneXusAI.Video.Process(&video,&locale,&callbackObject,&provider,&Messages)
if &Messages.Count > 0
   <process_errors>
endIf
この VideoHandler は Procedure オブジェクトで、[ Expose as Web Service ] プロパティが True に設定されており、次のように定義されます:
Rules:   parm(in:&videoId); // 必須 :: ビデオの識別子
Source: &OutputAnalysis = GeneXusAI.Video.Analyze(&videoId,&provider,&Messages)
   if &Messages.Count > 0
       <process_errors>
   else
       <analyze_result>
   endIf
別の方法として、このオブジェクトで分析結果を取得する代わりに、通知を送信して Web 用またはスマートデバイス用のパネルで Analyze プロシージャーを呼び出すこともできます。これを行うには、Web 用の Server.Socket 外部オブジェクトまたはスマートデバイス用の Notification Provider API を使用します。
警告: 非同期ソリューションをテストするには、外部プロバイダーからアプリケーションにアクセスできる必要があります (たとえば、IP にリモートアクセスできる必要があります。または、実際のサーバーにアプリケーションをホストすることもできます。クラウドにデプロイする方法はおすすめです)。

  • 非同期の方法では、受信ビデオの識別子が設定された Parm ルールをコールバックオブジェクトに含める必要があります。
    parm(in:&videoId);
  • 特別な注意事項
    • Microsoft の場合:
      • Key と Account を取得するには、こちらのドキュメントを参照してください。
      • Faces フィールドのアイテムにデータがなくても (top、left、width、height フィールドがゼロ (空) の場合でも)、認識された顔の切り抜き画像を値に持つ thumbnail キーを含むプロパティが割り当てられます。
    • Baidu の場合:
      • 同期モードのみがサポートされます (コールバック URL は使用できません)。

適用範囲

プラットフォーム  Web (.NET、.NET Core、Java)、スマートデバイス (Android、iOS)
接続  オンライン

使用可能バージョン

このプロシージャーは、GeneXus 16 Upgrade 1 以降で利用できます。

参考情報





サブページ
Created: 20/01/09 21:38 by Admin Last update: 21/11/11 17:55 by Admin
カテゴリ
Powered by GXwiki 3.0