Self-hosted twitch-like service
Запустить простой вариант без балансеров и изменения битрейта:
docker run -d -p 80:8080 -p 1935:1935 --name chiwt arthurwow/chiwt
Также есть более сложный вариант, со всеми фичами, для его запуска можно смотреть на docker-compose.yml и srs/.
docker-compose.yml для сложного варианта
version: '3.3'
services:
web:
image: arthurwow/chiwt
container_name: chiwt
ports:
- "80:8080"
- "1935:1935"
environment:
- WEB_ADDR=:8080
- ENABLE_INGESTOR=false
- INGESTOR_UPLOAD=rtmp://main.diko.me:1935/live
- INGESTOR_WATCH=http://main.diko.me:8080/,http://1.cdn.diko.me:8080/,http://2.cdn.diko.me:8080/
- AVAILABLE_QUALITY=1080p,720p,480p,360p,240p
- ORIGINAL_PREFIX=live/
- ENCODED_PREFIX=shakaled/
go run .
Серверный код по необходимости планируется писать на Go, а клиент должен работать в браузере. Сама реализация будет происходить поэтапно, от самого простого к самому сложному.
- Посмотреть на OBS, понять в каком формате он отпраляет видеопоток, и в каком формате нужно указывать ссылку
- Сделать простой сервер, который может принимать видеопоток, и правильно его распознает
- Добавить в этот сервер ретрансляцию потока, т.е. HTTP сервер должен отдавать такой же поток как в него загружают
- Сделать браузерный клиент, для просмотра стрима (ретранслируемого потока)
- Добавить поддержку нескольких пользователей, нужную для нескольких стримов и чата
- Добавить на сервер поддержку real-time чата
- Добавить на клиент возможность логина и использования чата
- Добавить на сервер перекодирование под разные битрейты
- Добавить в клиент возможность выбора битрейта
- Настроить CDN для стримов (видеопотоков)
=== Вы находитесь здесь ===
Реализован видео-стриминг в реальном времени.
+4 балла - сервер принимает поток видео и ретранслирует его +2 балла - клиент +2 балла - CDN +3 балла - при ретрансляции возможно изменение битрейта +3 балла - real-time чат
Итого: 14 баллов.