Java onvif协议通用协议获取rtsp地址
Java onvif协议通用协议获取rtsp地址
吐槽下可搜索的资源真的是少,好多都是4 5年前的资料
onvif通用协议就不说了,大多摄像头都可用,利用onvif获取实时流和历史流转换成h264编码推送到前端,用h5新标签直接播放
onvif协议大部分是c或者android 资料 java的比较少 感谢大佬留下的宝贵资源:
1. https://github.com/RootSoft/ONVIF-Java (功能不够完善,没有使用例子)
2. https://github.com/fpompermaier/onvif (这个是基于上面的项目封装,有简单的例子,这里使用的这个)
实际使用:
前言:因为例子有限,没有历史流rtsp地址的使用,在参考例子和源码下,走了很多坑
后续更新利用javacv 使用rtsp地址拉取流推送出去。
上代码:
将第二个项目拉下来打包到本地仓库 下面的
pom 中的onvif-ws-client就是打包到本地仓库的
项目地址:https://github.com/xsjzf/onvif_java
核心的地方是:
这里说明下例子中只有实时流rtsp地址的方法获取
在onvif-ws-client的源码中有很多功能例子中只有media 也就是实时流的
要使用历史流则需要自行添加 就是replay和recording 其他功能详见onvif的官网文档
Capabilities capabilities = this.device.getCapabilities(Arrays.asList(CapabilityCategory.ALL));
@javax.xml.bind.annotation.XmlElement(name = "Analytics")
protected org.onvif.ver10.schema.AnalyticsCapabilities analytics;
@javax.xml.bind.annotation.XmlElement(name = "Device")
protected org.onvif.ver10.schema.DeviceCapabilities device;
@javax.xml.bind.annotation.XmlElement(name = "Events")
protected org.onvif.ver10.schema.EventCapabilities events;
@javax.xml.bind.annotation.XmlElement(name = "Imaging")
protected org.onvif.ver10.schema.ImagingCapabilities imaging;</