1 背景
基于resip写了一个上级平台服务,提供设备或者平台使用GB28181注册上来。目前提供的功能主要有:register;keepalive;catalog;invite;bye;
这个GB28181信令服务DMS使用的是ZLMEDIAKIT作为流媒体服务;目前是直接在DMS的配置文件中配置的ZLMEDIAKIT的地址,如果为了负载均衡等可以进行适当的修改;
2 结构图
restapi主要有三个接口:
2.1 获取catalog
GET请求
http://ip:port/v1/catalog
响应:
{
"ErrorCode": "0",
"ErrorMsg": "query catalog success",
"Devices":[
{
"NvrId":"34020000001180000001",
"Channels": [
{"Id":"34020000001320000000"},
{"Id":"34020000001320000001"}
]
},
{
"NvrId":"34020000001180000002",
"Channels": [
{"Id":"34020000001320000020"},
{"Id":"34020000001320000021"}
]
}
]
}
2.2 取流
POST
http://ip:port/v1/startVideo
请求:
{
"ChanId": "34020000001310000001",
"Udp": 0
}
响应:
{
"ErrorCode": "0",
"ErrorMsg": "start play success",
"ChanId": "34020000001310000001",
"Urls":
{
"rtmp": "rtmp://192.168.70.235/rtp/00907B4A",
"rtsp": "rtsp://192.168.70.235:8554/rtp/00907B4A?token=abcdefg&field=value",
"hls": "http://192.168.70.235:8080/rtp/00907B4A/hls.m3u8",
"http-flv": "http://192.168.70.235:8080/rtp/00907B4A.live.flv"
}
}
2.3 停止取流
POST
http://ip:port/v1/stopVideo
请求:
{
"ChanId": "34020000001310000001"
}
响应:
{
"ErrorCode": "0",
"ErrorMsg": "stop play success",
"ChanId": "34020000001310000001"
}
这几个接口设计的比较简单,后面可以根据需要进行扩展;
3 配置文件释义
4 docker镜像
目前做了一个粗糙的centos的docker镜像(通过container直接commit后push上去的,暂时没有使用dockerfile),dms所在的目录是 /usr/dms/ 里面已经有了相应的运行库,加入LD_LIBRARY_PATH就可以运行;
可以通过下面的命令进行镜像的拉取,DMS支持进行TCP/UDP端口的同时监听,所以下面的命令包含了5060的tcp和udp的端口映射;8000是作为restapi暴露出的端口,这三个端口要与上面配置文件配置的端口相同;
这个命令是在MAC/LINUX上运行的,如果是在WINDOWS上,请加上--net host
docker run -itd -p 5060:5060 -p 5060:5060/udp -p 8000:8000 --name dms chalonhoo/centos:dms
5 zlmediakit
zlmediakit镜像:
#此镜像为zlmediakit开发团队提供,推荐(ubuntu镜像)
docker run -id --name zl -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp zlmediakit/zlmediakit:Release.last
#此镜像委托第三方提供
docker run -id -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp panjjo/zlmediakit