2018年3月24日 星期六

scrcpy 透過 adb 把手機投影到電腦上, 連影片也能看!

scrcpy 從電腦上看手機播影片 先前寫過 用 adb 把手機變身實物投影機, 那招不需要安裝任何軟體, 但只能秀出靜態的手機畫面快照。 最近發現 scrcpy 連手機上播放影片, 電腦都可以跟得上、 即時顯示, 對老師上課示範 android 手機/平板操作來說真是太方便了!

最終執行時只需要兩個檔案: 在電腦上的 scrcpy 執行檔, 以及會被它透過 adb 傳到手機上的 srcpy-server.jar (算是在手機上跑的伺服器)。 也就是說, 不需要在手機上安裝 apk。 手機也不需要 root。

以下測試環境, 電腦是 lubuntu 17.10, 手機是 Asus Zenfone 2 跑 cyanogenmod 12.1 (android 5.1.1)。

  1. 手機必須是 android 5.0 或以上的版本才能用。
  2. 請先確認你的電腦可以用 adb 連進手機。
  3. 安裝一些相依套件: 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
  4. 到官網下載程式碼: git clone https://github.com/Genymobile/scrcpy.git
  5. 省略 「編譯伺服器」 的步驟, 直接從 官網發行版本 下載 scrcpy-server-v1.1.jar 。
  6. 進入 scrcpy 子目錄, 然後:
    meson x --buildtype release --strip -Db_lto=true -Dprebuilt_server=/路徑/scrcpy-server.jar
    cd x
    ninja
    
  7. 最後用 sudo ninja install 把兩個檔案安裝到系統裡。 (僅 40k 大小 的 /usr/local/bin/scrcpy 還有僅 20k 大小的 /usr/local/share/scrcpy/scrcpy-server.jar)

然後只要下 scrcp, 就會看到手機的畫面了。 如果你的手機第一次透過 adb 遇見這部電腦, 必須先在手機上按 「允許」 之類的, 授權這部電腦操作你的手機, 第二次連線之後才會成功。 找一部 youtube 影片放來測試看看吧! 還可以旋轉九十度橫著看, 它的視窗方向也會跟著轉哦!

從原始碼 src/app/scrcpy.c 以及胡亂測試發現以下操作方式:

  1. 滑鼠左鍵: 點選/進入
  2. 滑鼠右鍵或 Esc 鍵: 上一頁/退出
  3. 滑鼠中鍵: Home
  4. 按著滑鼠左鍵滑動相當於手指滑螢幕。
  5. 閱讀時, 也可以用鍵盤上的上下箭頭、 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 轉檔。

1 則留言:

  1. meson 需要 >=0.37。一般Ubuntu 16.04 LTS 現在只到0.29 ,最後使用pip3 install meson 來取得最新版本。

    回覆刪除