Update README.md
This commit is contained in:
@@ -3,3 +3,81 @@
|
|||||||
DisplayStreamer is a high-performance, ultra-low latency desktop streaming application for Windows. Built with C# and .NET, it leverages DirectX 11 and Media Foundation to provide hardware-accelerated H.265 (HEVC) and H.264 video encoding and decoding.
|
DisplayStreamer is a high-performance, ultra-low latency desktop streaming application for Windows. Built with C# and .NET, it leverages DirectX 11 and Media Foundation to provide hardware-accelerated H.265 (HEVC) and H.264 video encoding and decoding.
|
||||||
|
|
||||||
Designed for seamless local network streaming, it features zero-configuration UDP auto-discovery, automatic client updates, and bypasses Windows power throttling to ensure a perfectly locked 60 FPS stream.
|
Designed for seamless local network streaming, it features zero-configuration UDP auto-discovery, automatic client updates, and bypasses Windows power throttling to ensure a perfectly locked 60 FPS stream.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
* **Hardware Acceleration**: Utilizes GPU hardware encoders/decoders (NVENC, AMF, QuickSync) via Media Foundation for H.265 (HEVC) or H.264 streaming.
|
||||||
|
* **Ultra-Low Latency**: Uses DXGI Desktop Duplication for zero-copy screen capture and DirectX 11 SwapChains for tear-free, hardware VSync rendering.
|
||||||
|
* **Zero-Configuration Discovery**: Clients automatically discover active servers on the local network via UDP broadcast.
|
||||||
|
* **Auto-Updating Clients**: If a client connects to a server running a different version, it automatically downloads the new executable into memory and restarts itself.
|
||||||
|
* **Multi-Monitor Support**: Select specific network adapters and individual displays to broadcast.
|
||||||
|
* **Smart Downscaling**: Automatically downscales 4K displays to 1080p using fast parallel CPU scaling to maintain network performance.
|
||||||
|
* **Performance Optimizations**: Bypasses Windows EcoQoS (Power Throttling), utilizes AVRT Pro Audio thread characteristics, and uses high-resolution waitable timers to prevent frame drops when minimized or out of focus.
|
||||||
|
* **Hardware Cursor Rendering**: Captures and renders the host's cursor accurately on the client side.
|
||||||
|
|
||||||
|
## Tech Stack
|
||||||
|
|
||||||
|
* **Language**: C# 12
|
||||||
|
* **Framework**: .NET 8.0 (Windows Forms)
|
||||||
|
* **Graphics & Capture**: DirectX 11, DXGI (Desktop Duplication API)
|
||||||
|
* **Media Processing**: Media Foundation (MFT)
|
||||||
|
* **Libraries**:
|
||||||
|
* `SharpDX`
|
||||||
|
* `SharpDX.Direct3D11`
|
||||||
|
* `SharpDX.DXGI`
|
||||||
|
* `SharpDX.MediaFoundation`
|
||||||
|
|
||||||
|
## System Requirements
|
||||||
|
|
||||||
|
### Server (Host)
|
||||||
|
* **OS**: Windows 10 or Windows 11
|
||||||
|
* **GPU**: A dedicated or integrated GPU with hardware H.265 (HEVC) or H.264 encoding support.
|
||||||
|
* **Network**: Gigabit Ethernet or Wi-Fi 6 recommended for optimal latency.
|
||||||
|
|
||||||
|
### Client (Viewer)
|
||||||
|
* **OS**: Windows 10 or Windows 11
|
||||||
|
* **GPU**: A GPU with hardware H.265 (HEVC) or H.264 decoding support.
|
||||||
|
* **Network**: Stable local network connection to the host.
|
||||||
|
|
||||||
|
## Build Instructions
|
||||||
|
|
||||||
|
1. **Prerequisites**:
|
||||||
|
* Install [Visual Studio 2026](https://visualstudio.microsoft.com/) with the **.NET desktop development** workload.
|
||||||
|
* Ensure the .NET 10.0 SDK is installed.
|
||||||
|
2. **Clone the Repository**:
|
||||||
|
```bash
|
||||||
|
git clone https://git.churchofmalware.org/mastercodeon/DisplayStreamer.git
|
||||||
|
cd DisplayStreamer
|
||||||
|
```
|
||||||
|
3. **Restore NuGet Packages**:
|
||||||
|
Open the solution in Visual Studio and restore the required SharpDX packages:
|
||||||
|
* `SharpDX`
|
||||||
|
* `SharpDX.Direct3D11`
|
||||||
|
* `SharpDX.DXGI`
|
||||||
|
* `SharpDX.MediaFoundation`
|
||||||
|
4. **Build**:
|
||||||
|
Build the solution in `Release` mode to ensure optimal performance.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The application acts as both the Server and the Client depending on how it is launched and configured.
|
||||||
|
|
||||||
|
### Starting a Server
|
||||||
|
1. Launch `DisplayStreamer.exe`.
|
||||||
|
2. If no servers are detected on the network, it will default to **Server Mode**. (You can also manually switch modes using the button on the UI).
|
||||||
|
3. Select the **Network Adapters** you want to broadcast on.
|
||||||
|
4. Select the **Displays** you want to capture.
|
||||||
|
5. Click **Start Streaming**. The app will minimize to the system tray to save resources. Double-click the tray icon to restore it.
|
||||||
|
|
||||||
|
### Connecting a Client
|
||||||
|
1. Launch `DisplayStreamer.exe` on another computer on the same network.
|
||||||
|
2. The app will automatically detect active servers and open in **Client Mode**.
|
||||||
|
3. Double-click a discovered server in the list (or select it and press Enter) to connect.
|
||||||
|
4. The stream will open in a borderless fullscreen window.
|
||||||
|
5. **Controls**:
|
||||||
|
* Press `ESC` to disconnect and close the viewer.
|
||||||
|
* Press `F1` to toggle the performance metrics overlay (FPS, Encode/Decode times).
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the MIT License. See the `LICENSE` file for details.
|
||||||
Reference in New Issue
Block a user