mirror of
https://github.com/Genymobile/scrcpy
synced 2024-12-28 02:02:17 +00:00
42b3d1e66e
PR #2311 <https://github.com/Genymobile/scrcpy/pull/2311> Signed-off-by: Romain Vimont <rom@rom1v.com>
499 lines
16 KiB
Markdown
499 lines
16 KiB
Markdown
_Only the original [README](README.md) is guaranteed to be up-to-date._
|
||
|
||
# scrcpy (v1.11)
|
||
|
||
This document will be updated frequently along with the original Readme file
|
||
이 문서는 원어 리드미 파일의 업데이트에 따라 종종 업데이트 될 것입니다
|
||
|
||
이 어플리케이션은 UBS ( 혹은 [TCP/IP][article-tcpip] ) 로 연결된 Android 디바이스를 화면에 보여주고 관리하는 것을 제공합니다.
|
||
_GNU/Linux_, _Windows_ 와 _macOS_ 상에서 작동합니다.
|
||
(아래 설명에서 디바이스는 안드로이드 핸드폰을 의미합니다.)
|
||
|
||
[article-tcpip]:https://www.genymotion.com/blog/open-source-project-scrcpy-now-works-wirelessly/
|
||
|
||
![screenshot](https://github.com/Genymobile/scrcpy/blob/master/assets/screenshot-debian-600.jpg?raw=true)
|
||
|
||
주요 기능은 다음과 같습니다.
|
||
|
||
- **가벼움** (기본적이며 디바이스의 화면만을 보여줌)
|
||
- **뛰어난 성능** (30~60fps)
|
||
- **높은 품질** (1920×1080 이상의 해상도)
|
||
- **빠른 반응 속도** ([35~70ms][lowlatency])
|
||
- **짧은 부팅 시간** (첫 사진을 보여주는데 최대 1초 소요됨)
|
||
- **장치 설치와는 무관함** (디바이스에 설치하지 않아도 됨)
|
||
|
||
[lowlatency]: https://github.com/Genymobile/scrcpy/pull/646
|
||
|
||
|
||
## 요구사항
|
||
|
||
안드로이드 장치는 최소 API 21 (Android 5.0) 을 필요로 합니다.
|
||
|
||
디바이스에 [adb debugging][enable-adb]이 가능한지 확인하십시오.
|
||
|
||
[enable-adb]: https://developer.android.com/studio/command-line/adb.html#Enabling
|
||
|
||
어떤 디바이스에서는, 키보드와 마우스를 사용하기 위해서 [추가 옵션][control] 이 필요하기도 합니다.
|
||
|
||
[control]: https://github.com/Genymobile/scrcpy/issues/70#issuecomment-373286323
|
||
|
||
|
||
## 앱 설치하기
|
||
|
||
|
||
### Linux (리눅스)
|
||
|
||
리눅스 상에서는 보통 [어플을 직접 설치][BUILD] 해야합니다. 어렵지 않으므로 걱정하지 않아도 됩니다.
|
||
|
||
[BUILD]:https://github.com/Genymobile/scrcpy/blob/master/BUILD.md
|
||
|
||
[Snap] 패키지가 가능합니다 : [`scrcpy`][snap-link].
|
||
|
||
[snap-link]: https://snapstats.org/snaps/scrcpy
|
||
|
||
[snap]: https://en.wikipedia.org/wiki/Snappy_(package_manager)
|
||
|
||
Arch Linux에서, [AUR] 패키지가 가능합니다 : [`scrcpy`][aur-link].
|
||
|
||
[AUR]: https://wiki.archlinux.org/index.php/Arch_User_Repository
|
||
[aur-link]: https://aur.archlinux.org/packages/scrcpy/
|
||
|
||
Gentoo에서 ,[Ebuild] 가 가능합니다 : [`scrcpy/`][ebuild-link].
|
||
|
||
[Ebuild]: https://wiki.gentoo.org/wiki/Ebuild
|
||
[ebuild-link]: https://github.com/maggu2810/maggu2810-overlay/tree/master/app-mobilephone/scrcpy
|
||
|
||
|
||
### Windows (윈도우)
|
||
|
||
윈도우 상에서, 간단하게 설치하기 위해 종속성이 있는 사전 구축된 아카이브가 제공됩니다 (`adb` 포함) :
|
||
해당 파일은 Readme원본 링크를 통해서 다운로드가 가능합니다.
|
||
- [README](README.md#windows)
|
||
|
||
|
||
[어플을 직접 설치][BUILD] 할 수도 있습니다.
|
||
|
||
|
||
### macOS (맥 OS)
|
||
|
||
이 어플리케이션은 아래 사항을 따라 설치한다면 [Homebrew] 에서도 사용 가능합니다 :
|
||
|
||
[Homebrew]: https://brew.sh/
|
||
|
||
```bash
|
||
brew install scrcpy
|
||
```
|
||
|
||
`PATH` 로부터 접근 가능한 `adb` 가 필요합니다. 아직 설치하지 않았다면 다음을 따라 설치해야 합니다 :
|
||
|
||
```bash
|
||
brew cask install android-platform-tools
|
||
```
|
||
|
||
[어플을 직접 설치][BUILD] 할 수도 있습니다.
|
||
|
||
|
||
## 실행
|
||
|
||
안드로이드 디바이스를 연결하고 실행하십시오:
|
||
|
||
```bash
|
||
scrcpy
|
||
```
|
||
|
||
다음과 같이 명령창 옵션 기능도 제공합니다.
|
||
|
||
```bash
|
||
scrcpy --help
|
||
```
|
||
|
||
## 기능
|
||
|
||
### 캡쳐 환경 설정
|
||
|
||
|
||
### 사이즈 재정의
|
||
|
||
가끔씩 성능을 향상시키기위해 안드로이드 디바이스를 낮은 해상도에서 미러링하는 것이 유용할 때도 있습니다.
|
||
|
||
너비와 높이를 제한하기 위해 특정 값으로 지정할 수 있습니다 (e.g. 1024) :
|
||
|
||
```bash
|
||
scrcpy --max-size 1024
|
||
scrcpy -m 1024 # 축약 버전
|
||
```
|
||
|
||
이 외의 크기도 디바이스의 가로 세로 비율이 유지된 상태에서 계산됩니다.
|
||
이러한 방식으로 디바이스 상에서 1920×1080 는 모니터 상에서1024×576로 미러링될 것 입니다.
|
||
|
||
|
||
### bit-rate 변경
|
||
|
||
기본 bit-rate 는 8 Mbps입니다. 비디오 bit-rate 를 변경하기 위해선 다음과 같이 입력하십시오 (e.g. 2 Mbps로 변경):
|
||
|
||
```bash
|
||
scrcpy --bit-rate 2M
|
||
scrcpy -b 2M # 축약 버전
|
||
```
|
||
|
||
### 프레임 비율 제한
|
||
|
||
안드로이드 버전 10이상의 디바이스에서는, 다음의 명령어로 캡쳐 화면의 프레임 비율을 제한할 수 있습니다:
|
||
|
||
```bash
|
||
scrcpy --max-fps 15
|
||
```
|
||
|
||
|
||
### Crop (잘라내기)
|
||
|
||
디바이스 화면은 화면의 일부만 미러링하기 위해 잘라질 것입니다.
|
||
|
||
예를 들어, *Oculus Go* 의 한 쪽 눈만 미러링할 때 유용합니다 :
|
||
|
||
```bash
|
||
scrcpy --crop 1224:1440:0:0 # 1224x1440 at offset (0,0)
|
||
scrcpy -c 1224:1440:0:0 # 축약 버전
|
||
```
|
||
|
||
만약 `--max-size` 도 지정하는 경우, 잘라낸 다음에 재정의된 크기가 적용될 것입니다.
|
||
|
||
|
||
### 화면 녹화
|
||
|
||
미러링하는 동안 화면 녹화를 할 수 있습니다 :
|
||
|
||
```bash
|
||
scrcpy --record file.mp4
|
||
scrcpy -r file.mkv
|
||
```
|
||
|
||
녹화하는 동안 미러링을 멈출 수 있습니다 :
|
||
|
||
```bash
|
||
scrcpy --no-display --record file.mp4
|
||
scrcpy -Nr file.mkv
|
||
# Ctrl+C 로 녹화를 중단할 수 있습니다.
|
||
# 윈도우 상에서 Ctrl+C 는 정상정으로 종료되지 않을 수 있으므로, 디바이스 연결을 해제하십시오.
|
||
```
|
||
|
||
"skipped frames" 은 모니터 화면에 보여지지 않았지만 녹화되었습니다 ( 성능 문제로 인해 ). 프레임은 디바이스 상에서 _타임 스탬프 ( 어느 시점에 데이터가 존재했다는 사실을 증명하기 위해 특정 위치에 시각을 표시 )_ 되었으므로, [packet delay
|
||
variation] 은 녹화된 파일에 영향을 끼치지 않습니다.
|
||
|
||
[packet delay variation]: https://en.wikipedia.org/wiki/Packet_delay_variation
|
||
|
||
## 연결
|
||
|
||
### 무선연결
|
||
|
||
_Scrcpy_ 장치와 정보를 주고받기 위해 `adb` 를 사용합니다. `adb` 는 TCIP/IP 를 통해 디바이스와 [연결][connect] 할 수 있습니다 :
|
||
|
||
1. 컴퓨터와 디바이스를 동일한 Wi-Fi 에 연결합니다.
|
||
2. 디바이스의 IP address 를 확인합니다 (설정 → 내 기기 → 상태 / 혹은 인터넷에 '내 IP'검색 시 확인 가능합니다. ).
|
||
3. TCP/IP 를 통해 디바이스에서 adb 를 사용할 수 있게 합니다: `adb tcpip 5555`.
|
||
4. 디바이스 연결을 해제합니다.
|
||
5. adb 를 통해 디바이스에 연결을 합니다\: `adb connect DEVICE_IP:5555` _(`DEVICE_IP` 대신)_.
|
||
6. `scrcpy` 실행합니다.
|
||
|
||
다음은 bit-rate 와 해상도를 줄이는데 유용합니다 :
|
||
|
||
```bash
|
||
scrcpy --bit-rate 2M --max-size 800
|
||
scrcpy -b2M -m800 # 축약 버전
|
||
```
|
||
|
||
[connect]: https://developer.android.com/studio/command-line/adb.html#wireless
|
||
|
||
|
||
|
||
### 여러 디바이스 사용 가능
|
||
|
||
만약에 여러 디바이스들이 `adb devices` 목록에 표시되었다면, _serial_ 을 명시해야합니다:
|
||
|
||
```bash
|
||
scrcpy --serial 0123456789abcdef
|
||
scrcpy -s 0123456789abcdef # 축약 버전
|
||
```
|
||
|
||
_scrcpy_ 로 여러 디바이스를 연결해 사용할 수 있습니다.
|
||
|
||
|
||
#### SSH tunnel
|
||
|
||
떨어져 있는 디바이스와 연결하기 위해서는, 로컬 `adb` client와 떨어져 있는 `adb` 서버를 연결해야 합니다. (디바이스와 클라이언트가 동일한 버전의 _adb_ protocol을 사용할 경우에 제공됩니다.):
|
||
|
||
```bash
|
||
adb kill-server # 5037의 로컬 local adb server를 중단
|
||
ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer
|
||
# 실행 유지
|
||
```
|
||
|
||
다른 터미널에서는 :
|
||
|
||
```bash
|
||
scrcpy
|
||
```
|
||
|
||
무선 연결과 동일하게, 화질을 줄이는 것이 나을 수 있습니다:
|
||
|
||
```
|
||
scrcpy -b2M -m800 --max-fps 15
|
||
```
|
||
|
||
## Window에서의 배치
|
||
|
||
### 맞춤형 window 제목
|
||
|
||
기본적으로, window의 이름은 디바이스의 모델명 입니다.
|
||
다음의 명령어를 통해 변경하세요.
|
||
|
||
```bash
|
||
scrcpy --window-title 'My device'
|
||
```
|
||
|
||
|
||
### 배치와 크기
|
||
|
||
초기 window창의 배치와 크기는 다음과 같이 설정할 수 있습니다:
|
||
|
||
```bash
|
||
scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600
|
||
```
|
||
|
||
|
||
### 경계 없애기
|
||
|
||
윈도우 장식(경계선 등)을 다음과 같이 제거할 수 있습니다:
|
||
|
||
```bash
|
||
scrcpy --window-borderless
|
||
```
|
||
|
||
### 항상 모든 윈도우 위에 실행창 고정
|
||
|
||
이 어플리케이션의 윈도우 창은 다음의 명령어로 다른 window 위에 디스플레이 할 수 있습니다:
|
||
|
||
```bash
|
||
scrcpy --always-on-top
|
||
scrcpy -T # 축약 버전
|
||
```
|
||
|
||
### 전체 화면
|
||
|
||
이 어플리케이션은 전체화면으로 바로 시작할 수 있습니다.
|
||
|
||
```bash
|
||
scrcpy --fullscreen
|
||
scrcpy -f # short version
|
||
```
|
||
|
||
전체 화면은 `Ctrl`+`f`키로 끄거나 켤 수 있습니다.
|
||
|
||
|
||
## 다른 미러링 옵션
|
||
|
||
### 읽기 전용(Read-only)
|
||
|
||
권한을 제한하기 위해서는 (디바이스와 관련된 모든 것: 입력 키, 마우스 이벤트 , 파일의 드래그 앤 드랍(drag&drop)):
|
||
|
||
```bash
|
||
scrcpy --no-control
|
||
scrcpy -n
|
||
```
|
||
|
||
### 화면 끄기
|
||
|
||
미러링을 실행하는 와중에 디바이스의 화면을 끌 수 있게 하기 위해서는
|
||
다음의 커맨드 라인 옵션을(command line option) 입력하세요:
|
||
|
||
```bash
|
||
scrcpy --turn-screen-off
|
||
scrcpy -S
|
||
```
|
||
|
||
혹은 `Ctrl`+`o`을 눌러 언제든지 디바이스의 화면을 끌 수 있습니다.
|
||
|
||
다시 화면을 켜기 위해서는`POWER` (혹은 `Ctrl`+`p`)를 누르세요.
|
||
|
||
|
||
### 유효기간이 지난 프레임 제공 (Render expired frames)
|
||
|
||
디폴트로, 대기시간을 최소화하기 위해 _scrcpy_ 는 항상 마지막으로 디코딩된 프레임을 제공합니다
|
||
과거의 프레임은 하나씩 삭제합니다.
|
||
|
||
모든 프레임을 강제로 렌더링하기 위해서는 (대기 시간이 증가될 수 있습니다)
|
||
다음의 명령어를 사용하세요:
|
||
|
||
```bash
|
||
scrcpy --render-expired-frames
|
||
```
|
||
|
||
|
||
### 화면에 터치 나타내기
|
||
|
||
발표를 할 때, 물리적인 기기에 한 물리적 터치를 나타내는 것이 유용할 수 있습니다.
|
||
|
||
안드로이드 운영체제는 이런 기능을 _Developers options_에서 제공합니다.
|
||
|
||
_Scrcpy_ 는 이런 기능을 시작할 때와 종료할 때 옵션으로 제공합니다.
|
||
|
||
```bash
|
||
scrcpy --show-touches
|
||
scrcpy -t
|
||
```
|
||
|
||
화면에 _물리적인 터치만_ 나타나는 것에 유의하세요 (손가락을 디바이스에 대는 행위).
|
||
|
||
|
||
### 입력 제어
|
||
|
||
#### 복사-붙여넣기
|
||
|
||
컴퓨터와 디바이스 양방향으로 클립보드를 복사하는 것이 가능합니다:
|
||
|
||
- `Ctrl`+`c` 디바이스의 클립보드를 컴퓨터로 복사합니다;
|
||
- `Ctrl`+`Shift`+`v` 컴퓨터의 클립보드를 디바이스로 복사합니다;
|
||
- `Ctrl`+`v` 컴퓨터의 클립보드를 text event 로써 _붙여넣습니다_ ( 그러나, ASCII 코드가 아닌 경우 실행되지 않습니다 )
|
||
|
||
#### 텍스트 삽입 우선 순위
|
||
|
||
텍스트를 입력할 때 생성되는 두 가지의 [events][textevents] 가 있습니다:
|
||
- _key events_, 키가 눌려있는 지에 대한 신호;
|
||
- _text events_, 텍스트가 입력되었는지에 대한 신호.
|
||
|
||
기본적으로, 글자들은 key event 를 이용해 입력되기 때문에, 키보드는 게임에서처럼 처리합니다 ( 보통 WASD 키에 대해서 ).
|
||
|
||
그러나 이는 [issues 를 발생][prefertext]시킵니다. 이와 관련된 문제를 접할 경우, 아래와 같이 피할 수 있습니다:
|
||
|
||
```bash
|
||
scrcpy --prefer-text
|
||
```
|
||
|
||
( 그러나 이는 게임에서의 처리를 중단할 수 있습니다 )
|
||
|
||
[textevents]: https://blog.rom1v.com/2018/03/introducing-scrcpy/#handle-text-input
|
||
[prefertext]: https://github.com/Genymobile/scrcpy/issues/650#issuecomment-512945343
|
||
|
||
|
||
### 파일 드랍
|
||
|
||
### APK 실행하기
|
||
|
||
APK를 실행하기 위해서는, APK file(파일명이`.apk`로 끝나는 파일)을 드래그하고 _scrcpy_ window에 드랍하세요 (drag and drop)
|
||
|
||
시각적인 피드백은 없고,log 하나가 콘솔에 출력될 것입니다.
|
||
|
||
### 디바이스에 파일 push하기
|
||
|
||
디바이스의`/sdcard/`에 파일을 push하기 위해서는,
|
||
APK파일이 아닌 파일을_scrcpy_ window에 드래그하고 드랍하세요.(drag and drop).
|
||
|
||
시각적인 피드백은 없고,log 하나가 콘솔에 출력될 것입니다.
|
||
|
||
해당 디렉토리는 시작할 때 변경이 가능합니다:
|
||
|
||
```bash
|
||
scrcpy --push-target /sdcard/foo/bar/
|
||
```
|
||
|
||
### 오디오의 전달
|
||
|
||
_scrcpy_는 오디오를 직접 전달해주지 않습니다. [USBaudio] (Linux-only)를 사용하세요.
|
||
|
||
추가적으로 [issue #14]를 참고하세요.
|
||
|
||
[USBaudio]: https://github.com/rom1v/usbaudio
|
||
[issue #14]: https://github.com/Genymobile/scrcpy/issues/14
|
||
|
||
## 단축키
|
||
|
||
| 실행내용 | 단축키 | 단축키 (macOS)
|
||
| -------------------------------------- |:----------------------------- |:-----------------------------
|
||
| 전체화면 모드로 전환 | `Ctrl`+`f` | `Cmd`+`f`
|
||
| window를 1:1비율로 전환하기(픽셀 맞춤) | `Ctrl`+`g` | `Cmd`+`g`
|
||
| 검은 공백 제거 위한 window 크기 조정 | `Ctrl`+`x` \| _Double-click¹_ | `Cmd`+`x` \| _Double-click¹_
|
||
|`HOME` 클릭 | `Ctrl`+`h` \| _Middle-click_ | `Ctrl`+`h` \| _Middle-click_
|
||
| `BACK` 클릭 | `Ctrl`+`b` \| _Right-click²_ | `Cmd`+`b` \| _Right-click²_
|
||
| `APP_SWITCH` 클릭 | `Ctrl`+`s` | `Cmd`+`s`
|
||
| `MENU` 클릭 | `Ctrl`+`m` | `Ctrl`+`m`
|
||
| `VOLUME_UP` 클릭 | `Ctrl`+`↑` _(up)_ | `Cmd`+`↑` _(up)_
|
||
| `VOLUME_DOWN` 클릭 | `Ctrl`+`↓` _(down)_ | `Cmd`+`↓` _(down)_
|
||
| `POWER` 클릭 | `Ctrl`+`p` | `Cmd`+`p`
|
||
| 전원 켜기 | _Right-click²_ | _Right-click²_
|
||
| 미러링 중 디바이스 화면 끄기 | `Ctrl`+`o` | `Cmd`+`o`
|
||
| 알림 패널 늘리기 | `Ctrl`+`n` | `Cmd`+`n`
|
||
| 알림 패널 닫기 | `Ctrl`+`Shift`+`n` | `Cmd`+`Shift`+`n`
|
||
| 디바이스의 clipboard 컴퓨터로 복사하기 | `Ctrl`+`c` | `Cmd`+`c`
|
||
| 컴퓨터의 clipboard 디바이스에 붙여넣기 | `Ctrl`+`v` | `Cmd`+`v`
|
||
| Copy computer clipboard to device | `Ctrl`+`Shift`+`v` | `Cmd`+`Shift`+`v`
|
||
| Enable/disable FPS counter (on stdout) | `Ctrl`+`i` | `Cmd`+`i`
|
||
|
||
_¹검은 공백을 제거하기 위해서는 그 부분을 더블 클릭하세요_
|
||
_²화면이 꺼진 상태에서 우클릭 시 다시 켜지며, 그 외의 상태에서는 뒤로 돌아갑니다.
|
||
|
||
## 맞춤 경로 (custom path)
|
||
|
||
특정한 _adb_ binary를 사용하기 위해서는, 그것의 경로를 환경변수로 설정하세요.
|
||
`ADB`:
|
||
|
||
ADB=/path/to/adb scrcpy
|
||
|
||
`scrcpy-server.jar`파일의 경로에 오버라이드 하기 위해서는, 그것의 경로를 `SCRCPY_SERVER_PATH`에 저장하세요.
|
||
|
||
[useful]: https://github.com/Genymobile/scrcpy/issues/278#issuecomment-429330345
|
||
|
||
|
||
## _scrcpy_ 인 이유?
|
||
|
||
한 동료가 [gnirehtet]와 같이 발음하기 어려운 이름을 찾을 수 있는지 도발했습니다.
|
||
|
||
[`strcpy`] 는 **str**ing을 copy하고; `scrcpy`는 **scr**een을 copy합니다.
|
||
|
||
[gnirehtet]: https://github.com/Genymobile/gnirehtet
|
||
[`strcpy`]: http://man7.org/linux/man-pages/man3/strcpy.3.html
|
||
|
||
|
||
|
||
## 빌드하는 방법?
|
||
|
||
[BUILD]을 참고하세요.
|
||
|
||
[BUILD]: BUILD.md
|
||
|
||
## 흔한 issue
|
||
|
||
[FAQ](FAQ.md)을 참고하세요.
|
||
|
||
|
||
## 개발자들
|
||
|
||
[developers page]를 참고하세요.
|
||
|
||
[developers page]: DEVELOP.md
|
||
|
||
|
||
## 라이선스
|
||
|
||
Copyright (C) 2018 Genymobile
|
||
Copyright (C) 2018-2021 Romain Vimont
|
||
|
||
Licensed under the Apache License, Version 2.0 (the "License");
|
||
you may not use this file except in compliance with the License.
|
||
You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
|
||
## 관련 글 (articles)
|
||
|
||
- [scrcpy 소개][article-intro]
|
||
- [무선으로 연결하는 Scrcpy][article-tcpip]
|
||
|
||
[article-intro]: https://blog.rom1v.com/2018/03/introducing-scrcpy/
|
||
[article-tcpip]: https://www.genymotion.com/blog/open-source-project-scrcpy-now-works-wirelessly/
|