Obsidian/Recognition/Tools/Scrcpy/Scrcpy 명령어.md

113 lines
4.9 KiB
Markdown

#Scrcpy
[[Android ADB 명령어]]
- 화면 강제 OFF
> scrcpy --turn-screen-off
- 잠자기 모드를 방지하면서 물리적 화면을 끄기
> scrcpy --turn-screen-off --stay-awake
> scrcpy -Sw
- scrcpy를 닫을 때 기기의 화면을 OFF
> scrcpy --power-off-on-close
- OTG - on the go 모드 (USB연결 필요)
>scrcpy --otg
>scrcpy --hid-keyboard --hid-mouse
- 손가락으로 물리적 터치한 영역 표시
>scrcpy --show-touches
scrcpy -t
- PC의 스크린세이버 동작OFF
> scrcpy --disable-screensaver
- APP자동 복사 경로 지정
> scrcpy --push-target=/sdcard/Movies/
- 화면 사이즈 제한
>scrcpy --max-size 1024
scrcpy -m 1024 # short version
- 비트레이트 변경 (기본 8M)
>scrcpy --bit-rate 2M # M(메가)단위의 숫자 혹은 K(킬로)단위도 가능하다.
scrcpy -b 2M # short version
- 프레임레이트 제한
> scrcpy --max-fps 15 # 숫자는 fps를 자유롭게 입력
- 크롭(특정부위만 잘라서 표시, --max-size옵션을 같이 사용시 우선순위 주의)
> scrcpy --crop 1224:1440:0:0 # 1224x1440 at offset (0,0)
- 화면 회전 고정
>scrcpy --lock-video-orientation # 현재 화면 회전 상태로 지정
scrcpy --lock-video-orientation=0 # 0° 회전으로 지정
scrcpy --lock-video-orientation=1 # 90° 회전으로 지정
scrcpy --lock-video-orientation=2 # 180° 회전으로 지정
scrcpy --lock-video-orientation=3 # 90° 시계방향으로 돌려서 지정
- 렌더링을 위한 인코더 지정
(부 기기에서는 scrcpy 사용 중 종료되거나 크래시 되는 경우 다른 인코더를 사용 하면 해결될 수 있음)
> # 인코더 확인
> scrcpy --encoder _
>
> # 인코더 적용
> scrcpy --encoder {OMX.qcom.video.encoder.avc}
- 화면녹화
>scrcpy --record file.mp4 # 긴 명령어
scrcpy -r file.mkv # 짧은 명령어
- 러링 없이 파일로만 녹화
>scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
># 만약 녹화를 중단하고 싶다면, 명령 프롬프트에서 Ctrl+C를 누르면 중단이 가능하다.
- 녹화 버퍼링 지정
> scrcpy --display-buffer=50 # 화면 표시를 50ms 지연시키고 싶은 경우
- 읽기전용
>scrcpy --no-control
scrcpy -n
***
### 터널링
```CMD
원격에 있는 기기를 연결하기 위해 로컬의 adb 클라이언트로 원격의 adb 서버에 연결하는 것이 가능하다.(물론 adb 프로토콜은 같은 버전을 사용해야 한다는 전제조건이다.)
아래와 같이 진행하면 된다. 먼저 adb 서버를 실행할 곳에서는 서버를 시작해야 한다.
adb kill-server
adb -a nodaemon server start
# 계속 유지해야 한다.
만약 이 서버에 192.168.1.2로 접근할 수 있다고 가정하면, 다른 터미널에서 scrcpy를 이렇게 실행해 둔다.
기본적으로 scrcpy는 adb 포워딩 터널 연결에 사용되는 로컬 포트를 사용한다.(일반적으로 27183포트이고, --port명령으로 확인하면 된다.) 필요하다면 다른 터널 포트를 지정하여 강제로 실행하는 것도 가능하다.
export ADB_SERVER_SOCKET=tcp:192.168.1.2:5037
scrcpy --tunnel-host=192.168.1.2 # 터널의 호스트 IP 지정
scrcpy --tunnel-port=1234 # 포트를 지정하고 싶은 경우
터널을 이용한 이런 기법은 여러 안드로이드 기기를 한 곳에서 서버의 역할을 하는 피씨를 전용으로 두고 한 팀에서 공용으로 접근하기 위해서 사용하는 것이 좋을 것 같다.
adb 서버 연결을 안전하게 하기 위해서는 SSH 터널링을 사용하는 것이 좋다. 먼저 adb 서버가 원격 컴퓨터에서 실행중인지 확인하고 실행중이 아니라면 시작해 준다.
adb start-server
그리고 SSH 터널링 연결해준다.
# 로컬 5038포트에서 --> 원격 5037 포트로 연결하고
# 로컬 27183포트로 <-- 원격 27183 포트에서 연결하기를 원한다면
ssh -CN -L5038:localhost:5037 -R27183:localhost:27183 your_remote_computer
# 이 연결을 유지해준다.
ssh 연결을 유지한 상태에서 다른 터미널을 열어 scrcpy를 실행해 준다.
export ADB_SERVER_SOCKET=tcp:localhost:5038
scrcpy
위와는 다른 방법으로 만약, 네트워크 구성에 따라 원격 포트 포워딩을 활성화 하고 싶지 않다면, 대신 포트 포워딩 연결을 강제할 수 있다. 방향을 로컬에서 리모트로만 진행될 수 있도록 할 수 있다. 뒤에서 -R대신 -L로 입력해 준다.
# 로컬 5038포트에서 --> 원격 5037 포트로 연결하고
# 로컬 27183포트에서 --> 원격 27183 포트로 연결하기를 원한다면
ssh -CN -L5038:localhost:5037 -L27183:localhost:27183 your_remote_computer
# 이렇게 연결하고 연결을 유지한다.
이 상태에서 다른 터미널을 열고 아래와 같이 scrcpy를 실행해 준다.
export ADB_SERVER_SOCKET=tcp:localhost:5038
scrcpy --force-adb-forward -b2M -m800 --max-fps 15
```