스마트폰을 사용하다보면, 가끔 스마트폰의 화면을 PC에서 보고 싶다는 생각이 들 때가 있습니다. '스마트폰 화면에 손기름이 묻는 것이 싫다'같은 사소한 이유에서부터, '스마트폰 화면에서 나오는 것을 PC에서 그대로 보고 싶다'같은 이유도 있을 수 있죠.
이러한 생각을 한 것이 꽤 많은 것인지, 시중에 이미 스마트폰의 화면을 PC로 전송시킬 수 있는 프로그램과 앱이 많이 나와있습니다. 하지만 그 중 상당수가 일부 기능에 결제를 요구하거나 광고를 띄우는 등, 사용자 입장에서 별로 마음에 들지 않는 정책을 갖고 있습니다. 한번 결제하고 끝이라면 또 모를까, 월정액 가입을 요구하는 경우도 존재하죠.
그래서 인터넷의 바다를 조금 뒤져보았습니다. 그 중 '이거 괜찮아보이는데?' 싶은 프로그램을 소개하고자 합니다.
1. scrcpy
scrcpy는 안드로이드 에뮬레이터로 한때 유명세를 떨쳤던 Genymotion의 개발사인 Genymobile에서 무료로 공개한 프로그램입니다.
보시다시피, 스마트폰의 화면을 PC에서 그대로 볼고 조작할 수 있습니다. Windows, Linux, macOS 모두를 지원하며 ADB를 이용하여 스마트폰에 연결하기 때문에 프로그램의 사용에 추가적인 설치가 필요없다는 장점이 있습니다. 심지어 최근 릴리즈(v1.14)에서는 Windows 배포판 안에 ADB 파일을 동봉해 배포하고 있으므로, ZIP파일을 다운로드 받고 압축을 풀어, 실행파일을 실행하면 스마트폰과 연결할 수 있게 됩니다.
단, 앞서 말했다시피 ADB를 이용하여 스마트폰과 연결하므로 '개발자 도구'에서 'USB 디버깅'을 활성화 하셔야 사용할 수 있습니다. 또한 scrcpy는 화면만 PC에 연결해주므로, 소리는 스마트폰의 스피커에서 재생되게 됩니다.
자세한 사용법은 아래를 참고하세요. 내용이 길어 접어두었습니다.
scrcpy.exe
와 scrcpy-noconsole.exe
이 있는데, 만약 콘솔 화면 없이 화면만 보고 싶다면 scrcpy.exe
대신 scrcpy-noconsole.exe
를 사용하세요.
사용법: scrcpy.exe [options]
Options:
--always-on-top
scrcpy 창을 항상 다른 창보다 위에 표시합니다.
Make scrcpy window always on top (above other windows).
-b, --bit-rate value
PC로 송출되는 영상을 주어진 비트레이트(bits/s) 값으로 인코딩합니다.
K, M와 같은 단위 접미사를 지원합니다. 기본값은 8000000입니다.
Encode the video at the given bit-rate, expressed in bits/s.
Unit suffixes are supported: 'K' (x1000) and 'M' (x1000000).
Default is 8000000.
--codec-options key[:type]=value[,...]
쉼표(,)로 구분되는 영상 인코더 코덱 옵션을 제공합니다.
type으로 사용 가능한 값은 int(기본값), long, float, string이 있습니다.
Set a list of comma-separated key:type=value options for the device encoder.
The possible values for 'type' are 'int' (default), 'long', 'float' and 'string'.
사용가능한 인코더 코덱 옵션은 Android 공식 문서를 참조하세요.
The list of possible codec options is available in the Android documentation:
<https://d.android.com/reference/android/media/MediaFormat>
--crop width:height:x:y
PC로 송출되는 영상을 자릅니다.
값들은 스마트폰의 자연스러운 방향을 따릅니다.
예를 들어 스마트폰은 세로이며 태블릿은 가로입니다.
--max-size 값은 crop 된 이후에 계산됩니다.
Crop the device screen on the server.
The values are expressed in the device natural orientation
(typically, portrait for a phone, landscape for a tablet).
Any --max-size value is computed on the cropped size.
--display id
PC에 송출할 스마트폰의 디스플레이 ID를 지정합니다.
Specify the display id to mirror.
사용 가능한 디스플레이 ID들은 다음 명령어를 통해 확인할 수 있습니다.
mDisplayId 값을 찾아보세요.
The list of possible display ids can be listed by:
adb shell dumpsys display
(search "mDisplayId=" in the output)
기본값은 0입니다.
Default is 0.
--force-adb-forward
adb reverse를 사용하지 않고 기기에 연결합니다.
Do not attempt to use "adb reverse" to connect to the the device.
-f, --fullscreen
전체화면으로 시작합니다.
Start in fullscreen.
-h, --help
이 도움말을 표시합니다.
Print this help.
--lock-video-orientation value
PC로 송출되는 화면의 방향을 고정합니다. 사용 가능한 값은 -1(고정하지 않음), 0, 1, 2, 3입니다.
자연스러운 방향의 값은 0이며, 반시계 방향으로 90도 돌아갈 때마다 값이 1씩 증가합니다.
기본값은 -1(고정하지 않음)입니다.
Lock video orientation to value.
Possible values are -1 (unlocked), 0, 1, 2 and 3.
Natural device orientation is 0, and each increment adds a 90 degrees rotation counterclockwise.
Default is -1 (unlocked).
--max-fps value
화면의 초당 프레임수를 제한합니다. Android 10부터 공식적으로 지원되나, 이전 버전의 Android에서 작동할 수도 있습니다.
Limit the frame rate of screen capture (officially supported since Android 10, but may work on earlier versions).
-m, --max-size value
PC로 송출되는 화면의 가로와 세로의 값을 모두 제한합니다. 다른 쪽의 값은 스마트폰의 실제 화면 비율에 맞춰 계산됩니다.
기본값은 0(제한없음)입니다.
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
스마트폰 조작 기능을 비활성화합니다. 이렇게 하면 PC에서 스마트폰을 조작할 수 없이 오직 스마트폰의 화면만 볼 수 있게 됩니다.
Disable device control (mirror the device in read-only).
-N, --no-display
화면 녹화가 작동중일 때, 기기를 표시하지 않습니다.
Do not display device (only when screen recording is enabled).
--no-mipmaps
만약 렌더러가 OpenGL 3.0 이상이거나 OpenGL ES 2.0 이상일 때 mipmap이 자동적으로 만들어져 화면 축소의 품질을 높입니다. 이 옵션은 해당 기능을 비활성화 합니다.
If the renderer is OpenGL 3.0+ or OpenGL ES 2.0+, then mipmaps are automatically generated to improve downscaling quality. This option disables the generation of mipmaps.
-p, --port port[:port]
PC가 listen할 TCP 포트 범위를 지정합니다.
기본값은 27183:27199입니다.
Set the TCP port (range) used by the client to listen.
Default is 27183:27199.
--prefer-text
키 입력을 보낼 때, 키 이벤트 대신 텍스트 이벤트로 보냅니다.
이 방법은 특수 키를 입력할 때 생기는 문제를 해결할 수 있지만, 게임에서의 WASD 키 입력에서 문제를 일으킬 수 있습니다.
Inject alpha characters and space as text events instead of
key events.
This avoids issues when combining multiple keys to enter a special character, but breaks the expected behavior of alpha keys in games (typically WASD).
--push-target path
PC에서 드래그 & 드롭으로 스마트폰으로 파일을 보낼 때 저장할 경로를 지정합니다. 이때 파일은 adb push를 통해 전송됩니다.
기본값은 "/sdcard"입니다.
Set the target directory for pushing files to the device by drag & drop. It is passed as-is to "adb push".
Default is "/sdcard/";.
-r, --record file.mp4
화면을 파일로 녹화합니다. 포맷은 --record-format 옵션을 통해 지정할 수도 있으며, 파일 확장자를 통해 지정할 수도 있습니다.
Record screen to file.
The format is determined by the --record-format option if set, or by the file extension (.mp4 or .mkv).
--record-format format
화면을 녹화할 때, 파일 포맷을 지정합니다. mp4 혹은 mkv를 사용할 수 있습니다.
Force recording format (either mp4 or mkv).
--render-driver name
SDL로 하여금 주어진 렌더링 드라이버를 사용하도록 권유합니다. 이는 단순한 제안입니다.
지원되는 드라이버 이름은 "direct3d", "opengl",
"opengles2", "opengles", "metal", "software"입니다.
Request SDL to use the given render driver (this is just a
hint).
Supported names are currently "direct3d", "opengl",
"opengles2", "opengles", "metal" and "software".
<https://wiki.libsdl.org/SDL_HINT_RENDER_DRIVER>
--render-expired-frames
지연시간을 최소화 하기 위해 scrcpy는 기본적으로 사용 가능한 마지막 디코딩된 프레임을 표시하고 그 이전 프레임을 버립니다.
이 옵션은 해당 기능을 비활성화 하고 모든 프레임을 표시합니다. 대신 약간의 지연시간을 추가로 얻습니다.
By default, to minimize latency, scrcpy always renders the last available decoded frame, and drops any previous ones.
This flag forces to render all frames, at a cost of a possible increased latency.
--rotation value
시작할 때 기본 화면 회전을 지정합니다.
사용 가능한 값은 0, 1, 2, 3입니다. 각각 반시계 방향으로 90도씩 회전합니다.
Set the initial display rotation.
Possibles values are 0, 1, 2 and 3. Each increment adds a 90 degrees rotation counterclockwise.
-s, --serial serial
만약 여러 기기가 ADB에 연결되어 있을 때, 특정 기기의 시리얼을 지정합니다.
The device serial number. Mandatory only if several devices are connected to adb.
-S, --turn-screen-off
스마트폰의 화면을 즉시 끕니다. PC로 송출되는 화면에는 영향을 주지 않습니다.
Turn the device screen off immediately.
-t, --show-touches
스마트폰의 터치 위치를 표시하는 기능을 활성화 합니다. scrcpy를 종료할 때 원래 값으로 초기화 됩니다.
이 기능은 오직 스마트폰의 터치 위치만 표시하며, scrcpy에서 입력한 클릭은 표시되지 않습니다.
Enable "show touches" on start, restore the initial value on exit.
It only shows physical touches (not clicks from scrcpy).
-v, --version
scrcpy의 버전을 표시합니다.
Print the version of scrcpy.
-V, --verbosity value
로그 레벨을 지정합니다. debug, info, warn, error를 사용할 수 있습니다.
기본값은 info입니다.
Set the log level (debug, info, warn or error).
Default is info.
-w, --stay-awake
scrcpy가 실행중일 때 기기를 잠그지 않습니다.
Keep the device on while scrcpy is running.
--window-borderless
화면 윈도우의 테두리를 없애고 오직 스마트폰의 화면만을 표시합니다.
Disable window decorations (display borderless window).
--window-title text
화면 윈도우의 제목을 설정합니다.
Set a custom window title.
--window-x value
화면 윈도우의 가로 위치를 설정합니다.
기본값은 auto입니다.
Set the initial window horizontal position.
Default is "auto".
--window-y value
화면 윈도우의 세로 위치를 설정합니다.
기본값은 auto입니다.
Set the initial window vertical position.
Default is "auto".
--window-width value
화면 윈도우의 가로 크기를 설정합니다.
기본값은 0(자동)입니다.
Set the initial window width.
Default is 0 (automatic).
--window-height value
화면 윈도우의 세로 크기를 설정합니다.
기본값은 0(자동)입니다.
Set the initial window width.
Default is 0 (automatic).
단축키:
Ctrl+f
전체화면으로 전환합니다.
Switch fullscreen mode
Ctrl+Left
화면을 왼쪽으로 회전합니다.
Rotate display left
Ctrl+Right
화면을 오른쪽으로 회전합니다.
Rotate display right
Ctrl+g
화면 윈도우 크기를 실제 스마트폰의 화면 크기로 설정합니다. (pixel-perfect)
Resize window to 1:1 (pixel-perfect)
Ctrl+x
검은 레터박스 더블클릭
검은 레터박스가 표시되지 않도록 화면 윈도우를 크기 조정합니다.
Resize window to remove black borders
Ctrl+h
가운데 마우스 클릭
HOME 버튼을 누릅니다.
Click on HOME
Ctrl+b
Ctrl+Backspace
오른쪽 마우스 클릭 (화면이 켜져있을 때)
BACK 버튼을 누릅니다.
Click on BACK
Ctrl+s
APP_SWITCH 버튼을 누릅니다.
Click on APP_SWITCH
Ctrl+m
MENU 버튼을 누릅니다.
Click on MENU
Ctrl+Up
VOLUME_UP 버튼을 누릅니다.
Click on VOLUME_UP
Ctrl+Down
VOLUME_DOWN 버튼을 누릅니다.
Click on VOLUME_DOWN
Ctrl+p
POWER 버튼을 누릅니다. (화면을 끄거나 켭니다)
Click on POWER (turn screen on/off)
오른쪽 마우스 클릭 (화면이 꺼져있을 때)
전원 켜기
Power on
Ctrl+o
스마트폰의 화면을 끕니다. 스마트폰의 화면은 PC에 그대로 송출됩니다.
Turn device screen off (keep mirroring)
Ctrl+Shift+o
스마트폰의 화면을 켭니다.
Turn device screen on
Ctrl+r
스마트폰의 화면을 회전합니다.
Rotate device screen
Ctrl+n
알림 패널을 엽니다.
Expand notification panel
Ctrl+Shift+n
알림 패널을 닫습니다.
Collapse notification panel
Ctrl+c
스마트폰의 클립보드 내용을 컴퓨터로 복사합니다.
Copy device clipboard to computer
Ctrl+v
컴퓨터의 클립보드 내용을 스마트폰에 붙여넣습니다.
Paste computer clipboard to device
Ctrl+Shift+v
컴퓨터의 클립보드 내용을 스마트폰에 복사하고, 만약 스마트폰의 Android 버전이 7보다 높다면 해당 클립보드의 내용을 스마트폰에 붙여넣습니다.
Copy computer clipboard to device (and paste if the device
runs Android >= 7)
Ctrl+i
FPS 카운터를 활성화/비활성화 합니다.
Enable/disable FPS counter (print frames/second in logs)
APK 파일 드래그 & 드롭
APK 파일을 스마트폰에 설치합니다.
추천하는 사용법은 scrcpy-noconsole.exe -Sw
입니다. 이렇게 하면 스마트폰의 화면은 꺼져있지만 스마트폰의 화면은 PC에 정상적으로 송출되며, 스마트폰이 잠기지 않게 됩니다.