Golang开源流媒体服务器(RTMP/RTSP/HLS/FLV等协议)

lal是开源直播流媒体网络传输项目,主要由三部分组成:

lalserver:流媒体转发服务器。类似于nginx-rtmp-module等服务,但支持更多的协议,提供更丰富的功能。

demo:一些小应用,比如推、拉流客户端,压测工具,流分析工具,调度示例程序等。类似于ffmpeg、ffprobe等应用。

pkg:流媒体协议库。类似于ffmpeg的libavformat等库。

lal github地址: https://github.com/q191201771/lal

以下是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支持更多的协议,提供更丰富的功能。

1 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 rtmp
pub rtmp              
pub rtsp              
relay pull rtmp           X   .  

各封装协议对编码协议的支持情况

编码类型 rtmp rtsp hls flv mpegts
aac            
avc/h264            
hevc/h265            

录制文件的类型

录制类型 hls flv mpegts
pub rtmp        
pub rtsp        

表格含义见:

注意,如果只是rtsp流(确切的说是rtp包)相互间转发,不涉及到转封装成其他格式,理论上其他编码类型也支持。

3 lalserver 特性图

lal特性图

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgygzj.html