一. 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

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