一. lal 简介
lal是开源直播流媒体网络传输项目,主要由三部分组成:
nginx-rtmp-module
以下是lal源码架构图,从中你可以大致了解lal是如何划分功能层次的:
二. lalserver 快速开始
1 编译
方式1,从源码自行编译
或者使用GoLand等IDE编译。
如果没有安装Go编译器,可参考《CentOS或macOS安装GoLang》,windows操作系统可自行上网搜索教程。
方式2,直接下载编译好的二进制可执行文件
点我打开《github lal最新release版本页面》,可下载linux/macos/windows平台编译好的lal二进制可执行文件(zip压缩包形式)。
方式3,使用docker
docker又分为两种方式,一种是直接从Docker Hub下载已经编译好的镜像并运行:
另一种是根据本地代码和Dockerfile文件生成镜像并运行:
2 运行
3 体验功能
lalserver服务启动后,就可以进行推拉流了。
三. lalserver 简介
nginx-rtmp-module
1 lalserver 特性
GET_PARAMETER
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 特性图
四. lalserver 各协议推拉流url地址列表
http://127.0.0.1:8080/live/test110.flvhttps://127.0.0.1:4433/live/test110.flvhttp://127.0.0.1:8080/hls/test110.m3u8http://127.0.0.1:8080/hls/test110/playlist.m3u8http://127.0.0.1:8080/hls/test110/record.m3u8http://127.0.0.1:8080/live/test110.tshttps://127.0.0.1:4433/live/test110.ts
关于端口
http://127.0.0.1:80/live/test110.flvhttp://127.0.0.1/live/test110.flv
如果你不熟悉推拉流客户端该如何配合使用,可参考 常见推拉流客户端信息汇总
五. lalserver 配置文件说明
六. Demo 简介
/app/demo
| demo | 说明 |
| - | - |
| pushrtmp | RTMP推流客户端;压力测试工具 |
| pullrtmp | RTMP拉流客户端;压力测试工具 |
| pullrtmp2pushrtmp | 从远端服务器拉取RTMP流,并使用RTMP转推出去,支持1对n转推 |
| pullrtmp2pushrtsp | 从远端服务器拉取RTMP流,并使用RTSP转推出去 |
| pullrtmp2hls | 从远端服务器拉取RTMP流,存储为本地m3u8+ts文件 |
| pullhttpflv | HTTP-FLV拉流客户端 |
| pullrtsp | RTSP拉流客户端 |
| pullrtsp2pushrtsp | 从远端服务器拉取RTSP流,并使用RTSP转推出去 |
| pullrtsp2pushrtmp | 从远端服务器拉取RTSP流,并使用RTMP转推出去 |
| --- | --- | | benchrtmpconnect | 对rtmp做并发建连压力测试 |
| calcrtmpdelay | 测试rtmp服务器收发数据的延时 |
| analyseflv | 从远端服务器拉取HTTP-FLV流,并进行分析 |
| dispatch | 简单演示如何实现一个简单的调度服务,使得多个lalserver节点可以组成一个集群 |
| flvfile2es | 将本地FLV文件分离成H264/AVC和AAC的ES流文件 |
| modflvfile | 修改flv文件的一些信息(比如某些tag的时间戳)后另存文件 |
(更具体的功能参加各源码文件的头部说明)
七. 联系作者
- 邮箱:191201771@qq.com
- QQ: 191201771
- 微信群: 加我微信好友后,告诉我拉你进群
- QQ群: 1090510973
欢迎任何技术和非技术的交流。