{"id":13548920,"url":"https://github.com/q191201771/lal","last_synced_at":"2025-04-23T18:53:31.898Z","repository":{"id":37549679,"uuid":"180726796","full_name":"q191201771/lal","owner":"q191201771","description":"🔥 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. 直播","archived":false,"fork":false,"pushed_at":"2024-10-23T01:59:16.000Z","size":8553,"stargazers_count":2900,"open_issues_count":35,"forks_count":476,"subscribers_count":62,"default_branch":"master","last_synced_at":"2025-04-14T05:52:45.803Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://pengrl.com/lal","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/q191201771.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-11T06:15:33.000Z","updated_at":"2025-04-13T15:35:08.000Z","dependencies_parsed_at":"2023-11-13T07:23:41.846Z","dependency_job_id":"a6c6c1dd-0f9a-4461-bd05-d257ffc4a66f","html_url":"https://github.com/q191201771/lal","commit_stats":{"total_commits":897,"total_committers":43,"mean_commits":20.86046511627907,"dds":"0.19955406911928653","last_synced_commit":"d7b0aaf6cf0e62b275fb6f06eadb8f5f41d203fa"},"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/q191201771%2Flal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/q191201771%2Flal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/q191201771%2Flal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/q191201771%2Flal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/q191201771","download_url":"https://codeload.github.com/q191201771/lal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250496568,"owners_count":21440227,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-08-01T12:01:16.007Z","updated_at":"2025-04-23T18:53:31.876Z","avatar_url":"https://github.com/q191201771.png","language":"Go","funding_links":[],"categories":["开源类库","Go","Open source library","HarmonyOS"],"sub_categories":["视频","Video","Windows Manager"],"readme":"# LAL\n\n[![Platform](https://img.shields.io/badge/platform-linux%20%7C%20windows%20%7C%20macos-green.svg)](https://github.com/q191201771/lal)\n[![Release](https://img.shields.io/github/tag/q191201771/lal.svg?label=release)](https://github.com/q191201771/lal/releases)\n[![CI](https://github.com/q191201771/lal/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/q191201771/lal/actions/workflows/ci.yml)\n[![goreportcard](https://goreportcard.com/badge/github.com/q191201771/lal)](https://goreportcard.com/report/github.com/q191201771/lal)\n![wechat](https://img.shields.io/:微信-q191201771-blue.svg)\n![qqgroup](https://img.shields.io/:QQ群-635846365-blue.svg)\n\n[中文文档](https://pengrl.com/lal/#/)\n\nLAL 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.\n\n## Install\n\nThere are 3 ways of installing lal:\n\n### 1. Building from source\n\nFirst, make sure that Go version \u003e= 1.18\n\nFor Linux/macOS user:\n\n```shell\n$git clone https://github.com/q191201771/lal.git\n$cd lal\n$make build\n```\n\nThen all binaries go into the `./bin/` directory. That's it.\n\nFor 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:\n\n```shell\n$git clone https://github.com/q191201771/lal.git\n$cd lal/app/lalserver\n$go build\n```\n\nOr using whatever IDEs you'd like.\n\nSo 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.\n\n### 2. Prebuilt binaries\n\nPrebuilt 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_\u003cversion\u003e_\u003cplatform\u003e.zip`, e.g. `lal_v0.20.0_linux.zip`\n\nLAL 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.\n\n### 3. Docker\n\noption 1, using prebuilt image at docker hub, so just run:\n\n```\n$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\n```\n\noption 2, build from local source with Dockerfile, and run:\n\n```\n$git clone https://github.com/q191201771/lal.git\n$cd lal\n$docker build -t lal .\n$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\n```\n\noption 3, Use docker-compose\n\nCreate a `docker-compose.yml` file with the following content:\n\n```yaml\nversion: \"3.9\"\nservices:\n    lalserver:\n    image: q191201771/lal\n    container_name: lalserver\n    ports:\n        - \"1935:1935\"\n        - \"8080:8080\"\n        - \"4433:4433\"\n        - \"5544:5544\"\n        - \"8083:8083\"\n        - \"8084:8084\"\n        - \"30000-30100:30000-30100/udp\"\n    command: /lal/bin/lalserver -c /lal/conf/lalserver.conf.json\n```\n\nRun the following command to start the service:\n\n```bash\ndocker-compose up\n```\n\nOr run it in the background with:\n\n```bash\ndocker-compose up -d\n```\n\n## Using\n\nRunning lalserver:\n\n```\n$./bin/lalserver -c ./conf/lalserver.conf.json\n```\n\nUsing whatever clients you are familiar with to interact with lalserver.\n\nFor instance, publish rtmp stream to lalserver via ffmpeg:\n\n```shell\n$ffmpeg -re -i demo.flv -c:a copy -c:v copy -f flv rtmp://127.0.0.1:1935/live/test110\n```\n\nPlay multi protocol stream from lalserver via ffplay:\n\n```shell\n$ffplay rtmp://127.0.0.1/live/test110\n$ffplay rtsp://127.0.0.1:5544/live/test110\n$ffplay http://127.0.0.1:8080/live/test110.flv\n$ffplay http://127.0.0.1:8080/hls/test110/playlist.m3u8\n$ffplay http://127.0.0.1:8080/hls/test110/record.m3u8\n$ffplay http://127.0.0.1:8080/hls/test110.m3u8\n$ffplay http://127.0.0.1:8080/live/test110.ts\n```\n\n## More than a server, act as package and client\n\nBesides 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.\n\nOur 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.\n\n`LAL` stands for `Live And Live` if you may wonder.\n\n\n## Contact\n\nBugs, questions, suggestions, anything related or not, feel free to contact me with [lal github issues](https://github.com/q191201771/lal/issues).\n\n## License\n\nMIT, see [License](https://github.com/q191201771/lal/blob/master/LICENSE).\n\nthis note updated by yoko, 202404\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fq191201771%2Flal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fq191201771%2Flal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fq191201771%2Flal/lists"}