共用方式為


如何鏡像處理視訊 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

鏡像處理預覽影像對於視訊會議和視訊交談應用程式非常有用。通常使用者會想看到自己反射的影像。「正確」(非鏡像的) 檢視可能看起來很奇怪,因為我們習慣在鏡子中看到自己。

注意   您可以使用 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