樹莓派4上安裝運行scrcpy


0. 官方

https://github.com/Genymobile/scrcpy

1. snap安裝

需要提前安裝好adb。
scrcpy目前樹莓派上沒有正式版,安裝beta版

snap install --beta scrcpy

beta:當前master分支最新編譯
edge: 當前dev分支最新編譯

2. 踩坑

  • libarmmem.so 錯誤
ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.

stackoverflow給出了解決方案,直接注釋掉/etc/ld.so.preload對這個庫的加載。dirty and quick。
https://stackoverflow.com/questions/42443273/raspberry-pi-libarmmem-so-cannot-open-shared-object-file-error

  • listen錯誤
WARN: Could not listen on port 27195, retrying on 27196
listen: Operation not permitted

不需要管,之后會嘗試adb forward,就可以鏈接了。

  • encoder錯誤
[server] ERROR: Exception on thread Thread[main,5,main]
java.lang.IllegalStateException
	at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
	at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2637)
	at com.genymobile.scrcpy.ScreenEncoder.encode(ScreenEncoder.java:113)
	at com.genymobile.scrcpy.ScreenEncoder.internalStreamScreen(ScreenEncoder.java:94)
	at com.genymobile.scrcpy.ScreenEncoder.streamScreen(ScreenEncoder.java:60)
	at com.genymobile.scrcpy.Server.scrcpy(Server.java:80)
	at com.genymobile.scrcpy.Server.main(Server.java:252)
	at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
	at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:285)
WARN: Device disconnected

編碼器出了問題,官方項目README里提到了這種情況,可以更換編碼器試試。

查看支持的編碼器

$ scrcpy --encoder _
[server] ERROR: Try to use one of the available encoders:
[server] ERROR:     scrcpy --encoder-name 'OMX.MTK.VIDEO.ENCODER.AVC'
[server] ERROR:     scrcpy --encoder-name 'OMX.google.h264.encoder'

默認用的是mtk的編碼器,換成google的h264試試。

$ scrcpy --encoder OMX.google.h264.encoder

最終能在樹莓派圖形界面里打開對應安卓的窗口,控制也沒有問題。
配合VNC可以在遠程調試樹莓派和安卓。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM