explaingit

gwuhaolin/livego

10,174GoAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

Livego is a lightweight self-hosted live video streaming server written in Go, it receives a stream from broadcasting software via RTMP and delivers it to viewers via HLS, HTTP-FLV, or RTMP, with optional on-disk recording.

Mindmap

mindmap
  root((Livego))
    What it does
      Receive RTMP stream
      Distribute to viewers
      Record to FLV file
    Input
      RTMP from OBS
      RTMP from ffmpeg
    Output formats
      HLS for browsers
      HTTP-FLV
      RTMP direct
    Setup
      Single binary
      Docker one-liner
      HTTPS with SSL cert
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run your own live streaming server on a VPS without depending on YouTube or Twitch, keeping full control of the stream.

USE CASE 2

Accept a stream from OBS or ffmpeg via RTMP and serve it to viewers in a browser using HLS with broad device compatibility.

USE CASE 3

Record a live stream to an FLV file on disk while simultaneously delivering it to live viewers.

USE CASE 4

Set up a private streaming server for internal events or demos using a single Docker command and a channel key.

Tech stack

GoRTMPHLSHTTP-FLVDocker

Getting it running

Difficulty · moderate Time to first run · 30min

Requires a domain and SSL certificate only for HTTPS delivery, basic HTTP streaming works without any extra configuration.

In plain English

Livego is a self-hosted live video streaming server written in Go. You run it on your own machine or server, and it handles receiving a video stream from a broadcaster and distributing it to viewers. The typical workflow has two sides. On the broadcasting side, a video source such as a camera or recording software pushes a video stream to the livego server using RTMP, a protocol commonly used for live video. On the viewing side, people can watch the stream using one of three supported delivery methods: RTMP for players that support it directly, HTTP-FLV for web-based players, or HLS for broad compatibility including mobile devices and modern browsers. Setting it up involves downloading the compiled binary and running it directly, or using Docker with a single command. Once running, you request a channel key from a built-in management endpoint, then provide that key to your broadcasting software as part of the stream destination address. Viewers connect to a separate playback address that does not require the key. The server supports the H264 video codec, AAC audio, and MP3 audio. It can record streams to FLV files on disk while they are live. HTTPS is supported for HLS delivery by placing SSL certificate files alongside the executable and enabling the option in the configuration file. This is a lightweight, single-binary tool suited for situations where you want to run your own streaming infrastructure without depending on platforms like YouTube or Twitch. It is cross-platform and described by its author as simple to install and use. The README is brief and does not cover advanced configuration in depth beyond the command-line flag reference.

Copy-paste prompts

Prompt 1
Show me how to set up livego using Docker and configure OBS Studio to push a stream to it with the correct RTMP destination and stream key.
Prompt 2
I want to let viewers watch a livego stream in a web browser. Which output format should I use, how do I get the playback URL, and what player can I embed?
Prompt 3
How do I request a channel key from livego's management API endpoint and use it with ffmpeg to push a test video stream from the command line?
Prompt 4
Walk me through enabling HTTPS for HLS delivery in livego, including where to place the SSL certificate files and what config option to set.
Open on GitHub → Explain another repo

← gwuhaolin on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.