如何镜像视频 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
镜像预览图像对于视频会议或视频聊天应用程序很有用。通常,用户希望看到自己的反射影像。“正确”(非镜像)视图可能看起来有些异常,因为我们习惯于通过镜子看自己。
注意 你可以使用下面的说明中介绍的 SetPreviewMirroring 和 GetPreviewMirroring 来水平翻转预览图像。但是,对于使用 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();
}