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 0437993a24 提交信息:
* rtmp音频直接转发,不等待视频
* 新增 /pkg/util/assert 用于替换单元测试中的 stretchr/testify/assert
* 补充一些单元测试
6 years ago
app 提交信息: 6 years ago
conf 日志按大小翻滚 6 years ago
pkg 提交信息: 6 years ago
.gitignore 提交信息: 6 years ago
.travis.yml fix cannot use test profile flag with multiple packages 6 years ago
LICENSE 1st 6 years ago
README.md README 6 years ago
build.sh 增加 /app/httpflvpull , http-flv拉流客户端 6 years ago
build_linux.sh 增加 /app/httpflvpull , http-flv拉流客户端 6 years ago
test.sh fix cannot use test profile flag with multiple packages 6 years ago

README.md

Wide
Go语言编写的流媒体 库 / 客户端 / 服务端





        


工程目录说明

简单来说,主要源码在app/pkg/两个目录下,后续我再画些源码架构图。

app/                  ......各种main包的源码文件一个子目录对应一个main包即对应可生成一个可执行文件
|-- lal/              ......[最重要的] 流媒体服务器
|-- flvfile2rtmppush  ......rtmp推流客户端输入是本地flv文件
|-- rtmppull          ......rtmp拉流客户端
|-- httpflvpull       ......http-flv拉流客户端
|-- modflvfile        ......修改本地flv文件
|-- flvfile2es        ......将本地flv文件分离成h264/avc es流文件以及aac es流文件
pkg/                  ......源码包
|-- httpflv/          ......http-flv协议
|-- rtmp/             ......rtmp协议
|-- util/             ......帮助类包
    |-- bele/         ......大小端操作
    |-- bininfo/      ......可执行文件版本等信息
    |-- connstat/     ......连接超时信息
    |-- errors/       ......错误处理
    |-- log/          ......日志
    |-- unique/       ......对象唯一ID
bin/                  ......可执行文件输出目录
conf/                 ......配置文件目录

编译和运行

$go get -u github.com/q191201771/lal
# cd into lal
$./build.sh

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

配置文件说明

{
  "rtmp": {
    "addr": ":19350" // rtmp服务监听的端口
  }
}

roadmap

第一阶段实现rtmp转发服务器

最终目标:

  • 实现一个支持多种流媒体协议比如rtmp, http-flv, hls, rtp/rtcp 等多种底层传输协议比如tcp, udp, srt, quic 等)的服务器
  • 所有协议都以模块化的库形式提供给需要的用户使用
  • 提供多种协议的推流客户端、拉流客户端或者说演示demo

依赖

目前不依赖任何第三方库

文档