kuuyee / lal

🔥 Golang live stream lib/client/server. support RTMP, RTSP(sdp+rtp+rtcp), HTTP[S]-FLV, HTTP-TS, HLS(m3u8+ts), H264(AVC), H265(HEVC), AAC, relay pull & push, record, HTTP API & Notify, cluster, GOP cache. || Go直播流媒体网络传输服务器

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Live And Live




lal是一个开源GoLang流媒体项目,包含三个主要组成部分:

  • lalserver:接收客户端推流,转发给对应的拉流客户端,也即承担直播场景中的源站、CDN边缘分发等角色。类似于nginx-rtmp-module、crtmpserver等应用。
  • demo:一些小应用,比如推、拉流客户端,压测工具,流分析工具,调度示例程序等。类似于ffmpeg、ffprobe等应用,以及提供给业务方的使用示例。
  • pkg:流媒体协议部分,业务方可使用它编写自身的应用。类似于ffmpeg的libavformat等库。

app/lalserver服务器支持的协议:

- sub rtmp sub http(s)-flv sub http-ts sub hls sub rtsp relay push rtmp
pub rtmp X
pub rtsp
relay pull rtmp X .
编码类型 rtmp rtsp hls http(s)-flv http-ts
aac
avc/h264
hevc/h265 X X

表格含义见: 《流媒体传输连接类型之session client, server, pub, sub, push, pull》

app/lalserver功能特性:

  • 全平台。(依托Go语言):支持(linux/macOS/windows)多平台开发、调试、运行。支持交叉编译。生成的可执行文件(无任何库依赖)可独立运行。(开放源码的同时)提供各平台可执行文件,可(免编译)直接运行
  • 高性能。多核多线程扩展
  • 多种直播流封装协议。支持RTMP/RTSP/HTTP-FLV/HTTP-TS/HLS,不同封装协议支持相互转换
  • 多种编码格式。视频支持H264/AVC,H265/HEVC,音频支持AAC
  • 录制。支持HLS录制(HLS直播与录制可同时开启)
  • HTTPS。支持HTTPS-FLV拉流
  • RTSP。支持interleaved模式。支持digest auth验证。支持GET_PARAMETER
  • HTTP API接口。用于获取服务信息,向服务发送命令。见《lal流媒体服务器的HTTP API接口》
  • HTTP Notify事件回调。见《lal HTTP Notify(or Callback or Webhook)事件回调》
  • 分布式集群
  • 静态pull回源。通过配置文件配置回源地址
  • 静态push转推。支持转推多个地址。通过配置文件配置转推地址
  • CORS跨域。支持HTTP-FLV,HTTP-TS,HLS跨域拉流
  • HTTP文件服务器。比如HLS切片文件可直接播放,不需要额外的HTTP文件服务器
  • 秒开播放。GOP缓冲

除了lalserver,还提供一些基于lal开发的demo(比如客户端程序): 《lal/app/demo》

Live And Live

发行版本日志:《CHANGELOG.md》

编译,运行,体验功能

编译

方式1,从源码自行编译

$export GO111MODULE=on && export GOPROXY=https://goproxy.cn,https://goproxy.io,direct
$make

方式2,直接下载编译好的二进制可执行文件

点我打开《github lal最新release版本页面》,下载对应平台编译好的二进制可执行文件的zip压缩包。

运行

# 注意,windows平台将路径分隔符`/`换成`\`
$./bin/lalserver -c conf/lalserver.conf.json

体验功能

快速体验lalserver服务器见: 《常见推拉流客户端软件的使用方式》

lalserver详细配置见: 《配置注释文档》

第三方依赖

我自己写的Go基础库: github.com/q191201771/naza

联系我

  • 个人微信号: q191201771
  • 个人QQ号: 191201771
  • 微信群: 加我微信好友后,告诉我拉你进群
  • QQ群: 1090510973

欢迎任何技术和非技术的交流。

目前lal正在收集新一轮需求中。

并且,lal也十分欢迎开源贡献者的加入。提PR前请先阅读:《yoko版本PR规范》

性能测试,测试过的第三方客户端

《TEST.md》

项目star趋势图

觉得项目还不错,就点个star支持一下吧 :)

Stargazers over time

About

🔥 Golang live stream lib/client/server. support RTMP, RTSP(sdp+rtp+rtcp), HTTP[S]-FLV, HTTP-TS, HLS(m3u8+ts), H264(AVC), H265(HEVC), AAC, relay pull & push, record, HTTP API & Notify, cluster, GOP cache. || Go直播流媒体网络传输服务器

License:MIT License


Languages

Language:Go 98.5%Language:Shell 1.4%Language:Makefile 0.0%