動画分析&公開ツール Cognitive Services Video Indexer を API (V2) で操作する

2018 年 9 月 に Cognitive Services の [Video Indexer](https://www.videoindexer.ai/) が GA となりました。
Video Indexer は動画をアップロードするだけで、字幕や翻訳、OCR、登場する人物のタグ付けや話されているキーワードなどの分析を行い、リッチな UI で公開できるサービスです。
この Video Indexer への動画アップロードや管理を行う API が用意されています。現在最新の Video Indexer API(V2) を利用する方法を紹介します。

![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_01-e1538365247212.png)

# 基本情報の確認
## ロケーションとアカウントID
右上のユーザーアイコンをクリックして[設定]をクリックします。
(無償版と有償版、など複数お持ちの場合は、画面上部にある [アカウント] をクリックして切り替えます)


- location: 設定画面に表示される "アカウントリージョン"
    - Azure サブスクリプションと接続して有償版で作成された場合はそのロケーション (westus2 / northeurope / eastasia のいずれか) 
    - 無償版の場合は trial (※画面に表示されません)
- accountId: 設定画面に表示される "アカウントID"

無償版
![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_02-e1538365326584.png)
有償版
![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_03-e1538365344421.png)

## API のサブスクリプションキー
初回のみ、API を利用できるためのサブスクライブを行います。
[Video Indexer Developer Portal > Products > Authorization](https://api-portal.videoindexer.ai/products/authorization) にアクセスします。[Subscribe] をクリックし、Video Indexer を構成したユーザーでサインインします。

再び [Authorization](https://api-portal.videoindexer.ai/products/authorization
) のページを表示します。今度表示される Authorization subscription をクリックします。

![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_04-e1538365361876.png)
 
Primary Key に表示されている文字列がサブスクリプションキーになります。([show]をクリックして文字を表示し、コピーしておきます)

![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_05-e1538365658404.png)

# Video Indexer API (V2) からの利用

API の詳細については [Video Indexer Developer Portal](https://api-portal.videoindexer.ai/) で確認できます。

## Token の取得
まずは API でアクセスするための Token を取得します。
[Authorization](https://api-portal.videoindexer.ai/docs/services/authorization/) > [Get Account Access Token](https://api-portal.videoindexer.ai/docs/services/authorization/operations/Get-Account-Access-Token)

| Method   | URL                                 |
|:---------|:------------------------------------|
| GET      | https://api.videoindexer.ai/auth/YOUR_LOCATION/Accounts/YOUR_ACCOUNTID/AccessToken?allowEdit=true |

| Header             |                                              |
|:-------------------|:---------------------------------------------|
| Ocp-Apim-Subscription-Key | [API のサブスクリプションキー](https://qiita.com/annie/items/05018d7a488407d3b7ba#api-%E3%81%AE%E3%82%B5%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%AD%E3%83%BC) で確認した サブスクリプションキー |


| パラメーター        |                                              |
|:-------------------|:---------------------------------------------|
| YOUR_LOCATION      | [ロケーションとアカウントID](https://qiita.com/annie/items/05018d7a488407d3b7ba#%E3%83%AD%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88id) で確認した location  |
| YOUR_ACCOUNTID     | [ロケーションとアカウントID](https://qiita.com/annie/items/05018d7a488407d3b7ba#%E3%83%AD%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88id) で確認した accountId |

![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_06-e1538365673555.png)

## 動画のアップロードと分析

API から動画をアップロードし、字幕や情報分析を行います。
[Operation](https://api-portal.videoindexer.ai/docs/services/operations/) > [Upload Video](https://api-portal.videoindexer.ai/docs/services/operations/operations/Upload-video?)

| Method   | URL                                 |
|:---------|:------------------------------------|
| POST      | https://api.videoindexer.ai/YOUR_LOCATION/Accounts/YOUR_ACCOUNTID/Videos?accessToken=YOUR_TOKEN&name=YOUR_VIDEONAME&language=ja-JP&videoUrl=YOUR_VIDEOURL&privacy=Private |

| パラメーター        |                                              |
|:-------------------|:---------------------------------------------|
| YOUR_LOCATION      | ロケーションとアカウントID で確認した location  |
| YOUR_ACCOUNTID     | ロケーションとアカウントID で確認した accountId |
| accessToken        | Token の取得 で確認したトークンの値            |
| name               | UI で表示したいビデオ名                       |
| language           | 動画の言語<br/> - 自動判定の場合は auto<br/> - 言語指定(ja-JP, en-US など) |
| videoUrl           | 動画を配置しているストレージなど             |
| privacy            | 動画のアップロード＆Index作業などが終わって<br/> - 即時公開する場合は Public<br/> - 公開範囲を自分のみにしたいときは Private |

![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_07-e1538365688362.png)

Access Code 200 が返ると、ビデオのIDが発行され、ビデオアップロード、および 分析 (音声の字幕化、話されているキーワードの抽出と集計、登場人物の顔認識など) が行われます。
![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_08-e1538365707448.png)

> 対応している動画フォーマットについて
https://docs.microsoft.com/ja-jp/azure/media-services/previous/media-services-media-encoder-standard-formats




## 作業の進捗状況確認
Upload Video で動画をアップロードした後、進捗状況を確認するときは、例えば List Videos を使用します。
[Operation](https://api-portal.videoindexer.ai/docs/services/operations/) > [List Videos](https://api-portal.videoindexer.ai/docs/services/operations/operations/List-videos)

| Method   | URL                                 |
|:---------|:------------------------------------|
| GET      | https://api.videoindexer.ai/YOUR_LOCATION/Accounts/YOUR_ACCOUNTID/Videos?accessToken=YOUR_TOKEN |

| パラメーター        |                                              |
|:-------------------|:---------------------------------------------|
| YOUR_LOCATION      | [ロケーションとアカウントID](https://qiita.com/annie/items/05018d7a488407d3b7ba#%E3%83%AD%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88id) で確認した location  |
| YOUR_ACCOUNTID     | [ロケーションとアカウントID](https://qiita.com/annie/items/05018d7a488407d3b7ba#%E3%83%AD%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88id) で確認した accountId |
| accessToken        | [Token の取得](https://qiita.com/annie/items/05018d7a488407d3b7ba#token-%E3%81%AE%E5%8F%96%E5%BE%97) で確認したトークンの値            |

ここで表示される processingProgress の値は、Video Indexer で表示される進捗と同じです。
![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_09-e1538365723702.png)
![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_10-e1538365754776.png)

「"processingProgress": "100%"」となれば準備完了です。

# 動画の確認

[Video Indexer](https://www.videoindexer.ai/) の画面で、該当する動画をクリックすると、分析した結果が表示されます。
![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_11-e1538365780129.png)

また、公開範囲を Public にしている場合は、アカウントを持っていない人にも共有できる Viewer や、iframe で埋め込める Viewer も利用できます。
![](https://msdnshared.blob.core.windows.net/media/2018/10/bluesky_20180927_12-e1538366575244.png)