본문 바로가기
SW 개발/Android

안드로이드 스마트 폰 화면 미러링 방법: scrcpy 사용법

by Kibua20 2022. 1. 4.

안드로이드 스마트 폰 화면을 PC로 미러링 하는 방법을 설명하도록 하겠습니다.

 

스마트 폰 화면을 그대로 PC에 가져오는 것 뿐만 아니라, 사운드 전송, 마우스로 원격 클릭 및 키보드 입력 값을 전달하여 제어도 가능합니다.   안드로이드 개발자 분에게는 PC에서 원격 디버깅에 활용할 수 있으며,  일반적으로는 회사 보안 정책 상 PC에 카카오톡이 설치가 막혀있는 경우 폰의 카카오톡을 PC에서 사용 가능합니다.  

 

안드로이드 화면 미러링 앱은 PlayStore에도 많지만 광고가 포함된 유료 앱도 많아 무료로 사용할 수 있는 오픈 소스 기반을 scrcpy를 설명하고자 합니다. 

 

scrcpy 활용 예

  • 안드로이드 화면/오디오을 PC에 띄우는 경우 (비디오 뿐 아니라 오디오도 전송함)
  • 안드로이드 스마트 폰 원격 디버깅 (USB, WiFi 연결 가능)
  • 스마트 폰의 카카오톡을 PC에서 사용 (회사 보안 상 PC 카톡 설치가 불가한 경우 유용함) -> 한글 입력 지원 
  • 회사 보안 프로그램에 영향없이 스마트폰 기능을 데모할때 유용함 (스마트폰 - PC - 프로젝트 연결)
  • 스마트 폰 화면을 녹화 저장 (e.g. 게임 녹화), 화면 캡쳐 (은행 앱 처럼 FLAG_SECURE 설정된 화면도 캡쳐)
  • 복수의 스마폰을 하나의 PC 에서 사용할 때

 

scrcpy 특징

  • lightness (native, displays only the device screen): adb를 사용하고 있고 실행 파일만 설치하면 됩니다. 최근 버전에서는 멀티 display도 지원합니다. 
  • performance (30~60fps):  유선 8 Mbps로 기본 설정되어 있고, 무선은  2 Mbps로 설정하면 영화 감상에도 큰 무리가 없는 수준입니다.
  • quality (1920×1080 or above): 고해상도 지원합니다. 명령어 옵션으로 해상도 및  crop도 가능함
  • low latency (35~70ms) :  실시간 반응성이 좋습니다. 
  • low startup time (~1 second to display the first image):  첫 화면에 나오는데 빠른 시간을 보장합니다. 
  • non-intrusiveness (nothing is left installed on the device):   단말에 특별한 설치 프로그램 필요 없습니다.

scrcpy의 설치 방법 및 활용 방법은 아래 동영상에 잘 설명되어 있습니다.

출처: www.youtube.com/watch?v=zZDkK3A-qKE

 

1. scrcpy 설치 방법

scrcpy 설치는 github 사이트에도 가능하고  Ubuntu에서는 apt로, MacOS 에서는  brew로 설치가 가능합니다.

 

 

#우분투 설치 (v1.12버전이 설치됩니다. 최신 버전은 git hub에서 빌드 방법을 확인해주세요.)

$ sudo apt install scrcpy

 

# MacOS

$ brew install scrcpy

 

# Windows 설치: (2022년1월 기준) v2.21이 최신 버전입니다.

  github.com/Genymobile/scrcpy/releases/download/v1.16/scrcpy-win64-v1.16.zip

  github.com/Genymobile/scrcpy/releases/download/v1.17/scrcpy-win64-v1.17.zip

https://github.com/Genymobile/scrcpy/releases/download/v1.21/scrcpy-win64-v1.21.zip

우분투에서 scrcpy 설치

 

V1.17의 변경 사항

