# screen-mirror **Repository Path**: zooy/screen-mirror ## Basic Information - **Project Name**: screen-mirror - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-20 - **Last Updated**: 2026-06-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 海豚投屏 - DLNA 屏幕投屏 一个基于 Tauri 2 + Vue 3 的屏幕镜像应用,通过 DLNA 协议自动发现并投屏到小米电视。 ## 功能 - 屏幕实时采集 - JPEG 编码 - DLNA/UPnP 自动发现局域网内的电视 - MJPEG HTTP 流服务器 - 一键投屏到小米电视 ## 使用方法 1. 确保电脑和小米电视连接到同一 WiFi 网络 2. 启动应用:`pnpm tauri dev` 3. 点击"扫描电视"按钮 4. 从列表中选择你的小米电视 5. 点击"投屏"按钮 ## 技术栈 - **前端**: Vue 3 + TypeScript + Vite - **后端**: Rust + Tauri 2 - **屏幕采集**: CoreGraphics (macOS) - **图像编码**: JPEG (image crate) - **设备发现**: rupnp (UPnP/DLNA SSDP) - **视频流**: MJPEG over HTTP (axum) ## 项目结构 ``` screen-mirror/ ├── src/ # 前端源代码 │ ├── components/ │ │ ├── ScreenPreview.vue # 本地屏幕预览 │ │ ├── DlnaPanel.vue # DLNA 投屏控制 │ │ └── ControlPanel.vue # 广播控制 │ └── App.vue ├── src-tauri/ # 后端源代码 │ └── src/ │ ├── capture/ # 屏幕采集模块 (CoreGraphics) │ ├── dlna/ # DLNA 设备发现和控制 │ ├── encoder/ # JPEG 编码模块 │ └── stream/ # MJPEG HTTP 流服务器 └── package.json ``` ## Tauri 命令 | 命令 | 说明 | |------|------| | `capture_screen` | 截屏并返回 base64 PNG | | `get_monitor_info` | 获取显示器分辨率 | | `discover_tvs` | 扫描局域网内的 DLNA 电视 | | `start_stream` | 启动 MJPEG 流服务器 | | `stop_stream` | 停止 MJPEG 流服务器 | | `cast_to_tv` | 投屏到指定电视 | | `stop_cast` | 停止投屏 | ## 注意事项 - 首次运行需要授予屏幕录制权限(macOS) - 小米电视需要开启 DLNA 功能(默认开启) - 如果扫描不到电视,请检查: - 电视是否已开机 - 电脑和电视是否在同一网络 - 路由器是否开启了 AP 隔离(需关闭) ## License MIT