Поделиться через


Добавление стабилизации видео (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();

Связанные разделы

Образец захвата мультимедийного содержимого

Образец перекодировки файла мультимедиа

Windows.Media.Capture

Windows.Media.Transcoding