用Go实现一个直播系统难吗?看看这个开源项目
今天
以下文章来源于Go招聘 ,作者欧盆索思
Go招聘Golang 相关求职和招聘,以及面试题、经验分享,Go 语言其他知识和职场也是值得分享的。
这几年直播真的是不要太火,相关技术也很成熟。但没有接触过的人,可能不知道怎么实现的。如果你对直播技术感兴趣,今天的这个项目很适合你研究。而且是国人开发的。
项目地址:https://github.com/gwuhaolin/livego,Star 数:5.3k+。
这是一个简单高效的直播服务器,完全使用 Go 实现,性能高,跨平台,安装和使用非常简单。支持常用的传输协议、文件格式、编码格式。
你可以通过编译好的二进制文件:https://github.com/gwuhaolin/livego/releases 安装,也可以使用 Docker:
$ docker run -p 1935:1935 -p 7001:7001 -p 7002:7002 -p 8090:8090 -d gwuhaolin/livego
当然,也可以按普通的 Go 项目进行源码安装。
$ go get -v github.com/gwuhaolin/livego
简单使用
启动服务:执行 livego
二进制文件启动 livego 服务;访问 http://localhost:8090/control/get?room=movie
获取一个房间的 channelkey(channelkey用于推流,movie用于播放).推流: 通过 RTMP
协议推送视频流到地址rtmp://localhost:1935/{appname}/{channelkey}
(appname默认是live
), 例如:使用ffmpeg -re -i demo.flv -c copy -f flv rtmp://localhost:1935/{appname}/{channelkey}
推流(下载demo flv);播放: 支持多种播放协议,播放地址如下: 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
使用帮助:
./livego -hUsage of ./livego: --api_addr string HTTP管理访问监听地址 (default ":8090") --config_file string 配置文件路径 (默认 "livego.yaml") --flv_dir string 输出的 flv 文件路径 flvDir/APP/KEY_TIME.flv (默认 "tmp") --gop_num int gop 数量 (default 1) --hls_addr string HLS 服务监听地址 (默认 ":7002") --hls_keep_after_end Maintains the HLS after the stream ends --httpflv_addr string HTTP-FLV server listen address (默认 ":7001") --level string 日志等级 (默认 "info") --read_timeout int 读超时时间 (默认 10) --rtmp_addr string RTMP 服务监听地址 (默认 ":1935") --write_timeout int 写超时时间 (默认 10)
文末「阅读原文」可直达项目首页。
今天的项目大家觉得怎么样吗?如果你喜欢,请在文章底部留言、点赞或关注转发,你的支持就是我持续更新的最大动力!
赞 (0)