Android端末をVNCのように画面転送して操作できる
Debian bullsete/bullseye-backports/sidならpkgがあるので導入もお手軽
※Scrcpy 2.0 でオーディオ転送に対応した.但しAndroid 11+
$ sudo apt install scrcpy
$ 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
$ 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
-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
→
以下は 5fps に制限
$ scrcpy --max-fps 5 -m 1280
-w, --stay-awake
-S, --turn-screen-off
-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
$ 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 を使うことでオーディオの転送が可能
Qt でGUI で利用できる.Release からadb やscrcpy なども同梱されたアーカイブが入手可能でお手軽.
コメント