mirror of https://github.com/q191201771/lal.git
aacflashflvgolanggolang-rtmph264-avch265-hevchlshttp-tshttps-flvlallive-media-serverlivestreamm3u8mpegtsrtcprtmprtprtspvideo
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.
c737f95fa0 | 6 years ago | |
---|---|---|
app | 6 years ago | |
conf | 6 years ago | |
pkg | 6 years ago | |
.gitignore | 6 years ago | |
.travis.yml | 6 years ago | |
LICENSE | 6 years ago | |
README.md | 6 years ago | |
build.sh | 6 years ago | |
build_linux.sh | 6 years ago | |
test.sh | 6 years ago |
README.md
工程目录说明
简单来说,主要源码在app/
和pkg/
两个目录下,后续我再画些源码架构图。
app/ ......各种main包的源码文件,一个子目录对应一个main包,即对应可生成一个可执行文件
|-- lal/ ......lal main包的源码文件
bin/ ......可执行文件输出目录
conf/ ......配置文件目录
demo/ ......各种demo类型的main包,一个子目录对应一个demo,即对应可生成一个可执行文件
pkg/ ......源码包
|-- httpflv/ ......http flv协议
|-- rtmp/ ......rtmp协议
|-- util/ ......帮助类包
|-- bele/ ......大小端操作
|-- bininfo/ ......可执行文件版本等信息
|-- connstat/ ......连接超时信息
|-- log/ ......日志
|-- unique/ ......对象唯一ID
编译和运行
$go get -u github.com/q191201771/lal
# cd into lal
$./build.sh
# ./bin/lal -c <配置文件> -l <日志配置文件>,比如:
$./bin/lal -c conf/lal.conf.json -l conf/log.dev.xml
配置文件说明
{
"sub_idle_timeout": 10, // 往客户端发送数据时的超时时间
"gop_cache_num": 2, // gop缓存个数,如果设置为0,则只缓存seq header,不缓存gop数据
"httpflv": {
"sub_listen_addr": ":8080" // http-flv拉流地址
},
"rtmp": {
"addr": ":8081" // rtmp服务器监听端口,NOTICE rtmp服务器部分正在开发中
}
"pull": { // 如果设置,则当客户端连接lal拉流而lal上该流不存在时,lal会去该配置中的地址回源拉流至本地再转发给客户端
"type": "httpflv", // 回源类型,支持"httpflv" 或 "rtmp"
"addr": "pull.xxx.com", // 回源地址
"connect_timeout": 2, // 回源连接超时时间
"read_timeout": 10, // 回源读取数据超时时间
"stop_pull_while_no_sub_timeout": 3000 // 回源的流超过多长时间没有客户端播放,则关闭回源的流
}
}
TODO 日志配置文件说明
简单压力测试
在一台双核腾讯云主机,以后会做更详细的测试以及性能优化。
~ | httpflv pull | httpflv sub | 平均%CPU | 入带宽 | 出带宽 | 内存RES |
---|---|---|---|---|---|---|
~ | 1 | 300 | 8.8% | 1.5Mb | 450Mb | 36m |
~ | 300 | 300->0 | 18% | 450Mb | ->0Mb | 1.3g |
依赖
- cihub/seelog
- stretchr/testify/assert
roadmap
正在实现rtmp服务器部分