Go语言实现Onvif客户端:7、获取摄像头快照
1、代码
摄像头对该时刻可以进行快照抓拍,抓拍结果可以以url地址的形式提供,在浏览器上可以直接查看抓拍的结果,Onvif协议也支持该服务。
/**
* @Description: 获取快照的url信息,可以直接在浏览器打开
* @time: 2021-04-02 09:56:52
* @receiver client
* @return returnInfo
*/
func (client *GoOnvifClient) GetSnapUri() returnInfo {
if client.localSelectProfileToken == "" {
return returnInfo{GetSnapShotUriErr, "profile token is nil."}
}
return client.getSnapshotUri()
}
/**
* @Description: 获取抓拍Uri地址
* @time: 2021-03-25 14:51:53
* @receiver client
* @return returnInfo
*/
func (client *GoOnvifClient) getSnapshotUri() returnInfo {
ptzSnapReq := media.GetSnapshotUri{
ProfileToken: onvif.ReferenceToken(client.localSelectProfileToken),
}
return client.sendReqGetResp(GetSnapShotUriErr, ptzSnapReq)
}
调用:
res = client.GetSnapUri()
if res.Code != onvifClient.OK {
fmt.Println("get snap url failed.")
fmt.Println(res.Info)
} else {
fmt.Println("snap url xml info:")
fmt.Println(res.Info)
}
2、结果
得到的xml信息如下:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl" xmlns:tev="http://www.onvif.org/ver10/events/wsdl" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:tan="http://www.onvif.org/ver20/analytics/wsdl" xmlns:tst="http://www.onvif.org/ver10/storage/wsdl" xmlns:ter="http://www.onvif.org/ver10/error" xmlns:dn="http://www.onvif.org/ver10/network/wsdl" xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tmd="http://www.onvif.org/ver10/deviceIO/wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl" xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12" xmlns:http="http://schemas.xmlsoap.org/wsdl/http" xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:wsadis="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wsntw="http://docs.oasis-open.org/wsn/bw-2" xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2" xmlns:trc="http://www.onvif.org/ver10/recording/wsdl" xmlns:tse="http://www.onvif.org/ver10/search/wsdl" xmlns:trp="http://www.onvif.org/ver10/replay/wsdl" xmlns:tnshik="http://www.hikvision.com/2011/event/topics" xmlns:hikwsd="http://www.onvifext.com/onvif/ext/ver10/wsdl" xmlns:hikxsd="http://www.onvifext.com/onvif/ext/ver10/schema" xmlns:tas="http://www.onvif.org/ver10/advancedsecurity/wsdl" xmlns:tr2="http://www.onvif.org/ver20/media/wsdl" xmlns:axt="http://www.onvif.org/ver20/analytics">
<env:Body>
<trt:GetSnapshotUriResponse>
<trt:MediaUri>
<tt:Uri>http://40.40.40.101/onvif-http/snapshot?Profile_1</tt:Uri>
<tt:InvalidAfterConnect>false</tt:InvalidAfterConnect>
<tt:InvalidAfterReboot>false</tt:InvalidAfterReboot>
<tt:Timeout>PT0S</tt:Timeout>
</trt:MediaUri>
</trt:GetSnapshotUriResponse>
</env:Body>
</env:Envelope>
3、查看
通过上面的Uri在浏览器查看(需要用户名密码登录):