V1.17버전의 변경 사항은 github.com/Genymobile/scrcpy/releases/tag/v1.17 를 참고해주세요. V1.6 대비해서  ① Android 11에서 -- show-touches 와 --stay-awake 에러 수정,  ②마우스 클릭 수정 (마우스 오른쪽 키는 Back키 삽입하고 Mid키는 홈키 삽입), ③ Copy-Paste 오류 수정, ④ screen off  Work aroud 적용 ⑤ Encoder 옵션 적용 등이 개선되었다고 합니다.

 

 V1.21의 변경 사항

최신 v1.21 버전에서는 TCP/IP로 무선 연결이 편리하게 개선됐습니다.  USB연결 상태에서 $ scrcpy --tcpip 를 실행하여 단말의 IP 주소를 알아내고, 그 다음 부터는   $ scrcpy --tcpip = [IP주소] 로 입력하면 간편하게 무선 연결이 가능합니다.  만일 폰의 IP 주소가 유지되는 상태라면 이후부터는  $ scrcpy --tcpip  만 입력해서도 무선 연결이 가능합니다.

 

$  scrcpy --tcpip

 scrcpy 무선 연결

 

$  scrcpy --tcpip=192.168.218.105

 scrcpy 무선 연결

 

★사전작업 - 스마트 폰에서 'adb 디버깅' 설정을 enable해야 함

안드로이드 폰에 adb 연결 설정이 필요합니다.  안드로이드 폰에서 개발자 메뉴의 USB 디버깅을  Enable 해야 합니다.  안드로이드 폰 시스템 설정 > 소프트웨어 정보 > 빌드 번호를 3번 이상 클릭하여 '개발자 메뉴'를 활성화하고 하고, 개발자 메뉴에서 'USB 디버깅' 메뉴를 활성화해야 합니다. 상세 내용은 링크를 확인해주세요. 

 

adb  처음 연결하는 경우 'USB 디버깅을  항상 허용할까요' 라는 팝업을 표시하고 이때 '확인' 버튼을 눌러야 합니다. 

 

안드로이드 폰에서 설정이 정상적으로 되었다면 PC와 연결 후 adb devices 명령어로 Device ID 확인이 가능해야 합니다.

 

$ adb devices 

List of devices attached
LGMV300L45212cca device

 

2. scrcpy 실행

scrcpy를 실행하면 아래와 같이 핸드폰 화면이 미러링 됩니다.  이 상태에서 USB Audio를 통해서 소리도 전달되면 PC에서 마우스 및 키보드 전달도 가능합니다. 

 

scrcpy 실행

 

 

3. 실행 옵션 

scrcpy를 실행 옵션은 아래와 같습니다. USB 연결에서는 특별한 옵션이 필요 없고, WiFi 연결 시에서는 bitrate과  fps조절이 필요합니다. 

 

    --always-on-top        Make scrcpy window always on top (above other windows).
     -b, --bit-rate value          Encode the video at the given bit-rate, expressed in bits/s.

    --crop width:height:x:y   Crop the device screen on the server. The values are expressed in the device natural orientation 
    -f, --fullscreen        Start in fullscreen.
    --max-fps value         Limit the frame rate of screen capture (only supported on  devices with Android >= 10).
    -m, --max-size value   Limit both the width and height of the video to value. The other dimension is computed so that the device aspect-ratio  is preserved.     Default is 0 (unlimited).
    -n, --no-control:   Disable device control (mirror the device in read-only).
    -N, --no-display         Do not display device (only when screen recording is  enabled).
    -p, --port port   Set the TCP port the client listens on.    Default is 27183.
    -s, --serial serial        The device serial number. Mandatory only if several devices   are connected to adb.
    -S, --turn-screen-off    Turn the device screen off immediately.
    -t, --show-touches        Enable "show touches" on start, disable on quit.       It only shows physical touches (not clicks from scrcpy). 
 

4. 화면 녹화

스마트 폰 화면을 MP4 동영상으로 화면 녹화가 가능합니다.  

 

$ scrcpy --record file.mp4    (또는 file.mkv)

 

#화면 미러 없이 저장. Ctrl+C로 끝냄

$ scrcpy --no-display --record file.mp4 scrcpy -Nr file.mkv

# interrupt recording wit

 

 

 

