ビデオ手ブレ補正を追加する方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
VideoStabilization の効果は、ハンドヘルド カメラなどでの手ブレを低減するのに役立つ場合があります。この効果は、ライブ キャプチャの間に追加することも、コード変換の間に後処理ステップとして追加することもできます。
必要条件
このトピックを完了するには、JavaScript 用 Windows ライブラリのテンプレートを使う、JavaScript で開発する基本的な Windows ストア アプリの作成経験が必要です。初めてのアプリ作成の説明については、「JavaScript を使った初めての Windows ストア アプリの作成」をご覧ください。
手順
ステップ 1: ライブ キャプチャの間にビデオ手ブレ補正効果を追加する
ライブ キャプチャの間に手ブレ補正の効果を追加するには、Windows.Media.Capture.AddEffectAsync メソッドを使います。このメソッドは次のパラメーターを受け取ります。
- MediaStreamType - ストリームがビデオ録画、ビデオ プレビュー、オーディオ、または写真用であるかどうかを指定する MediaStreamType 列挙の値のいずれかです。
- effectActivationID - 効果を実装するアクティブ化可能なランタイム クラスのクラス識別子です。ランタイム クラスは IMediaExtension インターフェイスを実装する必要があります。 Windows.Media 名前空間は VideoEffects クラスを提供します。
- effectSettings - 効果に対する追加の構成パラメーターを含む IPropertySet です。効果に追加の構成が必要ない場合は、このパラメーターは null にする必要があります。
このメソッドを複数回呼び出して、複数の効果を追加できます。
この例では、デバイス ソースから送られるソース ストリームに添付された一連の効果に VideoStabilization 効果を追加します。また、ClearEffectsAsync メソッドを呼び出して、ストリームの効果をすべてクリアします。
//
// Create a Media Capture object and add VideoStabilization.
//
oMediaCapture = new Windows.Media.Capture.MediaCapture();
oMediaCapture.initializeAsync().then(function (result) {
createProfile();
}, errorHandler);
// captureMgr is a MediaCapture object defined elsewhere
capturMgr.addEffectAsync(
Windows.Media.Capture.MediaStreamType.videoRecord,
"Windows.Media.VideoEffects.VideoStabilization",
null);
//
// To clear all the effects from this stream type, use ClearEffectsAsync.
//
var clearEffectsOperation = oMediaCapture.clearEffectsAsync(Windows.Media.Capture.MediaStreamType.videoRecord);
ステップ 2: コード変換の間にビデオ手ブレ補正効果を追加する
コード変換の間に手ブレ補正の効果を追加するには、MediaTranscoder.AddVideoEffect メソッドを使って、効果を実装するアクティブ化可能なランタイム クラスのクラス識別子を指定します。AddVideoEffect を複数回呼び出して、複数の効果を追加できます。
この例では、VideoStabilization 効果を MediaTranscoder オブジェクトに追加します。このメソッドを複数回呼び出して、複数の効果を追加できます。MediaTranscoder.ClearEffects メソッドを呼び出して、トランスコーダーの効果をすべてクリアします。
//
// Create a Transcoder object and add VideoStabilization.
//
var oTranscoder = new Windows.Media.Transcoding.MediaTranscoder();
oTranscoder.addVideoEffect("Windows.Media.VideoEffects.VideoStabilization");
//
// To clear all the effects from this stream type, use ClearEffects.
//
oTranscoder.clearEffects();