Android onvif协议 服务端

先做个大致分析:这篇文章是把Android设备当做摄像机,通过onvif协议,
		可以让nvr进行访问,传输rtsp流。
先说下我的思路:
   第一步:先看文档,了解到onvif协议是通过http建立的连接。
   第二步:找个可以和nvr连接的IPC,通过Wireshark抓包,可以看到他们之间
   		  建立连接的过程,需要传输的报文。
   第三步:建立http服务端,构建响应消息。
   大致流程就这样

服务端我用的serverSocket,nanohttp的源码,之后再做分析。
onvif的响应消息是通过http和soap构建的,我手动拼写的,这是我的一部分像这样:

buffer.append("\n" +
                "            \n" +
                "                \n" +
                "                    Network Digital Video" +
                "                    \n" +
                "                \n" +
                "                    HIHD_T" +
                "                    \n" +
                "                \n" +
                "                    2.1.0.3.4.19_5.0.67 Beta" +
                "                    \n" +
                "                \n" +
                "                    717330" +
                "                    \n" +
                "                \n" +
                "                    IPCamera" +
                "                    \n" +
                "                \n" +
                "            \n" +
                "        ");

响应消息是通过看抓包然后自己写了个一样回复过去的。

nvr看到的错误分析:
在nvr上,刚开始可能会说参数错误,然后你抓包看到nvr给你发的接口,你回对应的消息,回复一两个接口应该会说用户名密码错误,这时候你可以在header中写安全认证,也可以不写鉴权、安全认证,他发什么你回复什么就可以,因为他不是双向的认证,只要我们服务端承认就可以,接着下来可能是IP通道异常,这时候你看你的GetStreamUri的接口,里面的rtsp流是否是有效的,之后基本上就能看到在nvr上显示在线了,剩下的接口自己建立回复,调试接口的时候可能会遇到各种错,一般都是写的配置不对,这个就要你自己调了我建议用onvif工具先看抓包情况。

之后在具体分析服务、抓包方面吧。

一份代码可以参考:https://download.csdn.net/download/weixin_44796633/12299336,这分代码中的rtsp的服务有点老

我自己感觉写的应该能看明白

你可能感兴趣的:(开发类,服务类,经验类)