---
title: "scrcpy 4.0 공개, SDL3 전환하고 가상 디스플레이·카메라 제어 확장"
published: 2026-05-12T20:50:02.000Z
canonical: https://jeff.news/article/2670
---
# scrcpy 4.0 공개, SDL3 전환하고 가상 디스플레이·카메라 제어 확장

안드로이드 화면 미러링 도구 scrcpy가 4.0으로 올라가면서 SDL2에서 SDL3로 전환했다. 이번 릴리스는 동적 크기 조절이 가능한 flex display, 카메라 플래시와 줌 제어, 창 비율 고정, 연결 끊김 표시, Meta Quest 깜빡임 수정 등 실제 사용감 개선이 많다. FFmpeg, adb, SDL 같은 핵심 의존성도 함께 업데이트됐다.

- scrcpy 4.0의 큰 축은 SDL2에서 SDL3로 갈아탄 것임
  - SDL3는 현재 유지보수와 버그 수정이 활발하고, scrcpy가 앞으로 기대기 좋은 기반이 됨
  - 덕분에 창 크기를 조절할 때 콘텐츠 비율을 유지하는 기능도 자연스럽게 들어옴
  - 예전처럼 창은 마음대로 늘어나고 남는 부분에 검은 테두리가 생기는 방식은 `--no-window-aspect-ratio-lock`으로 되돌릴 수 있음

- 가상 디스플레이 쪽은 꽤 실용적으로 좋아짐
  - `--flex-display` 또는 `-x`를 쓰면 새 가상 디스플레이가 클라이언트 창 크기에 맞춰 동적으로 리사이즈됨
  - 예시 명령은 `scrcpy --new-display=/192 -x --start-app=org.mozilla.firefox --keep-active --no-vd-system-decorations` 형태
  - 큰 창에서도 화질을 유지하려면 `--video-codec=h265 -b16M`처럼 코덱과 비트레이트를 조정하는 사용법도 제시됨

> [!TIP]
> 안드로이드 앱을 데스크톱 창 크기에 맞춰 테스트하는 사람이라면 `--flex-display`가 이번 릴리스에서 제일 먼저 볼 기능임. 창 크기 변화에 맞춰 가상 디스플레이 자체가 따라 움직이는 게 핵심임.

- 카메라 미러링도 이제 손맛이 붙음
  - `MOD+t`로 카메라 플래시를 켜고, `MOD+Shift+t`로 끌 수 있음
  - `MOD+↑`, `MOD+↓`로 줌 인·아웃도 가능함
  - 시작할 때부터 켜려면 `--camera-torch`, 줌 배율을 지정하려면 `--camera-zoom=1.5` 같은 옵션을 쓰면 됨
  - 카메라별 지원 줌 범위는 `--list-cameras`에서 확인하고, 범위를 벗어나면 자동으로 보정됨

- `--keep-active`는 은근히 중요한 옵션임
  - 기기가 비활성 상태로 판단돼 화면이 꺼지는 걸 막기 위해 주기적으로 사용자 활동 신호를 보냄
  - `--stay-awake`나 `--screen-off-timeout`처럼 전역 설정을 바꾸지 않음
  - 충전 중이 아니어도 동작하는 게 차이점임

- 연결이 끊겼을 때 바로 창이 닫히던 동작도 바뀜
  - 예전에는 미러링 중 연결이 끊기면 창이 즉시 닫혀서 scrcpy가 크래시난 것처럼 보일 수 있었음
  - 이제는 연결 끊김 아이콘을 2초 동안 보여준 뒤 닫음
  - 작은 변화지만 현장에서 디버깅할 때 “앱이 죽었나, 케이블이 빠졌나”를 구분하는 데 도움이 됨

- 성능 버그 중에서는 OPUS 무음 처리 이슈가 재밌음
  - OPUS 오디오 스트림에서 디코딩된 무음이 정확한 0이 아니라 아주 작은 비정규 숫자라서 리샘플링이 약 40배 느려졌다고 함
  - 그래서 조용한 오디오를 재생할 때 오히려 CPU를 더 많이 쓰는 이상한 상황이 생김
  - 이 문제는 FFmpeg 쪽에서 직접 수정됨

> [!IMPORTANT]
> “무음이 비무음보다 CPU를 더 먹는다”는 버그는 단순 최적화 문제가 아니라 숫자 표현의 함정임. 실시간 미러링 도구에서는 이런 작은 오디오 처리 비용도 배터리와 발열로 바로 튄다.

- Meta Quest 사용자에게도 반가운 수정이 있음
  - Quest 펌웨어 업데이트 이후 scrcpy 미러링에서 깜빡임이 발생했는데, 이번 릴리스에서 우회책이 들어감
  - 물리 크기와 논리 크기를 혼동하던 문제, 정사각형 디스플레이 회전, 가상 디스플레이 정렬 같은 화면 관련 버그도 같이 다듬어짐

- 의존성도 최신 쪽으로 올라감
  - platform-tools, 즉 adb는 37.0.0으로 업데이트됨
  - FFmpeg는 8.1.1, SDL은 3.4.8, dav1d는 1.5.3으로 올라감
  - Windows 콘솔 코드 페이지를 UTF-8로 설정하고, 공백이 들어간 기기 시리얼 처리, mDNS로 제공되는 TCP 기기 탐지도 수정됨

---
## 기술 맥락

- scrcpy가 SDL3로 옮긴 건 단순 라이브러리 버전업이 아니에요. 화면 미러링 도구는 창 크기, 입력 이벤트, 렌더링 타이밍이 전부 사용자 경험으로 이어지는데, SDL3가 제공하는 새 창 제어 API를 쓰면 이런 부분을 운영체제별로 덜 힘들게 맞출 수 있거든요.

- flex display가 중요한 이유는 “보이는 창만 늘리는 것”과 “안드로이드 쪽 가상 디스플레이 크기 자체를 바꾸는 것”이 다르기 때문이에요. 후자는 앱이 실제로 다른 화면 크기에서 실행되는 것처럼 테스트할 수 있어서, 반응형 UI나 태블릿 레이아웃 확인에 더 쓸모가 있어요.

- `--keep-active`도 방향이 좋아요. 전역 설정을 바꾸는 방식은 테스트 후 원복을 까먹기 쉽고, 기기 상태를 지저분하게 만들 수 있어요. 사용자 활동 신호를 주기적으로 보내는 방식은 scrcpy 세션 안에서만 문제를 해결하니까 도구답게 깔끔해요.

- OPUS 무음 CPU 버그는 실시간 도구에서 하위 라이브러리 품질이 왜 중요한지 보여줘요. 화면 전송, 오디오 디코딩, 리샘플링, 렌더링이 동시에 돌기 때문에 한 단계에서 40배 느린 경로를 타면 전체 체감이 바로 흔들릴 수 있어요.

## 핵심 포인트

- scrcpy 4.0은 SDL3로 마이그레이션해 창 비율 고정 같은 새 기능을 확보함
- 가상 디스플레이를 클라이언트 창 크기에 맞춰 동적으로 조절하는 flex display가 추가됨
- 카메라 소스 사용 시 플래시와 줌을 단축키나 옵션으로 제어할 수 있음
- OPUS 무음 디코딩 때 CPU가 과하게 쓰이던 버그를 FFmpeg 쪽에서 수정함

## 인사이트

scrcpy는 개발자·QA·안드로이드 파워유저가 매일 쓰는 도구라 작은 UX 개선도 체감이 크다. 4.0은 화려한 신기능 하나보다 창 크기, 연결 종료, 무음 CPU 사용량처럼 ‘매일 거슬리던 부분’을 많이 다듬은 릴리스다.
