お使いのアプリに Azure AI Video Indexer ウィジェットを埋め込む

重要

Azure Media Services の 提供終了の発表により、Azure AI Video Indexer は Azure AI Video Indexer の 機能の調整を発表します。 Azure AI Video Indexer アカウントの意味を理解するには、Azure Media Service (AMS) の提供終了に関連する変更に関するページを参照してください。 AMS 提供 終了の準備: VI の更新と移行に関するガイドを参照してください。

この記事では、お使いのアプリに Azure AI Video Indexer ウィジェットを埋め込む方法について説明します。 Azure AI Video Indexer では、インサイト、PlayerEditor という 3 種類のウィジェットをアプリに埋め込む機能がサポートされています

ウィジェットの種類

インサイト ウィジェット

インサイト ウィジェットには、ビデオ のインデックス作成プロセスから抽出されたすべての視覚的な分析情報が含まれます。 インサイト ウィジェットでは、次の省略可能な URL パラメーターがサポートされています。

名前 定義 説明
widgets コンマで区切られた文字列 レンダリングする分析情報を制御できます。
例: https://www.videoindexer.ai/embed/insights/<accountId>/<videoId>/?widgets=people,keywords の場合、people と keywords の UI 分析情報のみがレンダリングされます。
使用可能なオプション: peoplekeywordsaudioEffectslabelssentimentsemotionstopicskeyframestranscriptocrspeakersscenesspokenLanguageobservedPeoplenamedEntitiesdetectedObjects
controls コンマで区切られた文字列 レンダリングするコントロールを制御できます。
例: https://www.videoindexer.ai/embed/insights/<accountId>/<videoId>/?controls=search,download は、検索オプションとダウンロード ボタンのみをレンダリングします。
使用可能なオプション: searchdownloadpresetslanguage
language 省略形の言語コード(言語名) 分析情報言語を制御します。
例: https://www.videoindexer.ai/embed/insights/<accountId>/<videoId>/?language=es-es
または https://www.videoindexer.ai/embed/insights/<accountId>/<videoId>/?language=spanish
locale 省略形の言語コード UI の言語を制御します。 既定値は en です。
例: locale=de
tab 既定で選択されるタブ 既定でレンダリングされる [分析情報] タブを制御します。
例: tab=timeline の場合、選択した [タイムライン] タブで分析情報がレンダリングされます。
search String 最初の検索語句をコントロールできます。
例: https://www.videoindexer.ai/embed/insights/<accountId>/<videoId>/?search=azure は、"Azure" という単語でフィルターされた分析情報をレンダリングします。
sort コンマで区切られた文字列 分析情報の並べ替えを制御できます。
各並べ替えは、ウィジェット名、プロパティ、順序の 3 つの値で構成され、それらが "_" で接続されています (sort=name_property_order)
使用できるオプションは
ウイジェット: keywordsaudioEffectslabelssentimentsemotionskeyframesscenesnamedEntitiesspokenLanguage
プロパティ: startTimeendTimeseenDurationnameID
順序: asc、desc。
例: https://www.videoindexer.ai/embed/insights/<accountId>/<videoId>/?sort=labels_id_asc,keywords_name_desc では、ID の昇順に並べ替えられたラベルと、名前の降順に並べ替えられたキーワードがレンダリングされます。
location 埋め込みリンクには、location パラメーターを含める必要があります。リージョンの名前を取得する方法に関するページを参照してください。 ご利用のアカウントがプレビューである場合は、location の値に trial を使用する必要があります。 trial は、location パラメーターの既定値です。

プレーヤー ウィジェット

プレーヤーウィジェットは、アダプティブ ビット レートを使ってビデオをストリーム配信するために使用できます。 プレーヤー ウィジェットでは、次の省略可能な URL パラメーターがサポートされています。

