# jetlinks-media
音视频流媒体管理模块,实现`GBT 28181`相关协议功能。
# GBT 28181功能
* [x] 注册和注销
* [x] 实时视音频点播
* [x] 设备控制:云台控制,预置位
* [x] 报警事件
* [x] 设备信息查询
* [x] 状态信息报送
* [x] 历史视音频文件检索
* [x] 历史视音频回放
* [ ] 历史视音频文件下载
* [ ] 网络校时
* [ ] 订阅和通知
* [ ] 语音广播和语音对讲
* [x] 级联控制
# 其他功能
* [x] 直播长时间无人观看,自动停止推流
1. 检出代码
```bash
$ git submodule add --force git@github.com:jetlinks/jetlinks-media.git expands-components/jetlinks-media
```
2、 在项目(`jetlinks-pro`)根目录下的`pom.xml`中的`modules`节点中添加模块
```xml
expands-components/jetlinks-media
```
3、 在启动模块(`jetlinks-standalone/pom.xml`)中引入依赖
```xml
org.jetlinks.pro
jetlinks-media
${project.version}
```
4、 重新编译启动服务
5、 进入[`系统-用户管理-赋权`]重新分配权限到管理员用户.
权限ID: `gb28181-gateway`,`media-channel`,`media-device`,`media-server`
6、 重新登录
7、创建产品,选择协议`GB28181/2016`
8、启动ZLMedia,参照`zlm/docker-compose.yml`
9、在国标网关中配置流媒体服务和信令服务
# 核心类
1. `GB28181DeviceGateway`: 用于接受SIP请求,实现28181设备自动注册,获取通道等功能
2. `GB28181Invoker`: 用于发送指令给SIP客户端,并获取对应响应结果。
3. `SsrcPool`: ssrc池,用于管理ssrc的分配和释放。
4. `CascadeGateway`: 级联网关,用于自动注册到上级域,并且处理上级域下发的指令。