How to add video stabilization effect to captured video (XAML)
[ This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation ]
The VideoStabilization effect can help reduce shakiness in video, such as from a hand-held camera. This effect can be added during live capture or added as a post-processing step during transcoding.
Roadmap: How does this topic relate to others? See:
- Roadmap for Windows Runtime apps using C# or Visual Basic
- Roadmap for Windows Runtime apps using C++
Prerequisites
This topic assumes that you can create a basic Windows Store app using C++, C#, or Visual Basic. For help creating your first app, see Create your first Windows Store app using C# or Visual Basic.
Instructions
Step 1: Add the video stabilization effect during live capture
To add the stabilization effect during live capture, use the MediaCapture.AddEffectAsync method. This method takes the following parameters:
- MediaStreamType - One of the values of the MediaStreamType enumeration that specifies whether the stream is for video recording, video preview, audio, or photo.
- effectActivationID - The class identifier of the activatable runtime class that implements the effect. The runtime class must implement the IMediaExtension interface. The Windows.Media namespace provides a VideoEffects class.
- effectSettings - An IPropertySet that contains additional configuration parameters for the effect. If no additional configuration is needed for the effect, then this parameter should be null.
You can call this method multiple times to add several effects.
This example adds a VideoStabilization effect to the chain of effects that are attached to the source stream coming out of the device source.
MediaCapture captureMgr = new MediaCapture();
await captureMgr.InitializeAsync();
await captureMgr.AddEffectAsync(
MediaStreamType.VideoRecord,
Windows.Media.VideoEffects.VideoStabilization,
null);
Call the ClearEffectsAsync method to clear all of the effects from the stream.
// captureMgr is of type MediaCapture.
await captureMgr.ClearEffectsAsync(MediaStreamType.VideoRecord);
Step 2: Add the video stabilization effect during transcoding
To add the stabilization effect during transcoding, use the MediaTranscoder.AddVideoEffect method and provide the class identifier of the activatable runtime class that implements the effect. You can call AddVideoEffect multiple times to add several effects.
This example adds the VideoStabilization effect to the MediaTranscoder object.
MediaTranscoder transcoder = new MediaTranscoder();
transcoder.AddVideoEffect(
"Windows.Media.VideoEffects.VideoStabilization");
Call the MediaTranscoder.ClearEffects method to clear all of the effects from the transcoder.
MediaTranscoder transcoder = new MediaTranscoder();
transcoder.AddVideoEffect(
"Windows.Media.VideoEffects.VideoStabilization");
Related topics
Roadmaps
Roadmap for Windows Runtime apps using C# and Visual Basic
Roadmap for Windows Runtime apps using C++
Samples
Tasks
How to select audio tracks in different languages
Reference
Other resources