这是什么东西?
livego 是一个用纯 Go 编写的简单高效的直播流媒体服务器:你把视频流推给它,它再通过 RTMP、HTTP-FLV 和 HLS 把流分发给观看者。
它是我自己运行的服务器,还是写代码调用的库?
是一个自己部署的独立服务器:启动 livego 可执行文件,通过它的 HTTP API 获取一个 channelkey,推流和播放它都帮你搞定——不需要写代码。
怎么把它跑起来?
最快的方式是用 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'),然后通过 README 里列出的 RTMP、FLV 或 HLS 播放地址观看。
它监听哪些端口?
Docker 命令暴露了四个端口:1935 用于 RTMP,另外 7001、7002 和 8090 承载基于 HTTP 的功能——channelkey API 以及 HTTP-FLV/HLS 播放。
HLS 输出能通过 HTTPS 提供吗?
可以:生成一个 SSL 证书(server.key 和 server.crt),把这两个文件放在 livego 可执行文件旁边,然后把 livego.yaml 里的 usehlshttps 改成 true——默认是 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