petuhovskiy / chiwt

Self-hosted twitch-like service

Home Page:http://chiwt.rwlist.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

chiwt

Self-hosted twitch-like service

Run with Docker

Запустить простой вариант без балансеров и изменения битрейта:

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, а клиент должен работать в браузере. Сама реализация будет происходить поэтапно, от самого простого к самому сложному.

  1. Посмотреть на OBS, понять в каком формате он отпраляет видеопоток, и в каком формате нужно указывать ссылку
  2. Сделать простой сервер, который может принимать видеопоток, и правильно его распознает
  3. Добавить в этот сервер ретрансляцию потока, т.е. HTTP сервер должен отдавать такой же поток как в него загружают
  4. Сделать браузерный клиент, для просмотра стрима (ретранслируемого потока)
  5. Добавить поддержку нескольких пользователей, нужную для нескольких стримов и чата
  6. Добавить на сервер поддержку real-time чата
  7. Добавить на клиент возможность логина и использования чата
  8. Добавить на сервер перекодирование под разные битрейты
  9. Добавить в клиент возможность выбора битрейта
  10. Настроить CDN для стримов (видеопотоков)

=== Вы находитесь здесь ===

Итоги

Реализован видео-стриминг в реальном времени.

+4 балла - сервер принимает поток видео и ретранслирует его +2 балла - клиент +2 балла - CDN +3 балла - при ретрансляции возможно изменение битрейта +3 балла - real-time чат

Итого: 14 баллов.

About

Self-hosted twitch-like service

http://chiwt.rwlist.io

License:MIT License


Languages

Language:Go 82.3%Language:CSS 5.6%Language:JavaScript 5.2%Language:HTML 4.6%Language:Dockerfile 2.2%