Skip to content

Commit b792a05

Browse files
authored
Add files via upload
1 parent f9343e3 commit b792a05

2 files changed

Lines changed: 1220 additions & 1058 deletions

File tree

README.md

Lines changed: 239 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,239 @@
1-
# Multistreamer
1+
# MultiStream
2+
3+
A self-hosted, real-time multi-video streaming viewer with chat, perfect for watch parties, storm tracking, event monitoring, and more.
4+
5+
![MultiStream](https://img.shields.io/badge/version-1.0-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![No Backend](https://img.shields.io/badge/backend-none-orange)
6+
7+
## Features
8+
9+
- **Multi-Video Grid** - Watch multiple YouTube streams in a responsive Brady Bunch-style grid
10+
- **Featured Layout** - Highlight one main video with smaller sidebar streams
11+
- **Real-Time Sync** - All viewers see the same streams, layout, and settings instantly
12+
- **Live Chat** - Built-in chat room synced across all viewers
13+
- **Host Controls** - Only hosts can add/remove streams; viewers just watch
14+
- **No Backend Required** - Uses Gun.js for P2P sync, works on static hosting (GitHub Pages)
15+
- **Room Creator** - Create unlimited rooms without editing any files
16+
- **Customizable** - Themes, colors, labels, announcements, and more
17+
18+
## Quick Start
19+
20+
### Deploy to GitHub Pages
21+
22+
1. **Fork or clone this repository**
23+
24+
2. **Enable GitHub Pages**
25+
- Go to repository Settings → Pages
26+
- Source: Deploy from a branch
27+
- Branch: `main` (or `master`), folder: `/ (root)`
28+
- Save
29+
30+
3. **Access your site**
31+
- Your URL will be: `https://yourusername.github.io/repository-name/`
32+
33+
### Create Your First Room
34+
35+
1. Visit your deployed site (no URL parameters)
36+
2. Fill in:
37+
- **Room name**: `my-watch-party` (URL-friendly, lowercase)
38+
- **Room title**: `My Awesome Watch Party!` (displayed to viewers)
39+
- **Host password**: Your secret key (auto-generated if left blank)
40+
3. Click **Create Room**
41+
4. Copy your **Host Link** (keep private!) and **Viewer Link** (share publicly!)
42+
43+
## Usage
44+
45+
### As a Host
46+
47+
Access your room with the host link:
48+
```
49+
https://yoursite.github.io/?room=my-room&host=yourSecretPassword
50+
```
51+
52+
**Controls available:**
53+
| Control | Description |
54+
|---------|-------------|
55+
| Add Stream | Paste YouTube URL and click Add |
56+
| Set Main | Make a video the featured/large video |
57+
| Label | Give streams custom names |
58+
| Mute/Unmute All | Control audio for all streams |
59+
| Weather | Add a Windy.com radar panel |
60+
| Settings | Customize theme, colors, layout |
61+
| Share | Get viewer/host links |
62+
| Clear | Remove all streams |
63+
64+
**Room Management:**
65+
- Click the room title to edit it (syncs to all viewers)
66+
- Set an announcement message in Settings
67+
- Export your config to save/reuse setups
68+
69+
### As a Viewer
70+
71+
Access with the viewer link:
72+
```
73+
https://yoursite.github.io/?room=my-room
74+
```
75+
76+
Viewers can:
77+
- Watch all streams the host has added
78+
- Mute/unmute individual videos locally
79+
- Participate in chat
80+
- See real-time updates when host makes changes
81+
82+
Viewers cannot:
83+
- Add or remove streams
84+
- Change layout or settings
85+
- Edit room title or announcements
86+
87+
## URL Parameters
88+
89+
| Parameter | Description | Example |
90+
|-----------|-------------|---------|
91+
| `room` | Room identifier (required for viewing) | `room=blizzard-2025` |
92+
| `host` | Host password (enables host controls) | `host=mySecretKey` |
93+
94+
**Examples:**
95+
```
96+
# Room creator (no params)
97+
https://yoursite.github.io/
98+
99+
# Viewer mode
100+
https://yoursite.github.io/?room=storm-watch
101+
102+
# Host mode
103+
https://yoursite.github.io/?room=storm-watch&host=abc123
104+
```
105+
106+
## Features in Detail
107+
108+
### Layouts
109+
110+
- **Grid** - Equal-sized tiles, auto-arranges based on stream count
111+
- **Featured** - One large main video + sidebar with remaining streams
112+
113+
### Synced Settings
114+
115+
All these sync in real-time to viewers:
116+
- Room title & announcement
117+
- Streams (add/remove/order)
118+
- Mute states
119+
- Layout mode & featured video
120+
- Custom stream labels
121+
- Theme & accent color
122+
- Grid gap & label visibility
123+
- Weather panel & location
124+
125+
### Chat
126+
127+
- Usernames saved locally
128+
- Messages sync in real-time
129+
- Host messages highlighted with badge
130+
- 2-hour message history
131+
- Collapsible bottom bar (doesn't cover videos)
132+
133+
### Weather Panel
134+
135+
- Powered by Windy.com embeds
136+
- Shows radar/precipitation overlay
137+
- Configurable lat/lon coordinates
138+
- Great for storm tracking!
139+
140+
### Themes
141+
142+
- **Dark** - Default dark theme
143+
- **Midnight** - Deep blue tones
144+
- **AMOLED** - Pure black for OLED screens
145+
146+
### Import/Export
147+
148+
Save your room configuration as JSON:
149+
```json
150+
{
151+
"version": 3,
152+
"room": "my-room",
153+
"streams": [
154+
{ "id": "dQw4w9WgXcQ", "muted": true, "label": "Main Camera" },
155+
{ "id": "abc123xyz", "muted": true, "label": "Backup" }
156+
],
157+
"settings": {
158+
"layout": "featured",
159+
"featuredId": "dQw4w9WgXcQ",
160+
"weather": { "enabled": true, "lat": 40.7128, "lon": -74.006 },
161+
"display": { "gridGap": 2, "labels": "hover", "theme": "dark", "accent": "#00d4ff" }
162+
}
163+
}
164+
```
165+
166+
Import configs to quickly set up similar events.
167+
168+
## Technical Details
169+
170+
### How It Works
171+
172+
MultiStream uses [Gun.js](https://gun.eco/) for decentralized, real-time data sync:
173+
- No server/database required
174+
- Data syncs via public relay servers
175+
- Works on any static hosting (GitHub Pages, Netlify, etc.)
176+
- Room state persists even when host disconnects
177+
178+
### Browser Support
179+
180+
- Chrome/Edge (recommended)
181+
- Firefox
182+
- Safari
183+
- Mobile browsers
184+
185+
### Dependencies
186+
187+
- [Gun.js](https://gun.eco/) - Decentralized database (loaded via CDN)
188+
- [Windy.com](https://windy.com/) - Weather radar embeds
189+
190+
### Privacy
191+
192+
- No data stored on your server
193+
- Room data stored on Gun.js relay network
194+
- Chat messages expire after 2 hours
195+
- No analytics or tracking
196+
197+
## Self-Hosting Gun Relay (Optional)
198+
199+
For better reliability, you can run your own Gun relay:
200+
201+
```bash
202+
npm install gun
203+
npx gun
204+
```
205+
206+
Then update the Gun initialization in the HTML:
207+
```javascript
208+
const gun = Gun(['https://your-relay-server.com/gun']);
209+
```
210+
211+
## Use Cases
212+
213+
- **Storm/Weather Tracking** - Multiple news streams + radar
214+
- **Sports Watch Parties** - Multiple game angles or broadcasts
215+
- **Security Monitoring** - Multiple camera feeds
216+
- **Event Coverage** - News streams during breaking events
217+
- **Gaming** - Multiple Twitch/YouTube gaming streams
218+
- **Conference Rooms** - Display multiple video sources
219+
220+
## Contributing
221+
222+
Contributions welcome! Feel free to:
223+
- Report bugs
224+
- Suggest features
225+
- Submit pull requests
226+
227+
## License
228+
229+
MIT License - feel free to use, modify, and distribute.
230+
231+
## Acknowledgments
232+
233+
- [Gun.js](https://gun.eco/) for the amazing decentralized sync
234+
- [Windy.com](https://windy.com/) for embeddable weather maps
235+
- Inspired by the need to watch multiple blizzard streams at once!
236+
237+
---
238+
239+
**Made for storm chasers, sports fans, and anyone who needs to watch ALL the streams.**

0 commit comments

Comments
 (0)