Добавление стабилизации видео (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. В случае разработки приложений для Windows 10 см. раздел последняя документация]
Эффект VideoStabilization может помочь уменьшить дрожание видеоизображения, например полученного с ручной камеры. Этот эффект можно добавить при записи видеосъемки или на этапе последующей обработки при перекодировке.
Необходимые условия
Предполагается, что вы умеете создавать простые приложения Магазина Windows на JavaScript с помощью шаблона из библиотеки Windows для JavaScript. Подробнее о создании вашего первого приложения: Создание первого приложения Магазина Windows на JavaScript.
Инструкции
Этап 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();
Связанные разделы
Образец захвата мультимедийного содержимого