链氪巴士
  1. 首页
  2. 站点导航
  3. 文章
  4. 快讯
  5. 软件
  6. 书刊
  7. 关于

q191201771/lal:Go语言编写的音视频直播流处理库

q191201771/lal是一个用Go编写的音频/视频直播流广播服务器。它具有多种功能,如支持RTMP、RTSP等多种协议,还能进行relay、cluster、record等操作。有多种安装方式,包括从源代码构建、使用预构建二进制文件和Docker方式。同时它不仅是服务器,还提...

访问官网 →

【Github】项目名:q191201771/lal:Go语言编写的音视频直播流处理库

一、项目简介

LAL是一个用Go编写的音频/视频直播流广播服务器。它类似于nginx – rtmp – module,但更易于使用且功能更多,例如支持RTMP、RTSP(RTP/RTCP)、HLS、HTTP[S]/WebSocket – FLV/TS、GB28181、H264/H265/AAC/G711/OPUS、relay、cluster、record、HTTP API/Notify/WebUI、GOPcache等功能。

二、项目安装方式

1. 从源代码构建

首先确保Go版本>= 1.18。对于Linux/macOS用户,执行以下命令: $ git clone https://github.com/q191201771/lal.git $ cd lal $ make build 然后所有二进制文件将进入./bin/目录。对于有经验的Go开发者(以及Windows用户),只需关注主函数在./app/lalserver目录下,也可以执行: $ git clone https://github.com/q191201771/lal.git $ cd lal/app/lalserver $ go build 或者使用任何你喜欢的IDE。到目前为止,LAL唯一的直接和间接依赖是naza(一个基本的Go实用库,也是作者自己编写的),这减少了依赖或版本管理问题。

2. 使用预构建二进制文件

在LAL的GitHub版本页面可获取Linux、macOS(Darwin)、Windows的预构建二进制文件。推荐使用最新版本的二进制文件,命名格式为lal__.zip,例如lal_v0.20.0_linux.zip。只要Go编译器工具链能运行的地方,LAL都可以从源代码构建,例如社区已经测试过的arm32和mipsle等其他架构。

3. Docker方式

有三种Docker使用方式: 选项1:使用dockerhub上的预构建镜像,只需运行: $ 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 选项2:使用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 选项3:使用docker – compose 创建一个docker – compose.yml文件,内容如下: version: “3.9” services: lalserver: image: q191201771/lal container_name: lalserver ports: – “1935:1935” – “8080:8080” – “4433:4433” – “5544:5544” – “8083:8083” – “8084:8084” – “30000 – 30100:30000 – 30100/udp” command: /lal/bin/lalserver -c /lal/conf/lalserver.conf.json 运行以下命令启动服务: docker – compose up 或者在后台运行: docker – compose up -d

三、项目使用示例

运行lalserver: $./bin/lalserver -c./conf/lalserver.conf.json 使用你熟悉的客户端与lalserver交互,例如: 通过ffmpeg向lalserver发布rtmp流: $ ffmpeg -re -i demo.flv -c:a copy -c:v copy -f flv rtmp://127.0.0.1:1935/live/test110 通过ffplay从lalserver播放多协议流: $ ffplay rtmp://127.0.0.1/live/test110 $ ffplay rtsp://127.0.0.1:5544/live/test110 $ ffplay http://127.0.0.1:8080/live/test110.flv $ ffplay http://127.0.0.1:8080/hls/test110/playlist.m3u8 $ ffplay http://127.0.0.1:8080/hls/test110/record.m3u8 $ ffplay http://127.0.0.1:8080/hls/test110.m3u8 $ ffplay http://127.0.0.1:8080/live/test110.ts

四、项目总结

LAL不仅仅是一个服务器,还可以作为包和客户端。除了名为lalserver的直播流广播服务器之外,项目LAL甚至还提供许多其他应用程序,例如推/拉/重混流客户端、基准测试工具、示例等。我们的目标不仅是提供一个生产服务器,而且是一个具有定义良好、面向用户的API的简单包,以便用户可以在其上构建自己的应用程序。如果你有任何关于该项目的问题、建议等,欢迎通过lal的GitHub issues与作者联系。期待大家在评论区留言讨论这个项目。

项目地址

GitHub链接直达