快轉到主要內容

Scrcpy + V4L2,用Android手機鏡頭當作電腦鏡頭

分類   Linux系統 Linux使用技巧
標籤   Scrcpy Video4Linux
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

Scrcpy能夠存取Android手機的相機,將其畫面輸出到v4l2裝置,在電腦上建立一個虛擬的WebCam,從而達成類似專有軟體 DroidCam的效果。

這個WebCam可在會議軟體或直播軟體中使用,彷彿接上一個真的鏡頭一般。並且v4l2裝置可以有很多個,所以理論上能夠建立多個虛擬WebCam裝置,存取不同手機的鏡頭。

但,本功能僅限Linux電腦使用,因為v4l2是Linux才有的loopback裝置。

其實用Scrcpy直接擷取手機螢幕的相機APP畫面+OBS的虛擬相機也是可以達到類似效果,但v4l2的好處在於他是直接存取相機鏡頭,不需要在手機開相機APP。

此外,v4l2無法錄音。若要用Android手機當作Linux的麥克風,可考慮用 PipeWire + Mumble達成目的。

我還想到一種比較詭異的衍生用法:在樹莓派跑Scrcpy,將Android手機相機當作樹莓派相機裝置,跑圖像辨識??

1. 前置依賴
#

  1. 安裝 Scrcpy

  2. 安裝v4l2核心模組

sudo apt install v4l2loopback-dkms v4l-utils

2. 操作方法
#

  1. 設定開機自動載入v4l2模組
echo 'options v4l2loopback devices=3 video_nr=10,11,12 card_label="Loopback_1","Loopback_2","Virtual_cam" exclusive_caps=1,1,0' | sudo tee -a /etc/modprobe.d/v4l2loopback.conf

sudo modprobe v4l2loopback
  1. 這樣就會生出一個/dev/video0裝置,確認v4l2裝置狀態
v4l2-ctl --list-devices
  1. 將手機插到電腦,用Scrcpy列出手機的全部鏡頭
scrcpy --list-cameras
  1. 這裡Scrcpy有抓到手機的前鏡頭和後鏡頭,如果手機有超廣角應該也會一併顯示
scrcpy 2.6.1 <https://github.com/Genymobile/scrcpy>
INFO: ADB device found:
INFO:     -->   (usb)  HQ635R36F7                      device  XQ_DC72
/usr/local/share/scrcpy/scrcpy-server: 1 file pushed, 0 skipped. 118.5 MB/s (71112 bytes in 0.001s)
[server] INFO: Device: [Sony] Sony XQ-DC72 (Android 14)
[server] INFO: List of cameras:
    --camera-id=0    (back, 4000x3000, fps=[15, 24, 30, 60])
    --camera-id=1    (front, 3264x2448, fps=[15, 24, 30])
    --camera-id=2    (back, 3264x2448, fps=[15, 24, 30])
    --camera-id=3    (back, 3264x2448, fps=[15, 24, 30])
    --camera-id=4    (back, 4000x3000, fps=[15, 24, 30, 60])
    --camera-id=5    (back, 4000x3000, fps=[15, 24, 30, 60])
  1. 確認手機沒有開啟任何相機APP。執行以下指令,指定使用後鏡頭。(-m 1080參數或許可以移除。不要手機鏡頭視窗的話加上參數--no-video-playback
scrcpy --video-source=camera --camera-id=0 --v4l2-sink=/dev/video0 --no-audio -m 1080
  1. Scrcpy隨後跳出手機鏡頭的視窗,並且會將鏡頭的訊號輸出到/dev/video0

  2. 在會議軟體裡面確認鏡頭是否可以選取

參考資料
#

相關文章

Linux PipeWire透過AirPlay協定播放音樂
分類   Linux系統 Linux使用技巧
標籤   AirPlay PipeWire
XWayland Rootful Mode:Wayland跑巢狀X11工作階段視窗
分類   Linux系統 Linux使用技巧
標籤   X Window Wayland
遠端開機:Ubuntu如何啟用Wake-On-Lan,透過NetworkManager設定
分類   Linux系統 Linux使用技巧
標籤   Remote Desktop Ubuntu

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。