如何镜像视频 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

镜像预览图像对于视频会议或视频聊天应用程序很有用。通常,用户希望看到自己的反射影像。“正确”(非镜像)视图可能看起来有些异常,因为我们习惯于通过镜子看自己。

注意   你可以使用下面的说明中介绍的 SetPreviewMirroringGetPreviewMirroring 来水平翻转预览图像。但是,对于使用 JavaScript 的 Windows 运行时应用,镜像预览视频的最有效的首选方法是改用 video 对象的 msHorizontalMirror 属性。

说明

步骤 1: 创建 MediaCapture 对象

MediaCapture 对象包含你需要镜像预览图像的方法、属性和异步操作(初始化异步、启动、停止等)。

    oMediaCapture = new Windows.Media.Capture.MediaCapture();
    oMediaCapture.initializeAsync().then(function (result) {

步骤 2: 设置预览镜像

MediaCapture 类提供用于管理预览图像水平方向的方法。 GetPreviewMirroring 指示预览图像是否为镜像。SetPreviewMirroring 启用或禁用视频预览流的水平镜像。

以下示例查询是否启用水平镜像。如果已禁用则启用水平镜像。

    if( !oMediaCapture.getPreviewMirroring() )
        oMediaCapture.setPreviewMirroring(true);

步骤 3: 启动预览

若要启动预览视频,请调用 startPreviewAsync 方法。

// Start Previewing
await _mediaCapture.StartPreviewAsync();
(App.Current as App).IsPreviewing = true;
    // Start Previewing
    var startPreviewOperation = oMediaCapture.startPreviewAsync();

步骤 4: 停止预览

若要停止预览,请调用 StopPreviewAsync 方法。

    // Set the handler for the StopPreviewOperation.    
    var stopPreviewOperation = oMediaCapture.stopPreviewAsync();

步骤 5: 完整示例

以下示例显示如何使用水平镜像预览视频。此示例中的入口点为 StartPreview 函数。该函数可调用启用水平镜像的函数并创建用于 startPreviewOperation 的处理程序以开始预览。

var oMediaCapture;
var profile;

function turnMirroringOn()
{
    if( !oMediaCapture.getPreviewMirroring() )
        oMediaCapture.setPreviewMirroring(true);
}

function OnStartPreviewComplete(startPreviewOperation)
{
    // This method does not return a value.
    //
    startPreviewOperation.GetResults();
    // Set the handler for the StopPreviewOperation.    
    var stopPreviewOperation = oMediaCapture.stopPreviewAsync();

    stopPreviewOperation.Completed = OnStopPreviewComplete;
    stopPreviewOperation.Start();

    startPreviewOperation.Close();
}

function OnStopPreviewComplete(stopPreviewOperation)
{
    // This method does not return a value.
    //
    stopPreviewOperation.GetResults();

    stopPreviewOperation.Close();
}

function startPreview()
{

    oMediaCapture = new Windows.Media.Capture.MediaCapture();
    oMediaCapture.initializeAsync().then(function (result) {
        createProfile();
    }, errorHandler);
    // Enable horizontal mirroring.
    //
    turnMirroringOn();

    // Start Previewing
    var startPreviewOperation = oMediaCapture.startPreviewAsync();
    startPreviewOperation.Completed = OnStartPreviewComplete;
    startPreviewOperation.Start();
}

相关主题

媒体捕获示例

MediaCapture