Go 流媒体(直播音视频)服务器 LAL - 开源自荐

2022-03-30 20:04:28 +08:00
 notokoy





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

  • ▦ 一. 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 特性

✒ 协议转换支持情况

见: 附录-协议间转换支持情况

▦ 二. 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

✒ 进行中

▦ 五. 联系作者

作者微信,扫码加好友:

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

4063 次点击
所在节点    Go 编程语言
23 条回复
lesismal
2022-04-01 00:49:06 +08:00
@notokoy

哦对了,slack 跟用英语没什么关系。我不用微信之类的是因为被一些事情恶心到了,所以跑到 slack 上躲清静。一些国人知名开源项目也在 slack 上开频道了,而且 slack 、discord 这些有现成的 github 相关的 app/功能集成,做自己开源项目还是有些便利的
markgor
2022-04-01 13:48:53 +08:00
@notokoy #15 十分感谢详尽的回复。
tairan2006
2022-04-01 18:10:03 +08:00
lal 代码我看过,其实感觉最大的问题就是所有库都是楼主自己封装的。

建议像日志之类的模块,还是用 zap 这种成熟一些的开源库性能更好,没必要全部都自己封装…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/843953

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX