Cognitive Services: HoloLens で撮影した動画をVideo APIでブレ補正してみた② 操作編 (プレビュー)

Michaelです。
前回、「Cognitive Services: HoloLens で撮影した動画をVideo APIでブレ補正してみた① 準備編」として、Video APIの概要とAPIキーの取得方法を説明しました。2回目の今回は、取得したAPIキーを使用して実際にVideo APIの「Stabilization」機能を使って動画のブレ補正を試してみます。

Video APIの利用手順

動画を扱うVideo APIでは、Face APIやComputer Vision APIのような静止画向けAPIと比べ解析、変換に時間がかかるため、APIの利用方法が異なり、下記の3ステップで動画解析、および結果の出力を行います。

1. Video APIへの動画の登録
2. 解析・変換の進捗確認
3. 補正済み動画のダウンロード

Video APIへの動画の登録

まずは、Video APIに解析する動画をAPIに登録します。
動画登録は、他のVision カテゴリのAPIと同じく、ヘッダにAPIキー、本文に対象の動画のURLを設定し、POSTメソッドでリクエストを行います。
Video APIが他のVisionカテゴリのAPIと異なるのは、登録が成功した場合に、ステータスコード202 (Accepted)が返され、レスポンス本文に情報が返されない点です。続く手順で必要になる、進捗確認用のURLは、レスポンスヘッダの「operation-location」を参照します。

レスポンスヘッダの「operation-location」を参照すると以下のようなURLが確認できます。(このURLは、生成されてから24時間有効です。)

解析・変換の進捗確認

レスポンスヘッダの「operation-location」で得られるURLに対してGetメソッドでリクエストをすると、動画変換の進捗を確認することができます。レスポンス本文の「status」を参照すると進捗状況に合わせて「Not Started」⇒「Uploading」⇒「Running」⇒「Succeeded / Failed」とステータスが変化するため、定期的に状況をチェックして変換が完了するのを待ちます。Video APIでは、1分間のリクエストが5回に制限されているため、コードでは15秒ごとに進捗を確認するように設定しています。

変換が完了すると「Succeeded」のステータスとともに、レスポンス本文の「resourceLocation」から変換済み動画のダウンロード用URLが取得できます。(URLは、生成されてから24時間有効です。)

補正済み動画のダウンロード

動画のダウンロードはダウンロード用URLに対しGETメソッドでリクエストをします。
動画はファイルサイズが大きくなるため、ダウンロードは1KBのチャンクに分けて複数回書き込むようにしています。

動画のブレ補正実行

ここまでで作成した3つの関数を使い、以下のコードで実際にStabilization機能のブレ補正を実行してみました。
今回は、BLOBストレージに保存した動画データを使い、補正された動画をローカルに保存しています。

元の動画と補正された動画を比較すると以下のようになります。
効果を確認するために、あえて強くブレが発生するように撮影をしてみましたが、比べるとVideo APIで補正をした動画は機材を使ったようにブレのない、滑らかな動画に変換されていることがわかりました。

[embedyt] http://www.youtube.com/watch?v=PmZ20YrVrUo[/embedyt]

まとめ

今回は、Video APIで動画のブレ補正をしてみましたが、カメラで処理しきれかったブレも滑らかな動画に補正できており、Video APIの性能を実感することができました。
プレビュー版のためか、制限として100MB以下の動画しか対応しないものの、現在は無料で試すことができるため、ちょっとした動画のブレ補正に試してみてはいかがでしょうか。
次回もお楽しみに。

この記事を書いた人

azure-recipe-user