共用方式為


如何新增影像防震 (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();

相關主題

媒體擷取範例

轉碼媒體範例

Windows.Media.Capture

Windows.Media.Transcoding