golang 流媒体(直播音视频网络传输)服务
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
q191201771 34bd5cf004 commit messages:
- `/app/demo/dispatch`处理`on_update`事件回调
- HTTP Notify增加新事件回调`/on_server_start`
- HTTP API `/api/stat/lal_info` 中增加`server_id`字段
- 增加`gen_tag.sh`,用于打tag
4 years ago
app commit messages: 4 years ago
conf commit messages: 4 years ago
pkg commit messages: 4 years ago
.gitignore messages: 5 years ago
.travis.yml [chore] fix CI: 去除windows和macos平台的编译 5 years ago
CHANGELOG.md 1. [feat] lalserver的session增加存活检查,10秒没有数据会主动断开连接 2. [feat] lalserver的group没有sub拉流时,停止对应的pull回源 3. [feat] HTTP Notify事件回调中,增加`on_rtmp_connect` 4 years ago
CONTRIBUTING.md Create CONTRIBUTING.md 4 years ago
LICENSE 1st 6 years ago
Makefile messages: 5 years ago
README.md 1. [feat] 配置文件中支持配置是否清除过期流的HLS文件 2. [feat] 增加HTTP API接口`/api/ctrl/kick_out_session`,用于踢掉指定的session 3. [feat] HTTP Notify事件回调中的session结构体都增加session id字段 4 years ago
TEST.md messages: 5 years ago
build.sh commit messages: 4 years ago
build_linux.sh 1). flvfile2rtmppush 增加 bininfo 2). flvfile2rtmppush error 时 panic -> log & os exit 3). build_linux.sh 直接调用 build.sh 5 years ago
gen_release.sh commit messages: 4 years ago
gen_tag.sh commit messages: 4 years ago
go.mod 1. [feat] 配置文件中支持配置是否清除过期流的HLS文件 2. [feat] 增加HTTP API接口`/api/ctrl/kick_out_session`,用于踢掉指定的session 3. [feat] HTTP Notify事件回调中的session结构体都增加session id字段 4 years ago
go.sum 1. [feat] 配置文件中支持配置是否清除过期流的HLS文件 2. [feat] 增加HTTP API接口`/api/ctrl/kick_out_session`,用于踢掉指定的session 3. [feat] HTTP Notify事件回调中的session结构体都增加session id字段 4 years ago
showdeps.sh messages: 5 years ago
test.sh [feat] 支持rtsp pub h265 (lalserver支持接收rtsp h265的推流) 4 years ago

README.md

Wide




app/lalserver服务器支持的协议:

- sub rtmp sub http(s)-flv sub http-ts sub hls sub rtsp relay push rtmp
pub rtmp -
pub rtsp - -
relay pull rtmp - .
编码类型 rtmp rtsp hls http(s)-flv http-ts
aac
avc/h264
hevc/h265 - -

表格含义见: 《流媒体传输连接类型之session client, server, pub, sub, push, pull》

app/lalserver功能特性:

  • 全平台。(依托Go语言):支持(linux/macOS/windows)多平台开发、调试、运行。支持交叉编译。生成的可执行文件(无任何库依赖)可独立运行。(开放源码的同时)提供各平台可执行文件,可(免编译)直接运行
  • 高性能。多核多线程扩展
  • 多种直播流封装协议。支持RTMP/RTSP/HTTP-FLV/HTTP-TS/HLS不同封装协议支持相互转换
  • 录制。支持HLS录制(HLS直播与录制可同时开启)
  • HTTPS。支持HTTPS-FLV拉流
  • CORS跨域。支持HTTP-FLVHTTP-TSHLS跨域拉流
  • HTTP文件服务器。比如HLS切片文件可直接播放不需要额外的HTTP文件服务器
  • 多种编码格式。视频支持H264/AVCH265/HEVC音频支持AAC
  • 静态pull回源。用于搭建简易集群
  • 静态push转推。支持转推多个地址。通过静态文件配置
  • HTTP API接口。用于获取服务信息,向服务发送命令。见《lal流媒体服务器的HTTP API接口》
  • HTTP Notify事件回调。见《lal HTTP Notify(or Callback or Webhook)事件回调》
  • 秒开播放。GOP缓冲

除了lalserver还提供一些基于lal开发的demo 《lal/app/demo》

Wide

发行版本日志:《CHANGELOG.md》

编译,运行,体验功能

编译

方式1从源码自行编译

$export GO111MODULE=on && export GOPROXY=https://goproxy.cn,https://goproxy.io,direct
$make

方式2直接下载编译好的二进制可执行文件

点我打开《github lal最新release版本页面》下载对应平台编译好的二进制可执行文件的zip压缩包。

运行

$./bin/lalserver -c conf/lalserver.conf.json

体验功能

快速体验lalserver服务器见 《常见推拉流客户端软件的使用方式》

lalserver详细配置见 《配置注释文档》

源码框架


简单来说,源码在pkg/app/lalserver/app/demo/三个目录下。

  • pkg/存放各package包供本repo的程序以及其他业务方使用
  • app/lalserver基于lal编写的一个通用流媒体服务器程序入口
  • app/demo/:存放各种基于lal/pkg开发的小程序(小工具),一个子目录是一个程序,详情见各源码文件中头部的说明

目前唯一的第三方依赖我自己写的Go基础库 github.com/q191201771/naza

联系我

  • 个人微信号: q191201771
  • 个人QQ号 191201771
  • 微信群: 加我微信好友后,告诉我拉你进群
  • QQ群 1090510973

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

目前lal正在收集新一轮需求中。

并且lal也十分欢迎开源贡献者的加入。提PR前请先阅读《yoko版本PR规范》

性能测试,测试过的第三方客户端

《TEST.md》

项目star趋势图

觉得项目还不错就点个star支持一下吧 :)

Stargazers over time