- ▦ 一. lalserver 简介
- ✒ lalserver 特性
- ✒ 协议转换支持情况
- ▦ 二. lalserver 安装、运行
- ✒ 方式 1, 源码编译安装
- ✒ 方式 2, Docker 镜像
- ✒ 方式 3, 下载编译好的二进制可执行文件
- ▦ 三. lalserver 使用
- ✒ 各协议推拉流 url 地址列表
- ✒ lalserver 配置文件
- ✒ lalserver HTTP 事件和接口
- ✒ lalserver 进阶
- ▦ 四. 重新认识 lal
- ✒ lal 的三层结构
- ✦ 其他 demo
- ✦ 流媒体协议栈库 package/library
- ✦ Golang 通用基础库-naza
- ✒ lalext
- ✦ WebRTC
- ✦ MCU 合流
- ▦ 五. 联系作者
▦ 一. lalserver 简介
lalserver是纯 Golang 开发的流媒体(直播音视频网络传输)服务器。目前已支持 RTMP, RTSP(RTP/RTCP), HLS, HTTP[S]/WebSocket[S]-FLV/TS 协议。

✒ lalserver 特性
-
全平台
- 支持 linux/macOS/windows 多系统开发、调试、运行
- 支持多 arch 运行。比如 amd64/arm64/arm32/ppc64le/mipsle/s390x
- 支持交叉编译。可在任一平台编译出其他平台的可执行文件
- 运行无依赖。可执行文件无任何环境、库安装依赖,可单文件独立运行
- (开放全部源码的同时)提供各平台可执行文件,可免编译直接运行
- 支持 docker
- 高性能。多核多线程扩展,支持高并发,性能和同类型
c/c++开发服务处于同一水平 - 高可用。完善的单元测试。并且有多个线上环境应用
-
多种直播流封装协议。
- 支持 RTMP, RTSP(RTP/RTCP), HLS, HTTP[S]/WebSocket[S]-FLV/TS
- 支持不同封装协议间相互转换
- 多种编码格式。视频支持 H264/AVC ,H265/HEVC ,音频支持 AAC
- 多种格式录制。支持 FLV ,长 MPEGTS ,HLS 录制(HLS 直播与录制可同时开启)
- HTTPS。支持 HTTPS-FLV ,HTTPS-TS ,HLS over HTTPS 拉流
- WebSocket/WebSockets。支持 Websocket-FLV ,WebSocket-TS 拉流
- HLS。支持 LIVE 实时直播、VOD 全列表直播。切片文件支持多种删除方式。支持内存切片
- RTSP。支持 over TCP(interleaved 模式)。支持 basic/digest auth 验证。支持 GET_PARAMETER
- RTMP。支持给单视频添加静音音频数据,支持合并发送。兼容对接各种常见 RTMP 实现
- HTTP API 接口。用于获取服务信息,向服务发送命令。
- HTTP Notify 事件回调。获取时间通知,业务方可以轻松定制自身的逻辑。
- 支持多种方式鉴权
- 支持分布式集群
- 静态 pull 回源。通过配置文件配置回源地址
- 静态 push 转推。支持转推多个地址。通过配置文件配置转推地址
- 支持按需回源。没有观众的回源拉流可以主动关闭
- CORS 跨域。支持 HTTP-FLV ,HTTP-TS ,HLS 跨域拉流
- HTTP 文件服务器。比如 HLS 切片文件可直接播放,不需要额外的 HTTP 文件服务器
- 监听端口复用。HTTP-FLV ,HTTP-TS ,HLS 可使用相同的端口。over HTTPS 类似
- 秒开播放。GOP 缓冲
- 支持叠加静音音频
- 支持先拉流后推流
- 支持推流断开后重连,拉流端无感知。
✒ 协议转换支持情况
见: 附录-协议间转换支持情况
▦ 二. lalserver 安装、运行
lalserver 支持 3 种安装、运行方式:
✒ 方式 1, 源码编译安装
下载源码:
git clone https://github.com/q191201771/lal.git
编译:
cd lal
export GO111MODULE=on && export GOPROXY=https://goproxy.cn,https://goproxy.io,direct
make
tips:
如果使用 GoLand 等 IDE 编译,那么编译lal/app/lalserver目录即可。
如果没有安装 Go 编译器,可参考《 CentOS 或 macOS 安装 GoLang 》,windows 操作系统可自行上网搜索教程。
运行:
./bin/lalserver -c conf/lalserver.conf.json
注意,windows 平台将路径分隔符/换成\
✒ 方式 2, Docker 镜像
下载镜像:
docker pull q191201771/lal
运行镜像:
$docker run -it -p 1935:1935 -p 8080:8080 -p 4433:4433 -p 5544:5544 -p 8083:8083 -p 8084:8084 -p 30000-30100:30000-30100/udp q191201771/lal /lal/bin/lalserver -c /lal/conf/lalserver.conf.json
如果想构建自己的 Docker 镜像,可参考 附录-构建自己的 Docker 镜像
✒ 方式 3, 下载编译好的二进制可执行文件
lal 提供linux/macos/windows平台编译好的 lal 二进制可执行文件(zip 压缩包形式)。
下载地址见: 《 github lal 最新 release 版本页面》
下载好的文件按方式 1 运行,不再赘述。
▦ 三. lalserver 使用
✒ 各协议推拉流 url 地址列表
lalserver 启动成功后,就可以开始使用了。
作为流媒体服务,最主要的功能就是流数据转发。比如:
使用 ffmpeg 推 rtmp 流:
ffmpeg -re -i demo.flv -c:a copy -c:v copy -f flv rtmp://127.0.0.1:1935/live/test110
使用 ffplay 拉 rtmp 流播放:
ffplay rtmp://127.0.0.1/live/test110
更多协议见: lalserver 各协议推拉流 url 地址列表
tips:
更多第三方客户端的使用方法见: 常见推拉流客户端信息汇总
✒ lalserver 配置文件
如果你想进一步了解 lalserver 的功能,可以看看: lalserver 配置文件说明
✒ lalserver HTTP 事件和接口
通过 lalserver 提供的丰富的 HTTP 接口,业务方可以在保持 lalserver 独立运行的情况下,使用自身熟悉的语言,轻松定制符合自身逻辑的业务系统。
✒ lalserver 进阶
▦ 四. 重新认识 lal
✒ lal 的三层结构

