ユーザ用ツール

サイト用ツール


サイドバー

最新の10件
一覧
linux:android:scrcpy

Android端末をVNCのように画面転送して操作できる

Debian bullsete/bullseye-backports/sidならpkgがあるので導入もお手軽

※Scrcpy 2.0 でオーディオ転送に対応した.但しAndroid 11+

Install Debian package( Debian bullsete/bullseye-backports/sid )

$ sudo apt install scrcpy

Install from source( Debian bookworm testing )

$ sudo apt install ffmpeg libsdl2-2.0-0 adb wget \
                 gcc git pkg-config meson ninja-build libsdl2-dev \
                 libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev \
                 libswresample-dev libusb-1.0-0 libusb-1.0-0-dev
$ git clone https://github.com/Genymobile/scrcpy
$ cd scrcpy
$ ./install_release.sh
$ which scrcpy
/usr/local/bin/scrcpy
$ scrcpy --version
scrcpy 2.0 <https://github.com/Genymobile/scrcpy>

Dependencies (compiled / linked):
 - SDL: 2.26.3 / 2.26.3
 - libavcodec: 59.37.100 / 59.37.100
 - libavformat: 59.27.100 / 59.27.100
 - libavutil: 57.28.100 / 57.28.100
 - libavdevice: 59.7.100 / 59.7.100
 - libusb: - / 1.0.26

uninstall

$ sudo ninja -Cbuild-auto uninstall

Android端末のudev への登録

$ lsusb | grep -i moto
Bus 001 Device 011: ID 22b8:2e82 Motorola PCS XT1541 [Moto G 3rd Gen]
$ echo '# moto g31
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8" ATTR{idProduct}=="2e82", MODE="0660", GROUP="plugdev", SYMLINK+="android%n"' | sudo tee -a /etc/udev/rules.d/51-android.rules
# moto g31
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8" ATTR{idProduct}=="2e82", MODE="0660", GROUP="plugdev", SYMLINK+="android%n"
$ sudo udevadm control --reload
$ adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
ZY22DZ5M6C      device

tips

解像度を指定

-m, --max-size value で解像度を指定できる.以下は 1280 を指定

$ scrcpy -m 1280

画面の一部を切り指して転送

--crop で切り抜ける

       --crop width:height:x:y
              Crop the device screen on the server.

              The values are expressed in the device natural orientation  (typically,  portrait  for  a  phone,  landscape  for  a  tablet).  Any
              --max-size value is computed on the cropped size.

スマートフォンだと縦画面にしたときの座標になるよう.

$ scrcpy --crop=1080:1920:0:$(( (2480-1920)/2 ))

縦長端末で漫画を読むときや動画視聴時に上下の余白を削ったり

scrcpy --crop=1080:1600:0:425

fps指定

以下は 5fps に制限

$ scrcpy --max-fps 5 -m 1280

スリープ,ロック禁止

-w, --stay-awake

Android端末の画面を消灯したまま操作

-S, --turn-screen-off

物理キーボードがつながっていると思わせる1

-K, --hid-keyboard

表示のみ(操作不可)

-n, --no-control

録画

-r, --record=file.mp4

ビデオデバイスに出力する

--v4l2-sink で v4l2loopbackデバイスに書き出せる.

$ v4l2-ctl --list-devices
Virtual Camera (platform:v4l2loopback-000):
        /dev/video6

v4l2loopback-7 (platform:v4l2loopback-001):
        /dev/video7

v4l2loopback-8 (platform:v4l2loopback-002):
        /dev/video8

Droidcam (platform:v4l2loopback_dc-000):
        /dev/video9

Integrated Camera: Integrated C (usb-0000:00:1a.0-1.6):
        /dev/video0
        /dev/video1
        /dev/media0

$ scrcpy --v4l2-sink /dev/video8 --lock-video-orientation

snap版scrcpyで--v4l2-sinkを使おうとするとエラー

$ scrcpy --v4l2-sink /dev/video8 --lock-video-orientation
scrcpy 1.23 <https://github.com/Genymobile/scrcpy>
/usr/local/share/scrcpy/scrcpy-server: 1 file pushed. 3.0 MB/s (41123 bytes in 0.013s)
[server] INFO: Device: motorola moto g31(w) (Android 11)
INFO: Renderer: opengl
INFO: OpenGL version: 3.0 Mesa 20.0.8
INFO: Trilinear filtering enabled
INFO: Initial texture: 1080x2400
ERROR: Failed to open output device: /dev/video8
ERROR: Could not open frame sink 1
ERROR: Could not open decoder sinks
ERROR: Could not open packet sink 0
ERROR: Could not open demuxer sinks
WARN: Device disconnected
WARN: Killing the server...

以下のコマンドでsnapにカメラデバイスを認識させる

$ snap connect scrcpy:camera

指定デバイスに接続

PCに複数デバイス接続されているときなどに指定デバイスに接続する.serialは adb devices コマンドなどで確認.

-s, --serial=serial

ネットワーク経由で接続

PCとAndroidをUSB接続してadb tcpipで適当なポートで起動

$ adb tcpip 5555

unplugしてadb connect <IP:port>でネットワークadb接続

$ adb connect 10.42.0.199:5555
$ scrcpy

PCで充電できない場合などに充電器接続で利用できて便利

オーディオを転送

audioブランチを自分でbuildして, --forward-audio オプションを使うことでUSB audio accessoryとして認識されるようになるらしい.

Scrcpy 2.0 で正式対応した.但しAndroid 11 以降.既定値でオーディオが有効になっている.

オーディオを無効にしたい場合 --no-audio を利用する.

オーディオ関連のオプション

$ scrcpy --help | grep -- -audio
    --audio-bit-rate=value
    --audio-buffer=ms
    --audio-codec=name
    --audio-codec-options=key[:type]=value[,...]
    --audio-encoder=name
        by --audio-codec).
    --no-audio
    --require-audio

Android 10以前(ここでは9)に繋いだときはこんなメッセージが表示された

[server] INFO: Device: TINNO C330 (Android 9)
[server] WARN: Audio disabled: it is not supported before Android 11

Android 11 ではscrcpy 起動前にAndroid 端末のロックを解除しておかないとオーディオの共有に失敗する

[server] ERROR: Failed to start audio capture                                                                                                                                                                      
[server] ERROR: On Android 11, it is only possible to capture in foreground, make sure that the device is unlocked when starting scrcpy.
WARN: Demuxer 'audio': stream explicitly disabled by the device                                                                                                                                                    

オーディオを転送

sndcpy を使うことでオーディオの転送が可能

GUI&オーディオ転送

Qt でGUI で利用できる.Release からadb やscrcpy なども同梱されたアーカイブが入手可能でお手軽.

コメント

コメントを入力. Wiki文法が有効です:
   _  __   _  __   _  __  _____  _____
  / |/ /  | |/_/  / |/ / / ___/ / ___/
 /    /  _>  <   /    / / (_ / / /__  
/_/|_/  /_/|_|  /_/|_/  \___/  \___/
 
linux/android/scrcpy.txt · 最終更新: 2023/05/06 18:12 by matoken