forked from gwuhaolin/livego
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from gwuhaolin/master
同步fork源
- Loading branch information
Showing
54 changed files
with
1,533 additions
and
714 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
name: release | ||
name: Release | ||
on: | ||
release: | ||
types: [published] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
# Created by .ignore support plugin (hsz.mobi) | ||
.idea | ||
dist | ||
.vscode | ||
tmp | ||
vendor | ||
livego |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# Changelog | ||
All notable changes to this project will be documented in this file. | ||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | ||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||
|
||
## [Unreleased] | ||
|
||
### Added | ||
- JSON Web Token support. | ||
``` json | ||
// livego.json | ||
{ | ||
"jwt": { | ||
"secret": "testing", | ||
"algorithm": "HS256" | ||
}, | ||
"server": [ | ||
{ | ||
"appname": "live", | ||
"live": true, | ||
"hls": true | ||
} | ||
] | ||
} | ||
``` | ||
- Use redis for store room keys | ||
``` json | ||
// livego.json | ||
{ | ||
"redis_addr": "localhost:6379", | ||
"server": [ | ||
{ | ||
"appname": "live", | ||
"live": true, | ||
"hls": true | ||
} | ||
] | ||
} | ||
``` | ||
- Makefile | ||
|
||
### Changed | ||
- Show `players`. | ||
- Show `stream_id`. | ||
- Deleted keys saved in physical file, now the keys are in cached using `go-cache` by default. | ||
- Using `logrus` like log system. | ||
- Using method `.Get(queryParamName)` to get an url query param. | ||
- Replaced `errors.New(...)` to `fmt.Errorf(...)`. | ||
- Replaced types string on config params `liveon` and `hlson` to booleans `live: true/false` and `hls: true/false` | ||
- Using viper for config, allow use file, cloud providers, environment vars or flags. | ||
- Using yaml config by default. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,14 @@ | ||
FROM golang:latest as builder | ||
WORKDIR /app | ||
ENV GOPROXY https://goproxy.io | ||
COPY go.mod go.sum ./ | ||
RUN go mod download | ||
COPY . . | ||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o livego ./ | ||
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o livego . | ||
|
||
FROM alpine:latest | ||
LABEL maintainer="gwuhaolin <[email protected]>" | ||
RUN mkdir -p /app/config | ||
WORKDIR /app | ||
ENV RTMP_PORT 1935 | ||
ENV HTTP_FLV_PORT 7001 | ||
ENV HLS_PORT 7002 | ||
|
@@ -16,4 +18,4 @@ EXPOSE ${RTMP_PORT} | |
EXPOSE ${HTTP_FLV_PORT} | ||
EXPOSE ${HLS_PORT} | ||
EXPOSE ${HTTP_OPERATION_PORT} | ||
CMD ./livego | ||
ENTRYPOINT ["./livego"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
GOCMD ?= go | ||
GOBUILD = $(GOCMD) build | ||
GOCLEAN = $(GOCMD) clean | ||
GOTEST = $(GOCMD) test | ||
GOGET = $(GOCMD) get | ||
BINARY_NAME = livego | ||
BINARY_UNIX = $(BINARY_NAME)_unix | ||
|
||
DOCKER_ACC ?= gwuhaolin | ||
DOCKER_REPO ?= livego | ||
|
||
TAG ?= $(shell git describe --tags --abbrev=0 2>/dev/null) | ||
|
||
default: all | ||
|
||
all: test build dockerize | ||
build: | ||
$(GOBUILD) -o $(BINARY_NAME) -v -ldflags="-X main.VERSION=$(TAG)" | ||
|
||
test: | ||
$(GOTEST) -v ./... | ||
|
||
clean: | ||
$(GOCLEAN) | ||
rm -f $(BINARY_NAME) | ||
rm -f $(BINARY_UNIX) | ||
|
||
run: build | ||
./$(BINARY_NAME) | ||
|
||
build-linux: | ||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(BINARY_UNIX) -v | ||
|
||
dockerize: | ||
docker build -t $(DOCKER_ACC)/$(DOCKER_REPO):$(TAG) . | ||
docker push $(DOCKER_ACC)/$(DOCKER_REPO):$(TAG) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,67 @@ | ||
# livego | ||
简单高效的直播服务器: | ||
- 安装和使用非常简单; | ||
- 纯 Golang 编写,性能高,跨平台; | ||
- 支持常用的传输协议、文件格式、编码格式; | ||
<p align='center'> | ||
<img src='./logo.png' width='200px' height='80px'/> | ||
</p> | ||
|
||
#### 支持的传输协议 | ||
[中文](./README_cn.md) | ||
|
||
[![Test](https://github.com/gwuhaolin/livego/workflows/Test/badge.svg)](https://github.com/gwuhaolin/livego/actions?query=workflow%3ATest) | ||
[![Release](https://github.com/gwuhaolin/livego/workflows/Release/badge.svg)](https://github.com/gwuhaolin/livego/actions?query=workflow%3ARelease) | ||
|
||
Simple and efficient live broadcast server: | ||
- Very simple to install and use; | ||
- Pure Golang, high performance, and cross-platform; | ||
- Supports commonly used transmission protocols, file formats, and encoding formats; | ||
|
||
#### Supported transport protocols | ||
- RTMP | ||
- AMF | ||
- HLS | ||
- HTTP-FLV | ||
|
||
#### 支持的容器格式 | ||
#### Supported container formats | ||
- FLV | ||
- TS | ||
|
||
#### 支持的编码格式 | ||
#### Supported encoding formats | ||
- H264 | ||
- AAC | ||
- MP3 | ||
|
||
## 安装 | ||
直接下载编译好的[二进制文件](https://github.com/gwuhaolin/livego/releases)后,在命令行中执行。 | ||
|
||
#### 从 Docker 启动 | ||
执行`docker run -p 1935:1935 -p 7001:7001 -p 7002:7002 -d --name livego gwuhaolin/livego`启动 | ||
## Installation | ||
After directly downloading the compiled [binary file](https://github.com/gwuhaolin/livego/releases), execute it on the command line. | ||
|
||
#### 从源码编译 | ||
1. 下载源码 `git clone https://github.com/gwuhaolin/livego.git` | ||
2. 去 livego 目录中 执行 `go build` | ||
#### Boot from Docker | ||
Run `docker run -p 1935:1935 -p 7001:7001 -p 7002:7002 -p 8090:8090 -d gwuhaolin/livego` to start | ||
|
||
## 使用 | ||
2. 启动服务:执行 `livego` 二进制文件启动 livego 服务; | ||
3. 上行推流:通过 `RTMP` 协议把视频流推送到 `rtmp://localhost:1935/live/movie`,例如使用 `ffmpeg -re -i demo.flv -c copy -f flv rtmp://localhost:1935/live/movie` 推送; | ||
4. 下行播放:支持以下三种播放协议,播放地址如下: | ||
- `RTMP`:`rtmp://localhost:1935/live/movie` | ||
- `FLV`:`http://127.0.0.1:7001/live/movie.flv` | ||
- `HLS`:`http://127.0.0.1:7002/live/movie.m3u8` | ||
#### Compile from source | ||
1. Download the source code `git clone https://github.com/gwuhaolin/livego.git` | ||
2. Go to the livego directory and execute `go build` or `make build` | ||
|
||
## Use | ||
1. Start the service: execute the livego binary file or `make run` to start the livego service; | ||
2. Get a channelkey(used for push the video stream) from `http://localhost:8090/control/get?room=movie` and copy data like your channelkey. | ||
3. Upstream push: Push the video stream to `rtmp://localhost:1935/{appname}/{channelkey}` through the` RTMP` protocol(default appname is `live`), for example, use `ffmpeg -re -i demo.flv -c copy -f flv rtmp://localhost:1935/{appname}/{channelkey}` push([download demo flv](https://s3plus.meituan.net/v1/mss_7e425c4d9dcb4bb4918bbfa2779e6de1/mpack/default/demo.flv)); | ||
4. Downstream playback: The following three playback protocols are supported, and the playback address is as follows: | ||
- `RTMP`:`rtmp://localhost:1935/{appname}/movie` | ||
- `FLV`:`http://127.0.0.1:7001/{appname}/movie.flv` | ||
- `HLS`:`http://127.0.0.1:7002/{appname}/movie.m3u8` | ||
|
||
all options: | ||
```bash | ||
./livego -h | ||
Usage of ./livego: | ||
--api_addr string HTTP manage interface server listen address (default ":8090") | ||
--config_file string configure filename (default "livego.yaml") | ||
--flv_dir string output flv file at flvDir/APP/KEY_TIME.flv (default "tmp") | ||
--gop_num int gop num (default 1) | ||
--hls_addr string HLS server listen address (default ":7002") | ||
--hls_keep_after_end Maintains the HLS after the stream ends | ||
--httpflv_addr string HTTP-FLV server listen address (default ":7001") | ||
--level string Log level (default "info") | ||
--read_timeout int read time out (default 10) | ||
--rtmp_addr string RTMP server listen address | ||
``` | ||
|
||
### [和 flv.js 搭配使用](https://github.com/gwuhaolin/blog/issues/3) | ||
### [Use with flv.js](https://github.com/gwuhaolin/blog/issues/3) | ||
|
||
对Golang感兴趣?请看[Golang 中文学习资料汇总](http://go.wuhaolin.cn/) | ||
Interested in Golang? Please see [Golang Chinese Learning Materials Summary](http://go.wuhaolin.cn/) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
<p align='center'> | ||
<img src='./logo.png' width='200px' height='80px'/> | ||
</p> | ||
|
||
[![Test](https://github.com/gwuhaolin/livego/workflows/Test/badge.svg)](https://github.com/gwuhaolin/livego/actions?query=workflow%3ATest) | ||
[![Release](https://github.com/gwuhaolin/livego/workflows/Release/badge.svg)](https://github.com/gwuhaolin/livego/actions?query=workflow%3ARelease) | ||
|
||
简单高效的直播服务器: | ||
- 安装和使用非常简单; | ||
- 纯 Golang 编写,性能高,跨平台; | ||
- 支持常用的传输协议、文件格式、编码格式; | ||
|
||
#### 支持的传输协议 | ||
- RTMP | ||
- AMF | ||
- HLS | ||
- HTTP-FLV | ||
|
||
#### 支持的容器格式 | ||
- FLV | ||
- TS | ||
|
||
#### 支持的编码格式 | ||
- H264 | ||
- AAC | ||
- MP3 | ||
|
||
## 安装 | ||
直接下载编译好的[二进制文件](https://github.com/gwuhaolin/livego/releases)后,在命令行中执行。 | ||
|
||
#### 从 Docker 启动 | ||
执行`docker run -p 1935:1935 -p 7001:7001 -p 7002:7002 -p 8090:8090 -d gwuhaolin/livego`启动 | ||
|
||
#### 从源码编译 | ||
1. 下载源码 `git clone https://github.com/gwuhaolin/livego.git` | ||
2. 去 livego 目录中 执行 `go build` | ||
|
||
## 使用 | ||
1. 启动服务:执行 `livego` 二进制文件启动 livego 服务; | ||
2. 访问 `http://localhost:8090/control/get?room=movie` 获取一个房间的 channelkey(channelkey用于推流,movie用于播放). | ||
3. 推流: 通过`RTMP`协议推送视频流到地址 `rtmp://localhost:1935/{appname}/{channelkey}` (appname默认是`live`), 例如: 使用 `ffmpeg -re -i demo.flv -c copy -f flv rtmp://localhost:1935/{appname}/{channelkey}` 推流([下载demo flv](https://s3plus.meituan.net/v1/mss_7e425c4d9dcb4bb4918bbfa2779e6de1/mpack/default/demo.flv)); | ||
4. 播放: 支持多种播放协议,播放地址如下: | ||
- `RTMP`:`rtmp://localhost:1935/{appname}/movie` | ||
- `FLV`:`http://127.0.0.1:7001/{appname}/movie.flv` | ||
- `HLS`:`http://127.0.0.1:7002/{appname}/movie.m3u8` | ||
|
||
所有配置项: | ||
```bash | ||
./livego -h | ||
Usage of ./livego: | ||
--api_addr string HTTP管理访问监听地址 (default ":8090") | ||
--config_file string 配置文件路径 (默认 "livego.yaml") | ||
--flv_dir string 输出的 flv 文件路径 flvDir/APP/KEY_TIME.flv (默认 "tmp") | ||
--gop_num int gop 数量 (default 1) | ||
--hls_addr string HLS 服务监听地址 (默认 ":7002") | ||
--hls_keep_after_end Maintains the HLS after the stream ends | ||
--httpflv_addr string HTTP-FLV server listen address (默认 ":7001") | ||
--level string 日志等级 (默认 "info") | ||
--read_timeout int 读超时时间 (默认 10) | ||
--rtmp_addr string RTMP 服务监听地址 (默认 ":1935") | ||
--write_timeout int 写超时时间 (默认 10) | ||
``` | ||
|
||
### [和 flv.js 搭配使用](https://github.com/gwuhaolin/blog/issues/3) | ||
|
||
对Golang感兴趣?请看[Golang 中文学习资料汇总](http://go.wuhaolin.cn/) | ||
|
Oops, something went wrong.