lal是开源直播流媒体网络传输项目,主要由三部分组成:
lalserver:流媒体转发服务器。类似于nginx-rtmp-module等服务,但支持更多的协议,提供更丰富的功能。
demo:一些小应用,比如推、拉流客户端,压测工具,流分析工具,调度示例程序等。类似于ffmpeg、ffprobe等应用。
pkg:流媒体协议库。类似于ffmpeg的libavformat等库。
lal github地址: https://github.com/q191201771/lal
以下是lal源码架构图,从中你可以大致了解lal是如何划分功能层次的:
二. lalserver 快速开始 1 编译方式1,从源码自行编译
$git clone https://github.com/q191201771/lal.git $cd lal $export GO111MODULE=on && export GOPROXY=https://goproxy.cn,https://goproxy.io,direct $make或者使用GoLand等IDE编译。
如果没有安装Go编译器,可参考《CentOS或macOS安装GoLang》,windows操作系统可自行上网搜索教程。
方式2,直接下载编译好的二进制可执行文件
点我打开《github lal最新release版本页面》,可下载linux/macos/windows平台编译好的lal二进制可执行文件(zip压缩包形式)。
方式3,使用docker
docker又分为两种方式,一种是直接从Docker Hub下载已经编译好的镜像并运行:
$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另一种是根据本地代码和Dockerfile文件生成镜像并运行:
$git clone https://github.com/q191201771/lal.git $cd lal $docker build -t 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 lal /lal/bin/lalserver -c /lal/conf/lalserver.conf.json 2 运行 $./bin/lalserver -c conf/lalserver.conf.json 3 体验功能lalserver服务启动后,就可以进行推拉流了。
lal github地址: https://github.com/q191201771/lal
三. lalserver 简介lalserver是流媒体转发服务。类似于nginx-rtmp-module服务,简单来说,这类服务的核心功能是将推流客户端发送过来的音视频数据转发给对应的拉流客户端。
但lalserver支持更多的协议,提供更丰富的功能。
全平台
高性能
多种直播流封装协议
多种编码格式
多种格式录制
HTTPS
WebSocket/WebSockets
HLS
RTSP。支持over TCP(interleaved模式)。支持basic/digest auth验证。支持GET_PARAMETER
RTMP
HTTP API接口
HTTP Notify事件回调
支持多种方式鉴权
分布式集群
静态pull回源
静态push转推
CORS跨域
HTTP文件服务器
监听端口复用
秒开播放
2 lalserver 支持的协议封装协议间转换的支持情况
转封装类型 sub rtmp sub http[s]/websocket[s]-flv sub http[s]/websocket[s]-ts sub hls sub rtsp relay push rtmppub rtmp ✔ ✔ ✔ ✔ ✔ ✔
pub rtsp ✔ ✔ ✔ ✔ ✔ ✔
relay pull rtmp ✔ ✔ ✔ ✔ X .
各封装协议对编码协议的支持情况
编码类型 rtmp rtsp hls flv mpegtsaac ✔ ✔ ✔ ✔ ✔
avc/h264 ✔ ✔ ✔ ✔ ✔
hevc/h265 ✔ ✔ ✔ ✔ ✔
录制文件的类型
录制类型 hls flv mpegtspub rtmp ✔ ✔ ✔
pub rtsp ✔ ✔ ✔
表格含义见:
注意,如果只是rtsp流(确切的说是rtp包)相互间转发,不涉及到转封装成其他格式,理论上其他编码类型也支持。
3 lalserver 特性图