package service
|
|
import (
|
"encoding/xml"
|
"gat1400Exchange/pkg/logger"
|
dac "github.com/xinsnake/go-http-digest-auth-client"
|
"io/ioutil"
|
)
|
|
// 设置其他字符的第一个, 位置固定位7
|
// 摄像机信息暂时固定, 避免泄露
|
const (
|
HikISAPIOverlaySetUrl = "/ISAPI/System/Video/inputs/channels/1/overlays/text/7"
|
CameraWebAddr = "http://192.168.10.11:40080"
|
CameraWebUser = "admin"
|
CameraWebPassword = "a1234567"
|
)
|
|
type TextOverlay struct {
|
Id int64 `xml:"id"`
|
Enabled bool `xml:"enabled"`
|
PositionX int64 `xml:"positionX"`
|
PositionY int64 `xml:"positionY"`
|
DisplayText string `xml:"displayText"`
|
DirectAngle string `xml:"directAngle"`
|
IsPersistentText bool `xml:"isPersistentText"`
|
}
|
|
func AddFloorToOSD(osdText string) {
|
overlay7Url := CameraWebAddr + HikISAPIOverlaySetUrl
|
rsp, err := ISAPIRequest(CameraWebUser, CameraWebPassword, "GET", overlay7Url, "")
|
if err != nil {
|
logger.Warn("Get osd info failure")
|
return
|
}
|
|
var overlayText TextOverlay
|
err = xml.Unmarshal(rsp, &overlayText)
|
if err != nil {
|
logger.Warn("%s", err.Error())
|
return
|
}
|
|
overlayText.DisplayText = osdText
|
body, _ := xml.Marshal(overlayText)
|
_, err = ISAPIRequest(CameraWebUser, CameraWebPassword, "PUT", overlay7Url, string(body))
|
if err != nil {
|
logger.Warn("Camera osd set failure!!")
|
return
|
}
|
}
|
|
func ISAPIRequest(username, password, method, url, body string) ([]byte, error) {
|
dr := dac.NewRequest(username, password, method, url, body)
|
resp, err := dr.Execute()
|
if err != nil {
|
return nil, err
|
}
|
|
defer resp.Body.Close()
|
|
return ioutil.ReadAll(resp.Body)
|
}
|