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, GB28181, H264/H265/AAC/G711, relay, cluster, record, HTTP API/Notify/WebUI, GOP cache.
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:
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.
2. 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.
3. Docker
option 1, using prebuilt image at docker hub, so just run:
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.
LAL
中文文档
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, GB28181, H264/H265/AAC/G711, relay, cluster, record, HTTP API/Notify/WebUI, GOP cache.Install
There are 3 ways of installing lal:
1. Building from source
First, make sure that Go version >= 1.16
For Linux/macOS user:
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: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.
2. 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.
3. Docker
option 1, using prebuilt image at docker hub, so just run:
option 2, build from local source with Dockerfile, and run:
Using
Running lalserver:
Using whatever clients you are familiar with to interact with lalserver.
For instance, publish rtmp stream to lalserver via ffmpeg:
Play multi protocol stream from lalserver via ffplay:
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 forLive 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.
this note updated by yoko, 202303