4. WiFi 연결 상태에서 화면 미러링

adb의 WiFi 연결 기능을 활용해서 미러링이 가능합니다.  스마트 폰을 PC와 같은 공유기에 연결하고 「스마트 폰의 IP 주소」로 연결해야 합니다.

1. PC와 스마트폰을 같은 WiFi AP 공유기에 연결 

2. 스마트폰을 컴퓨터에 USB로 연결하고, 터미널 (or cmd 창)에서 아래 명령어를 입력해주세요.

      $ adb tcpip 5555

      (성공 시) : restarting in TCP mode port: 5555

  * 매번 USB연결이 귀찮다면 setprop

     $ adb shell setprop service.adb.tcp.port 5555

 

3. 스마트 폰의 USB 연결을 해제하고 터미널에서 아래 명령어로 무선 연결

      $adb connect <Smart Phone IP>:5555

     * 스마트폰 설정 > 휴대폰 정보 > IP주소 메뉴에서 연결된 IP 주소 확인 가능합니다. 또는 터미널에서  $ adb shell ifconfig 명령어로 확인 가능합니다. 

스마트 폰의 IP 주소 확인

 

4. PC에서 scrcpy 실행,  무선 연결 상태에서  bitrate을 낮게 설정해야 화면 delay가 없습니다. 

     $ scrcpy --bit-rate 2M --max-size 800

     $ scrcpy -b2M -m800

WiFi 연결 상태에서 화면 미러링

 

모바일 네트워크 확인 - 미지원

모바일 네트워크에서 테스트하면 아래와 같이 사설IP와 공인IP모두 adb로 연결이 안됩니다. adb자체가 지원하지 않을 수 있고 통신사의 Gateway에서 막혀 있을 수 있을 것 같네요. 연결 방법을 찾으시는 분은 댓글로 남겨주세요.

 

모바일 네트워크에서는 adb connect가 지원되지 않음

댓글 중에 VPN으로 성공한 사례가 있어 내용을 추가합니다. PC-공유기를 동일한 망에 놓고 공유기의 VPN을 통해서 모바일 네트워크로 연결하면 가능하다고 합니다. 

VPN 활용하여 모바일 네트워크에서 연결한 사례

 

한글 입력 확인 - 버그는 있지만 지원함

scrcpy 에서 한글 입력이 일부 화면에서는 한글 입력 시 server 에러 메시지를 출력하면서 입력이 되지 않습니다. 하지만, 한글 입력기 (IME)을 띄운 상태에서 PC에서 한글 입력 시 정상적으로 입력이 가능합니다.  (※알키보드 사용시에도 잘 동작한다고 함)
한/영키 전환 시 버그는 있지만 사용 가능한 수준입니다.  스마트 폰 입력기에서 한글/영문을 전환할 수 있고, PC에서는 한/영키가 안되면 Shift+Space으로 시도 해보시면 전환됩니다. (확인 버전 scrcpy v1.16 + LG Velvet)

 

한글 입력도 지원함

화면 끄고 켜기

스마트 폰 화면은 Off 상태에서 PC 화면만 미러링하는 경우에는 -S 옵션으로 실행하고, LCD off 상태에서는 마우스 오른쪽 Key로 누르면 다시 켜집니다.

 

# 스마트폰 LCD off 하고 PC 미러링 화면만 켜기

 $ scrcpy -S

 

# Display off상태에서 다시  on하는 경우 

# 마우스 오른쪽 키

 

 

화면 끄고 켜기

스마트 폰 화면은 항상 켜져 있는 상태를 유지하기 위해서는 -W을 사용할 수 있습니다. Display off 시 잠금 화면을 해제하는 것이 가끔 불편할 수 있습니다.  스마트 폰과 USB를 연결한 상태에서 저속 충전(500mA) 수준으로 충전하고 있어 장시간 사용 가능합니다.

 

# 스마트폰 Alwayse on 

 $ scrcpy -W

 

 

윈도우 사이즈 조절