✦ 其他 demo
lal 项目中,除了/app/lalserver这个比较核心的服务之外,在/app/demo目录下还额外提供了一些小应用,比如推、拉流客户端,以及压测工具,流分析工具,lalserver 集群的调度示例程序等。
这些 demo 你既可以直接使用,又向你演示了 lal 所提供的协议栈如何使用。
了解更多请访问: Demo 简介
✦ 流媒体协议栈库 package/library
lal 中的协议栈都是独立的,与应用分层设计的。并且客户端和服务端的协议栈都有。
业务方可以在自身的应用中集成 lal 的协议栈 package 库。
✦ Golang 通用基础库-naza
lal 将非流媒体特有的通用基础库抽象在一个独立的 github repo naza中。
了解更多请访问: 《 naza github 地址》: https://github.com/q191201771/naza
✒ lalext
站在巨人的肩膀上才能看的更远。lal 在另一个 github repo lalext中,将 lal 的代码与第三方的库结合,实现了更丰富的功能。
✦ WebRTC
rtmp 转 WebRTC 的网关
了解更多请访问: 《 lalext github 地址》: https://github.com/q191201771/lalext
✒ 进行中
-
lal:
- 支持国标 GB28181 协议
- lalserver 插件功能,支持业务方注册自定义协议
- lalext: 使用 lal 库中流传输以及装封装功能的代码,结合 ffmpeg 库中编解码功能的代码,演示 MCU 合流
▦ 五. 联系作者
- 微信:q191201771
- QQ:191201771
- 微信群: 加我微信好友后,告诉我拉你进群
- QQ 群:1090510973
- 邮箱: [email protected]
- lal github 地址: https://github.com/q191201771/lal
- lal 官方文档: https://pengrl.com/lal
作者微信,扫码加好友:

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