[2024/9/22] 有一段時間, 在 debian 系列的系統上
(例如 linux mint 20 ulyana) 直接 apt install scrcpy
就裝好了,
什麼編譯通通不需要。
但是後來較新的 debian 裡面就找不到 debian 套件了。
現在我改用 ScreenStream。
以下關於 scrcpy 的資訊可能已經過時。
先前寫過 用 adb 把手機變身實物投影機, 那招不需要安裝任何軟體, 但只能秀出靜態的手機畫面快照。 最近發現 scrcpy 連手機上播放影片, 電腦都可以跟得上、 即時顯示, 對老師上課示範 android 手機/平板操作來說真是太方便了!
除了要先幫電腦與手機設定 adb 連線 之外, 最終執行時只需要兩個檔案: 在電腦上的 scrcpy 執行檔, 以及會被它透過 adb 傳到手機上的 srcpy-server.jar (算是在手機上跑的伺服器)。 也就是說, 不需要在手機上安裝 apk。 手機也不需要 root。 p>以下測試環境, 電腦是 lubuntu 17.10, 手機是 Asus Zenfone 2 跑 cyanogenmod 12.1 (android 5.1.1)。
- 手機必須是 android 5.0 或以上的版本才能用。
- 請先確認你的電腦可以用 adb 連進手機。
- 安裝一些相依套件:
sudo apt-get install ffmpeg libsdl2-2.0.0 make gcc pkg-config meson ninja-build pkg-config libavcodec-dev libavformat-dev libavutil-dev libsdl2-dev
- 到官網下載程式碼:
git clone https://github.com/Genymobile/scrcpy.git
- 省略 「編譯伺服器」 的步驟, 直接從 官網發行版本 下載 scrcpy-server-v1.1.jar 。
- 進入 scrcpy 子目錄, 然後:
meson x --buildtype release --strip -Db_lto=true -Dprebuilt_server=/路徑/scrcpy-server-版本.jar cd x ninja
- 最後用
sudo ninja install
把兩個檔案安裝到系統裡。 (僅 40k 大小 的 /usr/local/bin/scrcpy 還有僅 20k 大小的 /usr/local/share/scrcpy/scrcpy-server.jar)
然後只要下 scrcp, 就會看到手機的畫面了。 如果你的手機第一次透過 adb 遇見這部電腦, 必須先在手機上按 「允許」 之類的, 授權這部電腦操作你的手機, 第二次連線之後才會成功。 找一部 youtube 影片放來測試看看吧! 還可以旋轉九十度橫著看, 它的視窗方向也會跟著轉哦!
拿低解析度的舊電腦螢幕去看高解析度的新手機, 可能會出現類似這樣的訊息:
INFO: Initial texture: 1312x2560 CRITICAL: Could not create texture: Texture dimensions are limited to 2048x2048 ERROR: Could not open video stream
這時可用 scrcpy -m 2048
或甚至更小的數字,
表示採用較低的解析度, 那就可以顯示了。
詳見 scrcpy -h
的說明。
從原始碼 src/app/scrcpy.c 以及胡亂測試發現以下操作方式:
- 滑鼠左鍵: 點選/進入
- 滑鼠右鍵或 Esc 鍵: 上一頁/退出
- 滑鼠中鍵: Home
- 按著滑鼠左鍵滑動相當於手指滑螢幕。
- 閱讀時, 也可以用鍵盤上的上下箭頭、 PgUp PgDown 或滑鼠滾輪翻頁。
在文字輸入的場合, 可以直接用電腦的鍵盤。 甚至還可以從電腦上把英文複製 (ctrl-C) 貼上 (ctrl-V) 到手機上。 但沒找到如何製造 「長按手機」 的效果, 所以無法從手機複製再貼到電腦上。 還有, 中文當然也不能剪貼, 不過只要在手機上切到 google 注音, 就可以直接按電腦的鍵盤打中文了 (在電腦裡不要切換到中文模式, 直接按ㄅㄆㄇ的對應英文鍵)。 也就是說, 手機打字太慢的長輩們 (例如我) 可以用 scrcpy 部分取代 adb 傳簡訊 的功能 -- 只適用於英文內容或使用注音輸入法人士。 幾近完美, 不再苛求!
ps. 插圖動態 gif 檔產生方式: 先用 gtk-recordmydesktop 錄影桌面,
再用 ffmpeg -i out.ogv -vf scale=400:-1 -ss 4 -t 8
scrcpy.gif
轉檔。
meson 需要 >=0.37。一般Ubuntu 16.04 LTS 現在只到0.29 ,最後使用pip3 install meson 來取得最新版本。
回覆刪除非常棒的工具! Build步驟針對各平台寫得很詳盡
回覆刪除https://github.com/Genymobile/scrcpy/blob/master/BUILD.md
要用電腦操作 android 還真困難……。幾款能在 anrdoid 上的 vnc server 要嘛沒維護了,要嘛付費。 chrome cast 在 linux 上的實作還有點問題。以前的 android screen monitor 現在好像也不能用了。最後找到這個要自己 build 的 scrcpy 。
回覆刪除那張 gif 竟然只要 2 MB。我以前從來不把 gif 當作一回事,不過我現在慢慢知道,不要太對特定的科技產生熱愛,解決問題的方法才是永遠都會用到的道理。
回覆刪除gif 的確在某些情況下能攜帶更多資訊,大大幫助閱讀者的理解能力,像是 command line (terminal) 的操作片段,如果全部用文字呈現,可能會要看一段時間,但是用 gif,秒懂,然後又夠精簡。
fps 可以降到很低很低,比如這個網址的第 2 張 gif:
https://www.screentogif.com/screenshots.html
竟然只要 20KB.
我跑 ninja install 報錯找不到 jar 命令,好像要裝 openjdk 。
回覆刪除就算已經有編好的 server.jar 了,還是會指定需要 `jar` 命令。
這應該是 meson.build 沒寫好吧?