支持国标GB28181协议的EasyGBS国标视频云平台,对外可以提供RTSP、RTMP、FLV、HLS、WebRTC等多种格式的视频流进行分发。我们对外也提供了API接口,可满足用户的二次开发与集成需求。EasyGBS除了标准版本外,我们也会根据项目的需求开发定制版本。
今天我们来和大家分享下EasyGBS定制协议的播放功能实现逻辑与代码。
功能简介:与设备协商好对应的播放指令,当设备注册上来之后,通过对应的链接通道,下发播放指令。
实现逻辑:查询到本地是否有被监听的端口,然后开启端口监听,将封好对应的指令,发送给设备,再将设备上发来的流数据解析到ps-es数据,再将数据推送到流媒体中,分发出对应的前端播放地址,返回给前端。
添加如下代码:
channelint, _ := strconv.Atoi(channelid)
body := &RealtimeVideoReq{
IPLength: len([]byte(ipaddr)),
IPAddr: ipaddr,
PortTCP: tcpport,
PortUDP: udpport,
Channel: channelint,
DataType: 0,
}
fmt.Println(body)
// 编码数据
ipLength, err := dec2HexByte(body.IPLength, 2)
if err != nil {
log.Printf("[实时音视传输请求]连接地址:%s 编码服务器IP长度失败:%s", terminalinfo.Conn.RemoteAddr().String(), err.Error())
return err
}
效果图如下:
随着现在新内核的EasyGBS、EasyNVR以及EasyCVR的使用场景越来越广泛,这些平台也被运用在大小不同的很多实际项目中。在功能上,基本都能满足大部分用户的需求,也有部分项目存在个性化需求,需要进行功能的定制。
我们将不定期在博客更新关于EasyGBS平台的功能开发及优化、FAQ、配置操作等内容,欢迎大家关注我们的更新,或留言与我们互动。