名前 定義 説明
t 開始からの秒数 プレーヤーで、指定した時点から再生を開始します。
例: t=60
captions 言語コードと言語コード配列 ウィジェットを読み込むときに、指定された言語のキャプションを取り込んで、[キャプション] メニューで使用できるようにします。
例: captions=en-UScaptions=en-US,es-ES
showCaptions ブール値 既に有効になっているキャプションとともにプレーヤーを読み込みます。
例: showCaptions=true
type オーディオ プレーヤーのスキンをアクティブにします (ビデオ部分は削除されます)。
例: type=audio
autoplay ブール値 プレーヤーがビデオの読み込み時に、その再生を開始する必要があるかどうかを示します。 既定値は true です。
例: autoplay=false
language/locale 言語コード プレーヤーの言語を制御します。 既定値は en-US です。
例: language=de-DE
location 埋め込みリンクには、location パラメーターを含める必要があります。リージョンの名前を取得する方法に関するページを参照してください。 ご利用のアカウントがプレビューである場合は、location の値に trial を使用する必要があります。 trial は、location パラメーターの既定値です。
boundingBoxes 境界ボックスの配列。 オプション: 人物 (顔)、観察対象人物、検出された物体。
値はコンマ (",") で区切る必要があります。
プレーヤーを埋め込むときに境界ボックスをオン/オフに設定するオプションを制御します。
指定されたすべてのオプションがオンになります。

例: boundingBoxes=observedPeople,people,detectedObjects
既定値は boundingBoxes=observedPeople,detectedObjects (観察対象人物と検出された物体の境界ボックスのみがオンになります)。

エディター ウィジェット

エディター ウィジェットは、新しいプロジェクトの作成とビデオの分析情報の管理に使用できます。 エディター ウィジェットでは、次の省略可能な URL パラメーターがサポートされています。

名前 定義 説明
accessToken* String ウィジェットの埋め込みに使用されているアカウント内にのみ存在するビデオへのアクセスが提供されます。
エディター ウィジェットには accessToken パラメーターが必要です。
language 言語コード プレーヤーの言語を制御します。 既定値は en-US です。
例: language=de-DE
locale 省略形の言語コード 分析情報言語を制御します。 既定値は en です。
例: language=de
location 埋め込みリンクには、location パラメーターを含める必要があります。リージョンの名前を取得する方法に関するページを参照してください。 ご利用のアカウントがプレビューである場合は、location の値に trial を使用する必要があります。 trial は、location パラメーターの既定値です。

*所有者は、注意して accessToken を提供する必要があります。

ビデオの埋め込み

このセクションでは、Web サイトを使用して、またはアプリに URL を手動でアセンブルしてビデオを埋め込む方法について説明します。

