Что это такое?
livego — это простой и эффективный сервер для прямых видеотрансляций, написанный на чистом Go: вы отправляете в него видеопоток, а он раздаёт этот поток зрителям по RTMP, HTTP-FLV и HLS.
Это сервер, который я запускаю сам, или библиотека для кодинга?
Это отдельный сервер для самостоятельного размещения: запускаете бинарник livego, получаете channelkey через его HTTP API, и он сам занимается приёмом потока и его воспроизведением — программировать не нужно.
Как его запустить?
Быстрее всего через Docker: docker run -p 1935:1935 -p 7001:7001 -p 7002:7002 -p 8090:8090 -d gwuhaolin/livego. Также можно скачать готовый бинарник и запустить его либо собрать из исходников командой go build или make build.
Нужно ли что-то ещё ставить кроме livego?
Нет — это один самодостаточный бинарник на чистом Go. Понадобятся только кодировщик для отправки потока (в примере из README используется ffmpeg) и плеер, который поддерживает RTMP, FLV или HLS.
Какие протоколы и кодеки он поддерживает — и что он не раздаст?
Он покрывает типичный стек для прямых трансляций: RTMP, AMF, HLS и HTTP-FLV для передачи, контейнеры FLV и TS, видео H264 и звук AAC или MP3. Всё, что выходит за этот список, не поддерживается.
Мне нужно знать Go, чтобы им пользоваться?
Нет — запуск сводится к выполнению бинарника или Docker-команды. Go нужен только если вы хотите собрать его сами из исходников.
Как опубликовать поток и посмотреть его?
Получите channelkey у запущенного сервера, отправьте свой поток на rtmp://localhost:1935/{appname}/{channelkey} (по умолчанию appname — 'live'), затем смотрите по RTMP-, FLV- или HLS-адресам воспроизведения, которые перечислены в README.
На каких портах он слушает?
Docker-команда открывает четыре: 1935 для RTMP, а также 7001, 7002 и 8090 — по ним работают HTTP-эндпоинты: API для channelkey и воспроизведение HTTP-FLV/HLS.
Можно ли раздавать HLS по HTTPS?
Да: сгенерируйте SSL-сертификат (server.key и server.crt), положите оба файла рядом с исполняемым файлом livego и включите usehlshttps в значение true в livego.yaml — по умолчанию там стоит false.
Зачем автор создал livego?
Цель, заявленная в README, — сервер прямых трансляций, который очень просто установить и использовать: чистый Go ради высокой производительности и кроссплатформенности, плюс поддержка распространённых стриминговых протоколов из коробки.
What are similar projects?
srs, nginx-rtmp-module, go2rtc, ZLMediaKit, owncast, mediamtx, iptv-api, stash
Which topics is it in?
h264, rtmp, livestream, media-server, hls, media, live-streaming, http-server, video-streaming, realtime, ffmpeg, http