Сервіс для стрімінгу екрану в реальному часі через веб-браузер з використанням WebRTC технологій.
- 📺 Стрімінг екрану в реальному часі - низька затримка завдяки WebRTC
- 👥 Підтримка до 8 глядачів - оптимізовано для стабільної роботи
- 🎮 Простий веб-інтерфейс - без необхідності встановлення додаткових програм
- 🎛️ Адаптивна якість - автоматичне зниження при збільшенні глядачів
- 🎤 Опціональне аудіо - можливість включення/вимкнення звуку
- 📱 Респонсивний дизайн - працює на всіх пристроях
- 🔄 Автоматична синхронізація - для зменшення накопиченої затримки
⚠️ Обмеження навантаження - захист від перевантаження сервера
- Node.js 16+
- Сучасний браузер (Chrome, Firefox, Edge, Safari)
- HTTPS або localhost (для роботи Screen Capture API)
-
Клонуйте або завантажте проект
git clone <url> WebStreamerLocal cd WebStreamerLocal
-
Встановіть залежності
npm install
-
Запустіть сервер
npm start
-
Відкрийте браузер
- Головна сторінка: http://localhost:3000
- Стрімінг: http://localhost:3000/stream
- Перегляд: http://localhost:3000/view
- Відкрийте http://localhost:3000/stream
- Натисніть "Почати Стрім"
- Дозвольте браузеру доступ до екрану
- Оберіть вікно або екран для трансляції
- Скопіюйте посилання і поділіться з глядачами
- Керуйте стрімом через панель управління
- Отримайте посилання від стрімера
- Відкрийте http://localhost:3000/view
- Оберіть доступний стрім зі списку
- Натисніть "Переглянути" для підключення
- Користуйтеся елементами керування відео
- Контроль якості: 480p, 720p, 1080p
- Аудіо: Включення/вимкнення системного звуку
- Моніторинг: Кількість глядачів в реальному часі
- Попередній перегляд: Бачите те, що транслюєте
- Швидке поділення: Одним кліком скопіювати посилання
- Повноекранний режим: Для кращого перегляду
- Керування звуком: Увімкнення/вимкнення звуку
- Статистика з'єднання: Перегляд якості та швидкості
- Автоматичне перепідключення: При втраті з'єднання
- Backend: Node.js + Express + Socket.io
- Frontend: Vanilla JavaScript + CSS3
- WebRTC: Для peer-to-peer передачі відео
- Signaling: Socket.io для координації з'єднань
| Браузер | Стрімінг | Перегляд |
|---|---|---|
| Chrome 72+ | ✅ | ✅ |
| Firefox 66+ | ✅ | ✅ |
| Edge 79+ | ✅ | ✅ |
| Safari 11+ | ✅ | ✅ |
- STUN сервери: Використовуються Google STUN сервери
- Локальна мережа: Працює без додаткових налаштувань
- Інтернет: Може знадобитися TURN сервер для роботи через NAT
// У server.js
const PORT = process.env.PORT || 3000;// У static/stream.js та static/view.js
const pc = new RTCPeerConnection({
iceServers: [
{ urls: 'stun:stun.l.google.com:19302' },
{
urls: 'turn:your-turn-server.com:3478',
username: 'user',
credential: 'pass'
}
]
});Для розширених можливостей можна додати інтеграцію з OBS:
- Встановіть OBS WebSocket плагін
- Використайте
obs-websocket-jsдля керування - Створіть сцени та джерела програмно
- Керуйте стрімом через веб-інтерфейс
- 1-5 глядачів: Відмінна якість та стабільність
- 6-8 глядачів: Автоматичне зниження якості до 720p/480p
- 9+ глядачів: Підключення блокується для збереження стабільності
- 30+ глядачів: Потрібно SFU рішення (див. SCALING-SOLUTIONS.md)
- Автоматичне оновлення стріму кожні 5 хвилин
- Зменшує накопичену затримку
- Всі глядачі отримують свіжий стрім одночасно
- Переконайтеся, що використовуєте HTTPS або localhost
- Перевірте дозволи браузера
- Спробуйте інший браузер
- Максимум 8 глядачів для стабільності
- Спробуйте підключитися пізніше
- Для більших аудиторій розгляньте SFU рішення
- Перевірте файрвол
- Переконайтеся, що порт 3000 доступний
- Перевірте консоль браузера на помилки
- Якість автоматично знижується при 4+ глядачах
- Це нормально для забезпечення стабільності
- Для кращої якості зменшіть кількість глядачів
npm start # Запуск продакшн сервера
npm run dev # Запуск з автоперезавантаженнямПроект готовий до розширення:
- Додавання аутентифікації
- Запис стрімів
- Чат для глядачів
- Інтеграція з OBS Studio
- Мультистрімінг на платформи
MIT License - використовуйте у своїх проектах freely!
Створено для локального стрімінгу екрану з мінімальною затримкою 🚀