如何添加视频防抖动 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
VideoStabilization 效果有助于减少视频中的抖动,例如来自手持相机。 此效果可在实时捕获期间添加,也可以在转码期间添加为后处理步骤。
先决条件
本主题假定你会使用 JavaScript 创建基本 Windows 应用商店应用并在该应用中使用 Windows JavaScript 库模板。有关创建第一个应用的帮助,请参阅创建第一个采用 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();