埋め込みリンクには、location パラメーターを含める必要があります。リージョンの名前を取得する方法に関するページを参照してください。 ご利用のアカウントがプレビューである場合は、location の値に trial を使用する必要があります。 trial は、location パラメーターの既定値です。 (例: https://www.videoindexer.ai/accounts/00000000-0000-0000-0000-000000000000/videos/b2b2c74b8e/?location=trial)。

Web サイトのエクスペリエンス

ビデオを埋め込むには、次の説明に従って Web サイトを使用します。

  1. Azure AI Video Indexer Web サイトにサインインします。
  2. 作業するビデオを選択し、[再生] を押します。
  3. 目的のウィジェットの種類 (分析情報プレーヤー、またはエディター) を選択します。
  4. </>[埋め込み] をクリックします。
  5. 埋め込みコードをコピーします ( に表示されます。埋め込みコード を、共有 & 埋め込み ダイアログにコピーします)。
  6. コードをお使いのアプリに追加します。

Note

プレーヤー ウィジェットまたは分析情報ウィジェットのリンクを共有すると、アクセス トークンが追加され、読み取り専用アクセス許可がアカウントに付与されます。

URL をアセンブルする

パブリック ビデオ

パブリック ビデオを埋め込むには、次のように URL をアセンブルします。

https://www.videoindexer.ai/embed/[insights | player]/<accountId>/<videoId>

プライベート ビデオ

プライベート ビデオを埋め込むには、iframe の src 属性にアクセス トークンを渡す必要があります (Get Video Access Token を使用)。

https://www.videoindexer.ai/embed/[insights | player]/<accountId>/<videoId>/?accessToken=<accessToken>

分析情報の編集機能を提供する

埋め込みのウィジェットで分析情報の編集機能を提供するには、編集アクセス許可を含むアクセス トークンを渡す必要があります。 &allowEdit=true を指定して Get Video Access Token を使用します。

ウィジェットの対話

インサイト ウィジェットは、アプリ上のビデオと対話できます。 このセクションでは、この対話を実現する方法を示します。

フローの概要

トランスクリプトを編集する場合、次のフローが発生します。

  1. タイムラインでトランスクリプトを編集します。

  2. Azure AI Video Indexer でこれらの更新が取得され、言語モデルの [トランスクリプトの編集から] に保存されます。

  3. キャプションは更新されます。

    • Azure AI Video Indexer のプレーヤー ウィジェットを使用している場合は、自動的に更新されます。
    • 外部プレーヤーを使用している場合は、[Get video captions]\(ビデオ キャプションの取得\) 呼び出しを使用して新しいキャプション ファイルを取得します。

クロスオリジン通信

Azure AI Video Indexer ウィジェットが他のコンポーネントと通信できるようにするには:

  • クロス オリジン通信の HTML5 メソッド postMessage を使用します。
  • VideoIndexer.ai からのメッセージの発生元を検証します。

独自のプレイヤー コードを実装し、インサイトウィジェットと統合する場合は、VideoIndexer.ai からのメッセージの送信元を検証する必要があります。

このセクションでは、2 つの Azure AI Video Indexer ウィジェット間の対話を実現して、ユーザーがアプリで分析情報コントロールを選択したときにプレーヤーが関連する場面にジャンプできるようにする方法を示します。

  1. プレーヤー ウィジェットの埋め込みコードをコピーします。
  2. インサイト埋め込みコードをコピーします。
  3. 2 つのウィジェット間の通信を処理するメディエーター ファイルを追加します。
    <script src="https://breakdown.blob.core.windows.net/public/vb.widgets.mediator.js"></script>

これで、ユーザーがアプリで分析情報コントロールを選択すると、プレーヤーが関連する場面にジャンプします。

詳細については、Azure AI Video Indexer - 両方のウィジェットを埋め込むデモを参照してください。

Azure AI Video Indexer インサイト ウィジェットを埋め込み、別のビデオ プレーヤーを使用する

Video Indexer Player 以外のビデオ プレーヤーを使用する場合は、ビデオ プレーヤーを手動で操作して通信を実現する必要があります。

  1. ビデオ プレーヤーを挿入します。

    たとえば、標準の HTML5 プレーヤーです。

    <video id="vid1" width="640" height="360" controls autoplay preload>
       <source src="//breakdown.blob.core.windows.net/public/Microsoft%20HoloLens-%20RoboRaid.mp4" type="video/mp4" /> 
       Your browser does not support the video tag.
    </video>
    
  2. インサイト ウィジェットを埋め込みます。

  3. "メッセージ" イベントをリッスンして、プレーヤー用の通信を実装します。 次に例を示します。

    <script>
    
        (function(){
        // Reference your player instance.
        var playerInstance = document.getElementById('vid1');
    
        function jumpTo(evt) {
          var origin = evt.origin || evt.originalEvent.origin;
    
          // Validate that the event comes from the videoindexer domain.
          if ((origin === "https://www.videoindexer.ai") && evt.data.time !== undefined){
    
            // Call your player's "jumpTo" implementation.
            playerInstance.currentTime = evt.data.time;
    
            // Confirm the arrival to us.
            if ('postMessage' in window) {
              evt.source.postMessage({confirm: true, time: evt.data.time}, origin);
            }
          }
        }
    
        // Listen to the message event.
        window.addEventListener("message", jumpTo, false);
    
        }())    
    
    </script>
    

詳細については、Video Indexer Player + VI インサイトデモを参照してください

埋め込み可能なウィジェットのカスタマイズ

インサイト ウィジェット

必要な分析情報の種類を選択できます。 これを行うには、(API または Azure AI Video Indexer Web サイトから) 取得した埋め込みコードに追加される URL パラメーター &widgets=<list of wanted widgets> にそれらを値として指定します。

指定できる値の一覧はこちらです。

たとえば、people および keywords の分析情報のみを含むウィジェットを埋め込む場合、iframe の埋め込み URL は次のようになります。

https://www.videoindexer.ai/embed/insights/<accountId>/<videoId>/?widgets=people,keywords

iframe ウィンドウのタイトルも、iframe の URL に &title=<YourTitle> を指定することでカスタマイズできます (これにより、HTML <title> 値がカスタマイズされます)。

たとえば、iframe ウィンドウに "MyInsights" というタイトルを付けたい場合、URL は次のようになります。

https://www.videoindexer.ai/embed/insights/<accountId>/<videoId>/?title=MyInsights

このオプションは、新しいウィンドウで分析情報を開く必要がある場合にのみ該当することに注意してください。

プレーヤー ウィジェット

Azure AI Video Indexer プレーヤーを埋め込む場合は、iframe のサイズを指定して、プレーヤーのサイズを選択できます。

次に例を示します。

> [!VIDEO https://www.videoindexer.ai/embed/player/<accountId>/<videoId>/]>/<videoId>/" frameborder="0" allowfullscreen />

既定では、Azure AI Video Indexer プレーヤーで、ビデオのトランスクリプトに基づいたクローズド キャプションが自動生成されます。 トランスクリプトは、ビデオがアップロードされた時に選択されたソース言語でビデオから抽出されます。

別の言語で埋め込む場合は、&captions=<Language Code> を埋め込みプレーヤー の URL に追加します。 既定でキャプションが表示されるようにする場合は、& showCaptions=true を渡します。

埋め込み URL は次のようになります。

https://www.videoindexer.ai/embed/player/<accountId>/<videoId>/?captions=en-us

自動再生

既定では、プレーヤーでビデオの再生が開始されます。 前の埋め込み URL に &autoplay=false を渡すことによって、そうしないことを選択できます。

コード サンプル

Azure AI Video Indexer API とウィジェットのサンプルを含むコード サンプル リポジトリを参照してください。

ファイル/フォルダー 説明
control-vi-embedded-player VI プレーヤーを埋め込んで、外部から制御します。
custom-index-location カスタムの外部の場所 (お客様の BLOB を指定できます) から VI 分析情報を埋め込みます。
embed-both-insights プレーヤーと分析情報の両方での VI 分析情報の基本的な使用方法。
customize-the-widgets カスタマイズされたオプションを使用して VI ウィジェットを埋め込みます。
embed-both-widgets VI プレーヤーと分析情報を埋め込んで、両者間の通信を行います。
url-generator ユーザー指定のオプションに基づいて、ウィジェットのカスタム埋め込み URL を生成します。
html5-player 既定の HTML5 ビデオ プレーヤーを使用して VI 分析情報を埋め込みます。

サポートされているブラウザー

詳細については、「サポートされているブラウザー」を参照してください。

npmjs パッケージを使用してアプリで Azure AI Video Indexer のウィジェットを埋め込んでカスタマイズする

@azure/video-analyzer-for-media-widgets パッケージを使うと、分析情報ウィジェットをアプリに追加し、ニーズに応じてカスタマイズできます。

分析情報ウィジェットを埋め込む iframe 要素を追加する代わりに、この新しいパッケージを使用すると、ウィジェット間で簡単に埋め込んで通信できます。 ウィジェットのカスタマイズは、このパッケージでのみサポートされます。すべてを 1 か所で行うことができます。

詳しくは、公式の GitHub をご覧ください。

Azure AI Video Indexer の分析情報を表示および編集する方法の詳細については、Azure AI Video Indexer の分析情報の表示と編集に関する記事を参照してください。

また、Azure AI Video Indexer Codepen もご確認ください。