live video streaming server in golang
Last updated Jul 7, 2026
10.2k
Stars
2.0k
Forks
139
Issues
0
Stars/day
Attention Score
89
Language breakdown
No language data available.
▸ Files
click to expand
README
Simple and efficient live broadcast server:
- Very simple to install and use;
- Pure Golang, high performance, and cross-platform;
- Supports commonly used transmission protocols, file formats, and encoding formats;
Supported transport protocols
- RTMP
- AMF
- HLS
- HTTP-FLV
Supported container formats
- FLV
- TS
Supported encoding formats
- H264
- AAC
- MP3
Installation
After directly downloading the compiled binary file, execute it on the command line.Boot from Docker
Rundocker run -p 1935:1935 -p 7001:7001 -p 7002:7002 -p 8090:8090 -d gwuhaolin/livego to start
Compile from source
- Download the source code
git clone https://github.com/gwuhaolin/livego.git - Go to the livego directory and execute
go buildormake build
Use
- Start the service: execute the livego binary file or
make runto start the livego service; - Get a channelkey(used for push the video stream) from
http://localhost:8090/control/get?room=movieand copy data like your channelkey. - Upstream push: Push the video stream to
rtmp://localhost:1935/{appname}/{channelkey}through theRTMPprotocol(default appname islive), for example, useffmpeg -re -i demo.flv -c copy -f flv rtmp://localhost:1935/{appname}/{channelkey}push(download demo flv); - Downstream playback: The following three playback protocols are supported, and the playback address is as follows:
RTMP:rtmp://localhost:1935/{appname}/movie
- FLV:http://127.0.0.1:7001/{appname}/movie.flv
- HLS:http://127.0.0.1:7002/{appname}/movie.m3u8
- Use hls via https: generate ssl certificate(server.key, server.crt files), place them in directory with executable file, change "usehlshttps" option in livego.yaml to true (false by default)
./livego -h
Usage of ./livego:
--api_addr string HTTP manage interface server listen address (default ":8090")
--config_file string configure filename (default "livego.yaml")
--flvdir string output flv file at flvDir/APP/KEYTIME.flv (default "tmp")
--gop_num int gop num (default 1)
--hls_addr string HLS server listen address (default ":7002")
--hlskeepafter_end Maintains the HLS after the stream ends
--httpflv_addr string HTTP-FLV server listen address (default ":7001")
--level string Log level (default "info")
--read_timeout int read time out (default 10)
--rtmp_addr string RTMP server listen address
Use with flv.js
Interested in Golang? Please see Golang Chinese Learning Materials Summary
🔗 More in this category