跳转至

Scrcpy二次开发

解码器选择

scrcpy-win64-v1.24\scrcpy.exe --encoder _

[server] ERROR: Try to use one of the available encoders:
[server] ERROR:     scrcpy --encoder 'c2.qti.avc.encoder'
[server] ERROR:     scrcpy --encoder 'OMX.qcom.video.encoder.avc'
[server] ERROR:     scrcpy --encoder 'c2.android.avc.encoder'
[server] ERROR:     scrcpy --encoder 'OMX.google.h264.encoder'

MTK机型

[server] ERROR: Try to use one of the available encoders:
[server] ERROR:     scrcpy --encoder 'c2.mtk.avc.encoder'
[server] ERROR:     scrcpy --encoder 'OMX.MTK.VIDEO.ENCODER.AVC'
[server] ERROR:     scrcpy --encoder 'c2.android.avc.encoder'
[server] ERROR:     scrcpy --encoder 'OMX.google.h264.encoder'

端口转发

adb reverse --remove tcp:10086 adb forward --remove tcp:10086

adb reverse localabstract:scrcpy tcp:10086 5005端口用于debug adb forward tcp:5005 tcp:5005

二次开发

下载源码

修改权限
chmod -R 777 scrcpy
为支持在脱离电脑的场景下对手机进行录屏,二次开发scrcpy-server.jar,主要思路是通过socket server控制录制的启动和停止。 自动以ScreenEncoder,在encode方法中将数据写入自定义的MediaMuxer中。

打包

先按照源码中build.md的要求安装依赖库,使用ubuntu18.04进行打包。

导入环境变量
export ANDROID_SDK_ROOT=/home/yinkh/Android/Sdk
打包工具配置 server_debugger=true指定为调试模式
meson x --buildtype=release --strip -Db_lto=true -Dserver_debugger=true
打包 文件输出至x文件夹
ninja -Cx

执行

手机
CLASSPATH=/sdcard/scrcpy-server.jar app_process / com.genymobile.scrcpy.api.ApiServer
电脑
adb shell CLASSPATH=/sdcard/scrcpy-server.jar app_process / com.genymobile.scrcpy.api.ApiServer

下面的都在非root下操作

meson build-auto --buildtype=release --strip -Db_lto=true -Dserver_debugger=true
-Dprebuilt_server=scrcpy-server cd build-auto ninja


CLASSPATH=/sdcard/scrcpy-server.jar app_process / com.genymobile.scrcpy.Server