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 451299a3df [fix] 增强兼容性: sdp中fmtp内发生换行时做兼容性处理 3 years ago
.github/workflows patch 3 years ago
app [fix] 修复logic.Option.NotifyHandler首字母小写外部无法设置的问题 3 years ago
conf v0.26.0 -> version.go 3 years ago
pkg [fix] 增强兼容性: sdp中fmtp内发生换行时做兼容性处理 3 years ago
.gitignore [feat] 为rtmp pub推流添加静音AAC音频(可动态检测是否需要添加;配置文件中可开启或关闭这个功能) (#56) 3 years ago
.travis.yml messages: 4 years ago
CHANGELOG.md v0.26.0 3 years ago
CONTRIBUTING.md Create CONTRIBUTING.md 4 years ago
Dockerfile [chore] rename build_linux.sh to build_for_linux.sh 4 years ago
LICENSE 1st 6 years ago
Makefile [chore] rename build_linux.sh to build_for_linux.sh 4 years ago
README.md [chore] min golang version >= 1.14 3 years ago
build.sh [chore] 修复build.sh在linux下获取git tag信息失败报错的问题 3 years ago
build_for_linux.sh [chore] rename build_linux.sh to build_for_linux.sh 4 years ago
gen_release.sh 1. [refactor] 使用新的unique id生成器,提高性能 2. [refactor] 统一各Session接口 4 years ago
gen_tag.sh [chore] 打tag时只允许修改提交version.go的代码 3 years ago
go.mod [chore] min golang version >= 1.14 3 years ago
go.sum [chore] update naza v0.22.0 3 years ago
run_docker.sh [chore] add run_docker.sh 3 years ago
showdeps.sh [fix] 修复使用ffmpeg向lalserver推送rtsp h265流时报错 #55 4 years ago
test.sh [chore] 增强易用性:修改配置文件中的默认配置:hls、flv、mpegts的文件输出地址由绝对路径/tmp修改为相对路径./lal_record 3 years ago

README.md

LAL

Release TravisCI goreportcard wechat qqgroup

中文文档

LAL is an audio/video live streaming broadcast server written in Go. It's sort of like nginx-rtmp-module, but easier to use and with more features, e.g RTMP, RTSP(RTP/RTCP), HLS, HTTP[S]/WebSocket[s]-FLV/TS, H264/H265/AAC, relay, cluster, record, HTTP API/Notify, GOP cache.

And more than a server, act as package and client

Install

There are 2 ways of installing lal.

Prebuilt binaries

Prebuilt binaries for Linux, macOS(Darwin), Windows are available in the lal github releases page. Naturally, using the latest release binary is the recommended way. The naming format is lal_<version>_<platform>.zip, e.g. lal_v0.20.0_linux.zip

LAL could also be built from the source wherever the Go compiler toolchain can run, e.g. for other architectures including arm32 and mipsle which have been tested by the community.

Building from source

First, make sure that Go version >= 1.14

For Linux/macOS user:

$git clone https://github.com/q191201771/lal.git
$cd lal
$make build

Then all binaries go into the ./bin/ directory. That's it.

For an experienced gopher(and Windows user), the only thing you should be concern is that the main function is under the ./app/lalserver directory. So you can also:

$git clone https://github.com/q191201771/lal.git
$cd lal/app/lalserver
$go build

Or using whatever IDEs you'd like.

So far, the only direct and indirect dependency of lal is naza(A basic Go utility library) which is also written by myself. This leads to less dependency or version manager issues.

Using

Running lalserver:

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

Using whatever clients you are familiar with to interact with lalserver.

For instance, publish rtmp stream to lalserver via ffmpeg:

$ffmpeg -re -i demo.flv -c:a copy -c:v copy -f flv rtmp://127.0.0.1:1935/live/test110

Play multi protocol stream from lalserver via ffplay:

$ffplay rtmp://127.0.0.1/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/live/test110.ts

More than a server, act as package and client

Besides a live stream broadcast server which named lalserver precisely, project lal even provides many other applications, e.g. push/pull/remux stream clients, bench tools, examples. Each subdirectory under the ./app/demo directory represents a tiny demo.

Our goals are not only a production server but also a simple package with a well-defined, user-facing API, so that users can build their own applications on it.

LAL stands for Live And Live if you may wonder.

Contact

Bugs, questions, suggestions, anything related or not, feel free to contact me with lal github issues.

License

MIT, see License.