A modern, self-hosted HLS multi-viewer with a professional broadcast theme UI. This application allows you to simultaneously view multiple HLS streams with an intuitive control panel for managing streams.
- 🎥 Multi-Stream Viewing: Watch up to 6 HLS streams simultaneously
- 🎛️ Control Panel: Easy stream management with add/remove functionality
- 📱 Responsive Design: Works on desktop and mobile devices
- 🎨 Broadcast Theme: Professional UI with modern animations
- 💾 Local Storage: Streams are saved locally and persist between sessions
- 🔄 Layout Controls: Multiple grid layouts (1x1, 2x1, 2x2, 3x2, 4x6)
- ⚡ HLS.js Integration: Full HLS support with fallback for native HLS
- 🎯 Real-time Controls: Start/stop streams individually
- 📊 Status Indicators: Visual feedback for stream status
- 🤖 Telegram Notifications: Real-time alerts when streams fail
- 🔄 Watchdog System: Automatic retry with configurable attempts
- 📱 Player Controls: Native video controls for each stream
- Windows 10/11
- Modern web browser (Chrome, Firefox, Edge, Safari)
- Python 3.7+ (for Telegram notifications)
- HLS stream URLs (.m3u8 files)
- Download the files to your Windows machine
- Open the folder containing the application files
- Double-click
start.bator runstart.ps1 - Choose option 2 for HTTP server (recommended)
- Open your browser and go to:
http://localhost:8000
- Download the files to your Windows machine
- Double-click
start_with_notifications.bat - Follow the setup instructions for Telegram bot
- Open your browser and go to:
http://localhost:8000
If you want Telegram notifications:
-
Create a Telegram Bot:
- Open Telegram and search for
@BotFather - Send
/newbotand follow the instructions - Copy the bot token provided
- Open Telegram and search for
-
Configure the Bot:
- The bot token is already configured in
telegram_notify.py - Send a message to your bot in Telegram
- The script will automatically detect your chat ID
- The bot token is already configured in
-
Test Notifications:
- Start the application with
start_with_notifications.bat - Click the "Test" button in the control panel
- You should receive a test message on Telegram
- Start the application with
- Click "Add Stream" in the control panel
- Enter stream details:
- Stream Name: A descriptive name for your stream
- HLS URL: The .m3u8 URL of your stream
- Layout Position: Choose which grid position (1-24)
- Click "Add Stream" to start viewing
- Play/Pause: Click the play/pause button next to each stream
- Remove Stream: Click the trash icon to remove a stream
- Layout Controls: Use the layout buttons to change grid arrangement
- Notifications: Toggle Telegram notifications on/off
- Test: Send a test notification to Telegram
- Automatic Alerts: Stream errors and retries are automatically reported
- Automatic Retry: Failed streams are automatically retried (3 attempts)
- Error Notifications: Real-time alerts when streams fail
- Retry Tracking: Shows retry attempts in notifications
- Configurable: Adjust retry count and delay in the code
Ctrl + N: Open "Add Stream" modalEsc: Close modal (when open)
The application supports standard HLS streams with:
.m3u8manifest files- HTTP/HTTPS URLs
- Live and VOD streams
multiviewr/
├── index.html # Main application file
├── styles.css # Broadcast theme styling
├── script.js # Application logic
├── telegram_notify.py # Telegram notification relay
├── requirements.txt # Python dependencies
├── start_with_notifications.bat # Full setup script
├── start.bat # Basic setup script
├── start.ps1 # PowerShell setup script
├── sample-streams.json # Demo streams
└── README.md # This file
- Stream List: Shows all added streams with status
- Add Stream: Modal dialog for adding new streams
- Individual Controls: Play/pause and remove for each stream
- Notification Controls: Toggle and test Telegram notifications
- Multiple Layouts: 1x1, 2x1, 2x2, 3x2, 4x6 grid arrangements
- Responsive Design: Adapts to screen size
- Hover Effects: Visual feedback on interaction
- Player Controls: Native video controls for each stream
- Local Storage: Streams persist between browser sessions
- Error Handling: Visual feedback for stream errors
- Status Indicators: Shows loading, playing, error states
- Watchdog System: Automatic retry with notifications
- Real-time Alerts: Instant notifications when streams fail
- Retry Tracking: Shows retry attempts and success/failure
- Error Details: Includes specific error information
- Test Function: Send test notifications to verify setup
| Browser | HLS Support | Status |
|---|---|---|
| Chrome | HLS.js | ✅ Full Support |
| Firefox | HLS.js | ✅ Full Support |
| Edge | HLS.js | ✅ Full Support |
| Safari | Native HLS | ✅ Full Support |
- Check URL: Ensure the HLS URL is valid and accessible
- CORS Issues: Use a local HTTP server (see installation)
- Network: Verify internet connection and stream availability
- Reduce Streams: Limit to 2-3 streams for better performance
- Browser: Try a different browser
- Hardware: Ensure sufficient CPU/memory resources
- Streams are muted by default for better multi-stream experience
- Click on individual video players to unmute if needed
- Check Bot Setup: Ensure you sent a message to your bot
- Verify Relay: Check if
telegram_notify.pyis running on port 3001 - Test Connection: Use the "Test" button in the control panel
- Check Logs: Look at the relay console for error messages
- Export: Save your stream configuration as JSON
- Import: Load previously saved stream configurations
The application can be customized by modifying:
styles.css: Change colors, layout, animationsscript.js: Add new features or modify behaviorindex.html: Modify the UI structuretelegram_notify.py: Customize notification messages
- Local Storage: Stream data is stored locally in your browser
- No Server: This is a client-side application, no data is sent to external servers
- HTTPS: Use HTTPS URLs for secure streams
- Telegram: Notifications are sent via Telegram's secure API
- Fork the repository (if using version control)
- Modify files as needed
- Test thoroughly with different stream types
- Update documentation for new features
To create a custom theme:
- Modify
styles.csswith your color scheme - Update gradients and animations
- Test on different screen sizes
For issues or questions:
- Check browser console for error messages
- Verify stream URLs are accessible
- Test with different browsers
- Ensure proper file permissions
- Check Telegram bot setup for notification issues
This project is open source and available under the MIT License.
Enjoy your ITAssist HLS Multiviewer! 🎥📺🤖