如何新增影像防震 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
VideoStabilization 效果可以協助降低視訊中所產生的震動,例如用手持相機時。 您可以在現場拍攝時新增這個效果,或者在轉碼期間當成後續處理步驟來新增這個效果。
先決條件
這個主題假設您可以利用 JavaScript,以適用於 JavaScript 的 Windows Library 範本建立基本的 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();