High-performance open source video streaming player with Netlify Functions backend. Stream any video URL instantly with advanced features like proxy support, buffer management, and keyboard controls.
- ๐ Fast Streaming - Optimized video playback with buffer management
- ๐ Netlify Proxy - Built-in proxy to bypass CORS restrictions
- ๐ Dark/Light Theme - Automatic theme switching with cookie storage
- โจ๏ธ Keyboard Shortcuts - Full keyboard control support
- โก Speed Control - Variable playback speed (0.25x to 100x)
- ๐ Network Stats - Real-time buffer and speed monitoring
- ๐ฏ Seek Support - Advanced seeking with Range request detection
- ๐ฑ Responsive - Works on all devices
- ๐ HLS/DASH - Support for adaptive streaming formats
git clone https://github.com/IROTECHLAB/IROSTREAM.git
cd IROSTREAMOption A: Deploy with Netlify CLI
npm install -g netlify-cli
netlify deployOption B: Deploy with Git
- Push to your GitHub repository
- Connect repository to Netlify
- Deploy settings are in
netlify.toml
The proxy function is automatically deployed with your site. No additional configuration needed!
IROSTREAM/
โโโ index.html # Main player interface
โโโ styles.css # All styles (dark/light themes)
โโโ player.js # Video player core logic
โโโ theme.js # Theme management
โโโ netlify/
โ โโโ functions/
โ โโโ proxy.js # Netlify Functions proxy
โโโ netlify.toml # Netlify deployment config
โโโ README.md # This file
- Enter any video URL (MP4, WebM, OGG, HLS, DASH)
- Toggle "Use Netlify Functions Proxy" if you encounter CORS issues
- Click "Stream" or press Enter
- Enjoy your video with advanced controls!
| Key | Action |
|---|---|
| Space / K | Play/Pause |
| F | Toggle Fullscreen |
| M | Mute/Unmute |
| P | Picture in Picture |
| โ / J | Back 10 seconds |
| โ / L | Forward 10 seconds |
| โ | Volume Up |
| โ | Volume Down |
| 0-9 | Jump to 0%-90% |
| T | Toggle Theme |
| ? | Show Shortcuts |
| Esc | Close Modals |
The proxy function handles CORS issues by routing video requests through your Netlify domain:
// Example proxy request
fetch('/.netlify/functions/proxy?url=' + encodeURIComponent(videoUrl))- โ Range request forwarding (for seeking)
- โ Header preservation
- โ Redirect handling
- โ Timeout protection
- โ CORS headers
The player supports both dark and light themes with automatic cookie-based persistence:
- Default theme: Dark
- Toggle with button or 'T' key
- Theme preference saved in cookie (1 year expiry)
- Smooth transitions between themes
Advanced buffer management system:
- Real-time buffer visualization
- Network speed monitoring
- Slow connection detection
- Adaptive buffer targeting (30s ahead)
- History buffer preservation (10% of watched)
- MP4 - H.264/AVC, H.265/HEVC
- WebM - VP8, VP9, AV1
- OGG - Theora, Vorbis
- HLS - Apple HTTP Live Streaming
- DASH - MPEG-DASH
- MKV - Matroska (limited browser support)
- MOV - QuickTime (limited browser support)
[build]
publish = "."
functions = "netlify/functions"
[build.environment]
NODE_VERSION = "18"
[[redirects]]
from = "/api/proxy"
to = "/.netlify/functions/proxy"
status = 200
[[headers]]
for = "/*"
[headers.values]
Access-Control-Allow-Origin = "*"
Access-Control-Allow-Methods = "GET, POST, PUT, DELETE, OPTIONS"
Access-Control-Allow-Headers = "Content-Type, Authorization, Range"
X-Frame-Options = "DENY"
X-Content-Type-Options = "nosniff"
Referrer-Policy = "strict-origin-when-cross-origin"
[[headers]]
for = "/.netlify/functions/*"
[headers.values]
Access-Control-Allow-Origin = "*"
Access-Control-Allow-Methods = "GET, POST, PUT, DELETE, OPTIONS"
Access-Control-Allow-Headers = "Content-Type, Authorization, Range"
Access-Control-Expose-Headers = "Content-Length, Content-Range, Accept-Ranges"# Install Netlify CLI
npm install -g netlify-cli
# Start local development server
netlify devNo environment variables required! The proxy works out of the box.
| Browser | Support |
|---|---|
| Chrome | โ Full |
| Firefox | โ Full |
| Safari | โ Full |
| Edge | โ Full |
| Opera | โ Full |
| Mobile Chrome | โ Full |
| Mobile Safari | โ Full |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Thanks to yashudeveloper for the original code inspiration
- Built with Netlify Functions
- Icons by Font Awesome
- GitHub: IROTECHLAB/IROSTREAM
- Telegram: @Irotech_lab
- Instagram: @Ironmanyt00
- Issues: GitHub Issues
Made with โค๏ธ by IROTECH Team