https://github.com/whitlocktech/rtspdeck
RTSP View for Security Cameras
https://github.com/whitlocktech/rtspdeck
Last synced: 11 months ago
JSON representation
RTSP View for Security Cameras
- Host: GitHub
- URL: https://github.com/whitlocktech/rtspdeck
- Owner: whitlocktech
- License: mit
- Created: 2025-08-03T08:48:24.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-08-05T23:30:56.000Z (11 months ago)
- Last Synced: 2025-08-06T00:17:39.114Z (11 months ago)
- Language: C#
- Size: 27.1 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# RTSPDeck
**RTSPDeck** is a lightweight, open-source desktop application for Windows (10+) that lets you view and manage multiple RTSP security camera feeds. Built in C# using WPF and powered by LibVLCSharp.
> **Note**: Most of the architecture and functionality of this project was designed and implemented with the help of [ChatGPT (OpenAI)](https://openai.com/chatgpt).
---
## 🚀 Features
- 📷 View multiple RTSP streams in a grid layout
- 🔒 Save camera settings (IP, username, password, etc.) to a local config file
- ➕ Add/remove cameras dynamically via a GUI
- 🧩 Built with modern .NET and VLC libraries
- 🖥️ Compatible with most ONVIF / RTSP-capable NVRs and IP cameras
- 🌗 Attempts to follow system theme (light/dark), but full theme support is still being improved
---
## 📦 Tech Stack
- [.NET 8.0 (LTS)](https://dotnet.microsoft.com/)
- [WPF](https://learn.microsoft.com/en-us/dotnet/desktop/wpf/)
- [LibVLCSharp](https://code.videolan.org/videolan/LibVLCSharp)
- JSON-based local config file for camera persistence
---
## 🛠️ How to Build
### Prerequisites
- Visual Studio 2022 or newer
- [.NET 8 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
- Git (optional, for cloning)
> 🔧 **No standalone VLC installation is required at runtime.** The app uses `VideoLAN.LibVLC.Windows` NuGet package, which bundles the required native binaries (`libvlc.dll`, `libvlccore.dll`, `plugins/`). Just publish the full output folder.
> 🏗️ **Note**: Final build targets `x64` only.
### Steps
1. **Clone the repository:**
```bash
git clone https://github.com/yourname/RTSPDeck.git
cd RTSPDeck
```
2. **Open the solution:**
Open `RTSPDeck.sln` in Visual Studio 2022.
3. **Install required NuGet packages (if not restored):**
```powershell
Install-Package LibVLCSharp.WPF
Install-Package LibVLCSharp
Install-Package VideoLAN.LibVLC.Windows
```
4. **Build and run the project.**
---
## 📂 Configuration
RTSPDeck uses a JSON file to store camera information. This is created automatically on first run as `config.json` in the same directory as the executable.
Each camera feed entry includes:
- `Name`
- `IPAddress`
- `Port`
- `Username`
- `Password`
- `CameraNumber`
These values are used to generate a complete RTSP URL for each feed.
---
## 🎥 RTSP URL Format
RTSPDeck builds stream URLs like so:
```
rtsp://{username}:{password}@{ip}:{port}/Streaming/Channels/{cameraNumber}
```
Example:
```
rtsp://admin:secretpass@192.168.0.90:554/Streaming/Channels/101
```
This format is compatible with ANNKE, Hikvision, Dahua, Reolink, and most ONVIF-compliant systems.
---
## 🌓 Theme Support
RTSPDeck attempts to automatically follow your system theme (light or dark). However, full support (including runtime switching and modern accent color blending) is still in development. For now:
- Default styling matches light theme
- Some system brushes (`SystemColors.*BrushKey`) are used dynamically
- Dark theme styling may require explicit selection in a future release
---
## 🙏 Credits
- Core design and implementation assisted by [ChatGPT](https://chat.openai.com)
- RTSP video handling via [LibVLCSharp](https://code.videolan.org/videolan/LibVLCSharp)
- WPF UI based on native Windows controls
- Inspired by a need for a minimal, no-cloud, open RTSP viewer
---
## 📄 License
This project is licensed under the **MIT License**. You are free to use, modify, distribute, and share.