Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/q191201771/lal
🔥 Golang audio/video live streaming lib/client/server. support RTMP, RTSP(RTP/RTCP), HLS, HTTP[S]/WebSocket-FLV/TS, GB28181, H264/H265/AAC/G711/OPUS, relay, cluster, record, HTTP Notify/API/UI. ç›´æ’
https://github.com/q191201771/lal
aac flash flv golang golang-rtmp h264-avc h265-hevc hls http-ts https-flv lal live-media-server livestream m3u8 mpegts rtcp rtmp rtp rtsp video
Last synced: 5 days ago
JSON representation
🔥 Golang audio/video live streaming lib/client/server. support RTMP, RTSP(RTP/RTCP), HLS, HTTP[S]/WebSocket-FLV/TS, GB28181, H264/H265/AAC/G711/OPUS, relay, cluster, record, HTTP Notify/API/UI. ç›´æ’
- Host: GitHub
- URL: https://github.com/q191201771/lal
- Owner: q191201771
- License: mit
- Created: 2019-04-11T06:15:33.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-08-20T08:09:42.000Z (3 months ago)
- Last Synced: 2024-08-20T10:11:25.600Z (3 months ago)
- Topics: aac, flash, flv, golang, golang-rtmp, h264-avc, h265-hevc, hls, http-ts, https-flv, lal, live-media-server, livestream, m3u8, mpegts, rtcp, rtmp, rtp, rtsp, video
- Language: Go
- Homepage: https://pengrl.com/lal
- Size: 8.28 MB
- Stars: 2,734
- Watchers: 63
- Forks: 462
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- my-awesome - q191201771/lal - rtmp,h264-avc,h265-hevc,hls,http-ts,https-flv,lal,live-media-server,livestream,m3u8,mpegts,rtcp,rtmp,rtp,rtsp,video pushed_at:2024-10 star:2.8k fork:0.5k 🔥 Golang audio/video live streaming lib/client/server. support RTMP, RTSP(RTP/RTCP), HLS, HTTP[S]/WebSocket-FLV/TS, GB28181, H264/H265/AAC/G711/OPUS, relay, cluster, record, HTTP Notify/API/UI. ç›´æ’ (Go)
- go-awesome - lal - live streaming network transmission server (Open source library / Video)
README
# LAL
[![Platform](https://img.shields.io/badge/platform-linux%20%7C%20windows%20%7C%20macos-green.svg)](https://github.com/q191201771/lal)
[![Release](https://img.shields.io/github/tag/q191201771/lal.svg?label=release)](https://github.com/q191201771/lal/releases)
[![CI](https://github.com/q191201771/lal/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/q191201771/lal/actions/workflows/ci.yml)
[![goreportcard](https://goreportcard.com/badge/github.com/q191201771/lal)](https://goreportcard.com/report/github.com/q191201771/lal)
![wechat](https://img.shields.io/:微信-q191201771-blue.svg)
![qqgroup](https://img.shields.io/:QQ群-635846365-blue.svg)[ä¸æ–‡æ–‡æ¡£](https://pengrl.com/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/OPUS, 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.18
For Linux/macOS user:
```shell
$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:
```shell
$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)](https://github.com/q191201771/lal.git) 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](https://github.com/q191201771/lal/releases). Naturally, using [the latest release binary](https://github.com/q191201771/lal/releases/latest) is the recommended way. The naming format is `lal__.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:
```
$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
```option 2, build from local source with Dockerfile, and run:
```
$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
```option 3, Use docker-compose
Create a `docker-compose.yml` file with the following content:
```yaml
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
```Run the following command to start the service:
```bash
docker-compose up
```Or run it in the background with:
```bash
docker-compose up -d
```## 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:
```shell
$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:
```shell
$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
```## 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](https://github.com/q191201771/lal/issues).
## License
MIT, see [License](https://github.com/q191201771/lal/blob/master/LICENSE).
this note updated by yoko, 202404