PC에서 미러링하는 화면이 너무 큰 경우 아래와 명령어로 사이즈 조절이 가능합니다.  Aspect ratio은 유지하고 화면 크기를 조정합니다. 기본 값을 0 (unlimited) 입니다. 

 $scrcpy  --max-size 860

 

단축키 일람: (출처)

기능 단축키 (MOD  =  (left) Alt or (left) Super)
Switch fullscreen mode MOD+f
Rotate display left MOD+← (left)
Rotate display right MOD+→ (right)
Resize window to 1:1 (pixel-perfect) MOD+g
Resize window to remove black borders MOD+w | Double-click¹
Click on HOME MOD+h | Middle-click
Click on BACK MOD+b | Right-click²
Click on APP_SWITCH MOD+s
Click on MENU (unlock screen) MOD+m
Click on VOLUME_UP MOD+↑ (up)
Click on VOLUME_DOWN MOD+↓ (down)
Click on POWER MOD+p
Power on Right-click²
Turn device screen off (keep mirroring) MOD+o
Turn device screen on MOD+Shift+o
Rotate device screen MOD+r
Expand notification panel MOD+n
Collapse notification panel MOD+Shift+n
Copy to clipboard³ MOD+c
Cut to clipboard³ MOD+x
Synchronize clipboards and paste³ MOD+v
Inject computer clipboard text MOD+Shift+v
Enable/disable FPS counter (on stdout) MOD+i
Pinch-to-zoom Ctrl+click-and-move

¹Double-click on black borders to remove them.

²Right-click turns the screen on if it was off, presses BACK otherwise.

³Only on Android >= 7.

 

5. scrcpy GUI 버전

scrcpy fork 중에서는 GUI 버전이 있어 소개합니다.  scrcpy-gui의 Git Hub사이트에서 다운로드 가능합며 설치 파일은 링크에서 다운로 할 수 있습니다.  scrcpy-gui는 동작은 잘 하지만  GUI가 중국어로 나와서 불편합니다.  (영어로 어떻게 변경하는지는 문의 중입니다.) scrcpy를 실행하면 상단 인디케이터 영역에 scrcpy 아이콘 생성되고 'Language' 메뉴에서 영어로 선택하면 영어로 사용 가능합니다.

 

#우분투에서 설치

$ sudo apt-get install gconf2 libappindicator1

$ sudo dpkg -i ScrcpyGui-1.5.1.deb 

scrcpy GUI 버전 (출처: https://github.com/Tomotoes/scrcpy-gui)

 

6. SCRCPY 소리 미러링

scrcpy 자체로는 사운드 미러링을 지원하고 있지 않습니다.  Sound 미러링은 sndcpy를 사용해야 합니다. scrcpy와 sndcpy는 동시에 사용 가능합니다.  sndcpy를 사용하기 위해서는 PC 에 VLC가 미리 설치되어 있어야하고 Android 10 (Q-OS)부터 가능합니다.  sndcpy에 대한 설명은 아래 포스팅을 확인해주세요.

 

 

관련 글:

[블로그 관리/티스토리 블로그 관리] - 파이썬 Selenium을 활용한 네이버 서치어드바이저 URL 입력 '자동화'

[개발환경/Tips] - 네이버 동영상 다운로드 방법 (동영상과 설명 포함)

[모바일 SW 개발/Android] - Android 에서 리눅스 App 실행: Linux Terminal Emulator (Termux) 활용

[모바일 SW 개발/Android] - Android에서 Python 실행 (SL4A와 Termux 활용)

[모바일 SW 개발/Android] - Android apkanalyzer 에러: java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema

[모바일 SW 개발/Android] - Command line 기반 Android Apk 분석 툴: apkanalyzer

[모바일 SW 개발/Python] - 파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러

[모바일 SW 개발/Android] - Android 소스 최적화 (100GB에서 65GB로 줄이기)

[모바일 SW 개발/Android] - Android 11 (R-OS) Emulator에 설치하기

[모바일 SW 개발/Android] - Android 11 기능 소개

[모바일 SW 개발/Android] - Ubuntu에서 Android 10 빌드하기




댓글78

  • 이전 댓글 더보기