如何在 VMWare 的 Guest OS 裡面使用 WebCam 網路攝影機

有許多開發人員應該是像我一樣是將 Windows 8 安裝在 VM 之中,因為有時只是想要測試一些新版本的開發工具,或是在一些特殊環境下的狀況等等,而這一次筆者想在 VM 中測試開發 WebCam 的一些功能卻發現,安裝在 VMWare 的 Windows 8 根本無法使用 WebCam 的硬體

有許多開發人員應該是像我一樣是將 Windows 8 安裝在 VM 之中,因為有時只是想要測試一些新版本的開發工具,或是在一些特殊環境下的狀況等等,而這一次筆者想在 VM 中測試開發 WebCam 的一些功能卻發現,安裝在 VMWare 的 Windows 8 根本無法使用 WebCam 的硬體,連在裝置管理員中都無法抓到 WebCam 的裝置。因此也無法在 Windows 8 裡面撰寫測試與 WebCam 相關的程式。再輾轉中,總算找到解決方案,原來,VMWare 本身就提供 Connect (Disconnect from Host) 的功能,他是一種將可移除 (Removable Device) 的實體裝視為資源的一種機制,他可以連結(Connect) 到實體 OS 未使用的裝置。

如圖(一):

image

當然,如果在選單中要能夠看到 WebCam 的可連結裝置,那麼您必須先關閉實體 OS 對 WebCam  的使用,這個部分只要從裝置管理員中將 WebCam 暫時關閉即可,如下:

image

這時開啟 VMWare 並啟動 Guest OS,在點選圖(一) 的 Connect,這時在 Windows 8 的就可以抓到 WebCam 裝置。

如下圖(三):

image

這時,我們原本的 Camera App 就可以正常的運作了。

image

點選擷取相機按鈕後,Windows 8 便可以成功的切換至相機模式,如下:

image

擷取相機按鈕的程式碼如下:

   1:  private async void btnGetCamera_Click(object sender, RoutedEventArgs e)
   2:  {
   3:      CameraCaptureUI ui = new CameraCaptureUI();
   4:      ui.PhotoSettings.CroppedAspectRatio = new Size(4, 3);
   5:      StorageFile file = await ui.CaptureFileAsync(CameraCaptureUIMode.Photo);
   6:      if (file != null)
   7:      {
   8:          BitmapImage bitmap = new BitmapImage();
   9:          bitmap.SetSource(await file.OpenAsync(FileAccessMode.Read));
  10:          imgPhoto.Source = bitmap;
  11:      }
  12:  }

如上程式,所以拍照後,透過 bitmap 的 SetSource 方法將 StorageFile 的 Stream 已非同步方式讀取出來,最後呈現在 Image 元件上,如下:

image

如上分享,提供給需要的朋友。


 

簽名:

學習是一趟奇妙的旅程

這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。

軟體開發之路(FB 社團)https://www.facebook.com/groups/361804473860062/

Gelis 程式設計訓練營(粉絲團)https://www.facebook.com/gelis.dev.learning/


 

如果文章對您有用,幫我點一下讚,或是點一下『我要推薦,這會讓我更有動力的為各位讀者撰寫下一篇文章。

非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^