[일단기록] 안드로이드 폰 화면 미러링 scrcpy

kjoo0·2024년 6월 28일
0

일단기록

목록 보기
1/10
post-thumbnail

사전 준비

PC

# scrcpy adb 설치
brew install scrcpy
brew install android-platform-tools

윈도우는 해당 포스팅 참고

안드로이드

  • usb 디버깅 옵션 on
    설정 > 개발자 옵션 항목 > usb 디버깅 옵션

연결

기기 1개 연결

# 서버 종료
adb kill-server

# 서버 시작
adb start-server

# 기기 찾기 - 먼저 유선 연결 필요
adb devices

# 유선 연결
scrcpy

# 최상단에 위치하게 실행
scrcpy -S -t --always-on-top

# 무선 연결을 위한 네트워크 설정
adb tcpip 5555 (ip 맘대루)

# 기기 wifi 주소로 connect
adb connect Ip:5555

# 연결 해제
adb disconnect ip:5555

2대 이상

adb devices

adb -d tcpip 5555

adb connect ip:5555

scrcpy -s ip:5555

오류

그리고 너무나 당황스러웠던 오류도 정리합니다 ㅠ_ㅠ

error: device unauthorized.

adb tcpip 5555
adb tcpip 5556

This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.

시도

adb kill-server, adb start-server 하고 다시 시도했으나 똑같이 This adb server's $ADB_VENDOR_KEYS is not set 계~~~속 떴다 ㅠㅠ

구글링 했을 때 adbkey를 삭제하면 된다고 해서 삭제했지만 rm ~/.android/adbkey*로 삭제했지만 여전..

해결


알고 쓰자!

scrcpy와 adb

  • scrcpy(screen Copy)는 데스크톱 컴퓨터에서 Android 기기를 제어할 수 있는 무료 오픈 소스 화면 미러링 애플리케이션입니다
  • ADB(Android Debug Bridge)는 안드로이드 기반 기기들의 디버깅에 사용하는 프로그래밍 도구입니다. USB나 TCP를 통해 호스트 PC의 서버에 연결하고, TCP를 통해 클라이언트에 연결됩니다!

작동 원리

adb

adb는 컴퓨터로 안드로이드 기기를 컨트롤할 수 있습니다.

  • 컴퓨터에서는 tcp 통신을 지원하는 서버 프로세스를 실행합니다.
  • 안드로이드 기기에서는 백그라운드에서 실행하는 데몬 프로세스를 실행합니다.
  • 사용자의 컴퓨터에서 클라이언트 컴포넌트를 실행해 사용자가 명령어를 입력하여 제어할 수 있습니다.
  1. ADB 서버 시작
    adb start-server 명령어를 통해 서버가 시작됩니다. 서버는 로컬 TCP 포트 5037에서 클라이언트 요청을 수신 대기합니다.
  2. 데몬 시작
    서버는 연결된 모든 기기에 대해 데몬을 시작합니다. 데몬은 기기의 포트 5555에서 수신 대기합니다.
  3. 명령 전송
    사용자가 ADB 명령을 입력하면, 클라이언트는 서버에 요청을 보내고, 서버는 이를 해당 기기의 데몬으로 전달합니다.
  4. 응답 수신
    기기의 데몬이 명령을 실행하고, 그 결과를 서버를 통해 클라이언트에 전달합니다.

scrcpy

  1. ADB 연결
    SCRCPY는 ADB를 통해 안드로이드 기기와 연결합니다. 기기와의 연결은 USB 또는 TCP/IP를 통해 이루어질 수 있습니다.
  2. 스크린 스트리밍
    SCRCPY는 안드로이드 기기의 화면을 H.264 비디오 스트림으로 변환하여 네트워크를 통해 전송합니다. 이 과정은 기기에서 실행되는 서버와 컴퓨터에서 실행되는 클라이언트 사이에서 이루어집니다.
  3. 비디오 디코딩
    컴퓨터에서는 이 스트림을 수신하고, FFmpeg 라이브러리를 사용하여 비디오를 디코딩합니다.
  4. 화면 출력
    디코딩된 비디오는 SDL2 라이브러리를 사용하여 컴퓨터 화면에 출력됩니다.
  5. 입력 이벤트 전달
    사용자가 컴퓨터에서 마우스와 키보드를 사용하면, 이러한 입력 이벤트가 SCRCPY를 통해 ADB를 사용하여 기기로 전달됩니다.

참고

macOS에서 scrcpy를 이용한 화면 미러링
m1 pro scrcpy

profile
티스토리 이사 준비 중..

0개의 댓글