livego是基于golang开发的rtmp服务器

什么是livego

livego是基于golang开发的rtmp服务器

为什么基于golang

  • golang在语言基本支持多核CPU均衡使用,支持海量轻量级线程,提高其并发量

    当前开源的缺陷:
    • srs只能运行在一个单核下,如果需要多核运行,只能启动多个srs监听不同的端口来提高并发量;
    • ngx-rtmp启动多进程后,报文在多个进程内转发,需要二次开发,否则静态推送到多个子进程,效能消耗大; golang在语言级别解决了上面多进程并发的问题。
  • 二次开发简洁快速

    golang的开发效率远远高过C/C++

livego支持哪些特性

  • rtmp 推流,拉流
  • 支持hls观看
  • 支持http-flv观看
  • 支持gop-cache缓存
  • 静态relay支持:支持静态推流,拉流
  • 统计信息支持:支持http在线查看流状态

rtmp配置指引

livego的rtmp配置是基于json格式,简单好用。

"hls": "enable",
"servers":[
{
"servername":"live"
}
]
} ">
{
    "listen": 1935,<br/> 
    "hls": "enable",<br/> 
    "servers":[<br/> 
        {<br/> 
        "servername":"live"<br/> 
        }<br/> 
    ]<br/> 
}

rtmp配置示例

{
"listen": 1935,					    //rtmp监听端口
"notifyurl":""//暂时不配置
"hls": "enable",				    //是否开启 hls
"hlsport" : 8090,				    // hls的拉流端口
"httpflv" : "enable",				//是否开启fiv 
"flvport" : 8011,				    // flv的拉流端口
"httpoper": "enable",				//是否 可以接受 外界的http请求
"operport": 8070,				    // 监听外界请求的端口
"engineEnable":"enable",			//是否启动切片机
"engine":					        //切片机配置信息
{
	"ffmpeg": "/opt/segmenter",		//切片机程序所在目录
	"vcodec":"copy",
	"acodec":"copy",
	"extra_conf": "/opt/config.conf",	    // 切片机的配置文件
	"output": "/data/channellist/channel",	//生成回放的路径
	"trans_user": ""			            //可以不设置 
},
"servers":[
{
	"servername":"live"			            //服务名称
}
]
}

如上配置,表明:

rtmp监听1935端口
hls使能,并且监听8090端口
httpflv使能,并且监听8011端口
http 操作控制使能,并且监听8070端口

举例: 使用ffmpeg推流:

  • ffmpeg -re -i test.flv -c copy -f flv rtmp://127.0.0.1:1935/live/stream

使用ffplay观看

请求获取推流点
http://***:***/getPush?&projectId=23&userType=0&videoType=2

得到指定的回看地址信息
http://***:***/getReplay?&projectId=12

请求停止项目
http://***:***/stopProject?&projectId=23

获取指定项目的当前列表
http://***:***/getCurrentList?&projectId=23

设置推流点的音频
http://***:***/setPushIdAudio?&projectId=13&pushId=1&audio=0
Owner
张超(轶钦)
Founder of DExpress
张超(轶钦)
Similar Resources
Related tags