簡體   English   中英

使用MediaCapture時,長寬比/縮放級別更改是否存在問題?

[英]Issue with aspect ratio / zoom level changing when using MediaCapture?

我正在使用MediaCaptureCapturePreview在Surface Pro平板電腦上創建預覽流。 我使用定時器定期拍照

CapturePhotoToStreamAsync()

但是,無論何時拍攝照片,預覽流都會稍微縮小,就好像它在更改分辨率或寬高比或類似內容一樣。

我發現了這個問題 ,聽起來似乎完全一樣,但是無論設置哪種分辨率,我似乎都無法解決。

這是我必須從流中獲取Bitmap對象的代碼:

using (var randomAccessStream = new InMemoryRandomAccessStream())
{
    await mediaCap.CapturePhotoToStreamAsync(imageProps, randomAccessStream);

    randomAccessStream.Seek(0);
    using (var ioStream = randomAccessStream.AsStream())
    {
        BitmapImage bitmapImage = new BitmapImage();
        bitmapImage.BeginInit();
        bitmapImage.StreamSource = ioStream;
        bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
        bitmapImage.EndInit();
        bitmapImage.Freeze();
    }
}

imageProps設置為1280x720,與預覽對象的分辨率相同。 如果它只是偶爾發生,那么這將不是一個大問題,但是我需要頻繁抓取幀(每秒多次),並且看起來非常刺耳。

編輯:

需要注意的是,該問題僅發生在提到的Surface Pro平板電腦(2736x1824 @ 200%)上,而在1920x1080屏幕上似乎沒有發生。

我最終找到的解決方案是此更改:

從:

await _mediaCaptureObject.InitializeAsync(new MediaCaptureInitializationSettings
{
    VideoDeviceId = deviceList?.FirstOrDefault(x => x.Name.Contains("Camera Name"))?.Id,
    StreamingCaptureMode = StreamingCaptureMode.Video
});

至:

await _mediaCaptureObject.InitializeAsync(new MediaCaptureInitializationSettings
{
    VideoDeviceId = deviceList?.FirstOrDefault(x => x.Name.Contains("Camera Name"))?.Id,
    StreamingCaptureMode = StreamingCaptureMode.Video,
    PhotoCaptureSource = PhotoCaptureSource.VideoPreview
});

這並不能真正解釋我所遇到的問題,因為我在捕獲照片時將ImageEncodingProperties設置為與流相同的分辨率。 無論如何,默認的PhotoCaptureSourceAuto ,它必須一直使用Photo模式而不是VideoPreview 更改此設置后,問題不再出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM