QianheYu eda8f7d927 feat: ADP协议对接修正 + 多显示器支持 + 屏幕采集实现 + 流式管道
- ADP 协议修复: codecs 字段名匹配 Android 端,protocol_version 解析为字符串
- mDNS 发现: 返回结构化 DeviceInfo(设备名/地址/分辨率/TXT记录)
- 屏幕采集: macOS CGDisplay + Windows captrs 实现(Linux 仍为 xrandr 分辨率检测 stub)
- 新增 display 模块: 跨平台显示器枚举(list_displays),支持多显示器选择
- 流式管道: start_streaming 实现 capture→encode→send 完整链路,支持 display_index 参数
- 前端: disconnect 调用 backend,设备列表/连接面板展示名称与分辨率
- Encoder: 添加 bitrate() getter
- get_display_resolution: 改为查询实际显示器分辨率
2026-05-30 22:04:06 +08:00

AirDisplay Client

Cross-platform desktop screen mirroring client for AirDisplay Android app.

Overview

AirDisplay Client streams your PC screen to an Android device using the AirDisplay Protocol (ADP), a lightweight custom protocol over TCP. It supports Windows, macOS, and Linux.

Architecture

┌─────────────────────┐       ADP (TCP:7935)       ┌──────────────────┐
│  AirDisplay Client  │ ──────────────────────────► │  AirDisplay App  │
│  (Desktop: Rust+   │   mDNS discovery            │  (Android)       │
│   Tauri+React)     │ ◄────────────────────────── │                  │
└─────────────────────┘                             └──────────────────┘

Technology Stack

Layer Technology
Desktop Framework Tauri v2 (Rust)
Frontend UI React + TypeScript + Vite
Screen Capture DXGI (Win) / CGDisplay (macOS) / PipeWire (Linux)
Video Encoding x264 software (ffmpeg-next) / HW encoders (NVENC, QSV, VideoToolbox)
Protocol ADP v1 (8-byte frame header + H.264 NAL over TCP)
Discovery mDNS (_airdisplay._tcp) via mdns-sd

Build

Prerequisites

  • Rust 1.75+
  • Node.js 18+
  • Platform-specific system deps (see Tauri docs)

Build Steps

# Install dependencies
npm install

# Development mode
npm run tauri dev

# Production build
npm run tauri build

Protocol Support

Protocol Status Description
ADP v1 Planned Custom lightweight frame protocol
Miracast Not supported Use Android app's built-in Miracast support
AirPlay Not supported Use macOS native screen mirroring to Android

License

MIT

Description
Cross-platform desktop client for AirDisplay (ADP protocol, Rust+Tauri)
Readme 94 KiB
Languages
Rust 64.5%
Shell 16.8%
TypeScript 12.5%
CSS 5.8%
HTML 0.4%