# ndi屏幕推送 **Repository Path**: BlueBuger/ndi-screen-push ## Basic Information - **Project Name**: ndi屏幕推送 - **Description**: 项目采用rust开发,实现 屏幕捕获,ndi流推送的功能。 - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-22 - **Last Updated**: 2026-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ndi-screen-push 基于 Rust 开发的屏幕采集与 NDI 流推送工具。通过 DXGI Desktop Duplication 捕获显示器画面,经 NDI 协议实时推送至局域网。 ## 功能特性 - **DXGI Desktop Duplication** — 屏幕捕获,30fps,含鼠标光标合成 - **NDI 推送** — 局域网自动发现,支持自定义源名称和分组 - **NDI 查看器** — 交互式搜索 NDI 源,Win32 窗口实时显示画面 - **动态测试画面** — 条纹动画、帧计数、实时时钟叠加 - **命令行参数** — 选择显示器、NDI 分组、多实例、测试模式 - **Windows 服务** — 可注册为系统服务,开机自启 - **低资源占用** — 纯控制台程序,无 GUI 依赖,可无窗口静默运行 ## 系统要求 - Windows 10/11 64 位 - DirectX 11.1+ - [Rust](https://rustup.rs) 1.75+ - [NDI 6 SDK](https://ndi.video/for-developers/)(编译时需要头文件和 .lib 文件) - libclang(`bindgen` 编译依赖) > ⚠️ 本项目仓库已自带 `ndi_sdk/` 目录(内含 SDK 头文件和 .lib),编译时需通过 `NDI_SDK_DIR` 环境变量指向该目录。运行时仍需安装 NDI 6 Runtime 或确保 DLL 可访问。 ## 快速开始 ```powershell # 安装 Rust winget install Rustlang.Rustup # 克隆仓库(自带 ndi_sdk/) git clone <仓库地址> cd ndi-screen-push # 编译(使用仓库自带的 NDI SDK) $env:NDI_SDK_DIR = "$pwd\ndi_sdk" cargo build --release ``` ## 使用 ```powershell # 静默后台采集推流 ndistream.exe # 查看帮助 ndistream.exe -h # 详细日志 ndistream.exe -v # 测试模式(动态画面) ndistream.exe --test -v # NDI 查看器 ndistream.exe --view ``` ## 项目结构 ``` src/ ├── main.rs # 入口、模式调度、采集推流主循环 ├── cli.rs # CLI 参数解析、校验、帮助 ├── service.rs # Windows 服务注册/卸载/运行 ├── capture.rs # DXGI 屏幕采集模块 ├── ndi_sender.rs # NDI 发送模块 ├── font.rs # 点阵字体渲染和像素工具 └── viewer.rs # NDI 查看器(Finder/Receiver + Win32 窗口) ``` ## 许可证 MIT