先在 Linux 上安裝好 v4l2loopback-dkms 跟 GStreamer,接著就可以來玩玩虛擬 Webcam 了。
Google Meet : 設定 : 攝影機 |
建立虛擬的 Webcam 裝置
利用 v4l2loopback ,可以幫我們在 Linux 系統中建立一個虛擬的 Webcam,它的詳細操作可以參考專案上的說明:
先開一個終端機,然後以底下的指令來建立虛擬的 Webcam :
sudo modprobe v4l2loopback devices=1 card_label="v4l2 Visual Webcam" exclusive_caps=1
簡單的說明一下各參數:
- devices=1 : 建立一個虛擬的影像裝置
- card_label="v4l2 Visual Webcam" : 將裝置的名稱設定為引號中的字串,主要是方便我們識別。如果沒有設定名稱,可能是類似這樣的名稱 "Dummy video device (0x0000)"
- exclusive_caps=1 : 啟用 "exclusive_caps" 的選項,這樣才能讓 Chrome 看得到我們新增的虛擬裝置。詳情請參考原專案中的說明。
那新增裝置的 devices ID 是什麼?哈!這個問題太重要了,像我的筆電本來就有 Webcam 了 (/dev/video0),所以 v4l2loopback 的 device ID 就變成 /dev/video1。
如果想自己指定 device ID,那前面的參數就將 devices=1 改為 video_nr="xxxx"。例如:
sudo modprobe v4l2loopback video_nr=3 card_label="v4l2 Visual Webcam" exclusive_caps=1
執行完上面的指令,新增的裝置代號就變成 /dev/video3
那如何移除 v4l2loopback 呢?
sudo modprobe -r v4l2loopback
GStreamer 抓取 MJPEG 串流
假設已經利用 v4l2loopback 建好的虛擬 Webcam ,裝置 ID 為 /dev/video1,我們就可以利用 GStreamer 來抓取手機上的 MJPEG 串流 (以 Android IP Webcam 為例,假設網址是 http://192.168.2.109:8080/videofeed )。
Android IP Webcam 的畫面 |
先執行底下的指令,讓手機的畫在電腦上顯示看看:
gst-launch-1.0 souphttpsrc location=http://192.168.2.109:8080/videofeed ! jpegdec ! videoconvert ! autovideosink
如果看得到手機的畫面,我們就可以準備將畫面餵給 v4l2loopback 所建立的虛擬裝置 /dev/video1 了,執行:
gst-launch-1.0 souphttpsrc location=http://192.168.2.109:8080/videofeed ! jpegdec ! videoconvert ! v4l2sink device=/dev/video1
前面兩道指令的差別在輸出的目的地不同:
- ! autovideosink : 是顯示在電腦的畫面中。
- ! v4l2sink device=/dev/video1 : 是輸出給 v4l2loopback 所建立的虛擬 Webcam /dev/video1
如果在確定都設定好了,在網頁瀏覽器仍然看不到 v4l2loopback 所建立的裝置,記得按重新整理,甚至關閉後重新開啟瀏覽器再試。
相關文章
- 雄 : Android : 手機變電腦的 Webcam : IP Camera Adapter
- 雄 : Android : 手機變電腦的 Webcam : OBS
- 雄 : Android : IPCam 讓手機變無線的實物投影機
- 雄 : iPad : 以「Stage」的攝影+白板功能進行共同訂正
沒有留言:
張貼留言