2020-05-01

Ubuntu上用Android手機作為Webcam


讓手機變webcam且支援跨平台/USB的目前找到這二套:

DroidCam: http://www.dev47apps.com/
Iriun WebCam: https://iriun.com/

因為我是要安裝在Ubuntu上,一開始是試iriun卻怎麼試也不成功,後來改用DroidCam就沒問題了。

安裝工具(Android Debug Bridge, gcc...等)
sudo apt-get install adb gcc make linux-headers-`uname -r`

安裝DroidCam:
wget https://www.dev47apps.com/files/linux/droidcam_latest.zip
unzip droidcam_latest.zip -d droidcam && cd droidcam
sudo ./install
lsmod | grep v4l2loopback_dc #檢查是否有掛上 v4l2loopback_dc 模組

(另外也有提供DKMS方式安裝,避免每次kernel更新後又要重新安裝droidcam client)

安裝webcam測試用GUI:
sudo apt-get install qv4l2

Android 5.0以上可以直接在Play Store安裝DroidCam
Android 4.x可以在這裡下載APK安裝。

手機安裝DroidCam後,記得在手機的「開發者人員選項」開啟「USB 偵錯模式」,
然後用USB連接手機跟電腦,再下指令看看找不找得到Android設備:
adb devices

如果出現 no permissions 之類的訊息,那麼就要加入udev rules了,讓一般使用者也能access到手機,先找出Android設備的id:
lsusb

找到手機的設備id為 18d1:4ee7:
Bus 001 Device 010: ID 18d1:4ee7 Google Inc.

新增udev rules:
sudo vi /lib/udev/rules.d/70-android.rules
=======
加入以下內容(注意依自已的設備id修改,如果有多台設備就多行):
SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",ATTRS{idProduct}=="4ee7",MODE="0666"
=======
然後重新載入udev rules:
sudo chmod 644 /lib/udev/rules.d/70-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

重新插拔USB,再下 adb devices,確定可以找到裝置後,執行手機上的DroidCam,
再在電腦上執行 droidcam ,選擇USB並點擊Connect,
再執行 qv4l2,看看能不能看到手機上的視訊影像。

預設解析度是640x480,如果覺得解析度不夠高,也可以修改解析度(要先付費升級手機上的APP,否則即使電腦解析度調高也會像上了馬賽克),譬如先測看看720P:
sudo rmmod v4l2loopback_dc
sudo insmod /lib/modules/`uname -r`/kernel/drivers/media/video/v4l2loopback-dc.ko width=1280 height=720

如果確定修改解析度後顯示正常,可以直接修改 /etc/modprobe.d/droidcam.conf
這樣每次使用就會固定為修改後的解析度,
目前支援 640×480, 960×720, 1280×720 (720p), 1920×1080 (1080p).

要移除的話執行 sudo /opt/droidcam-uninstall 即可

ref:
http://www.dev47apps.com/droidcam/linuxx/