package nvcs import ( "encoding/xml" "io/ioutil" "gat1400Exchange/pkg/logger" dac "github.com/xinsnake/go-http-digest-auth-client" ) // 设置其他字符的第一个, 位置固定位7 // 摄像机信息暂时固定, 避免泄露 const ( hikISAPIOverlay7SetUrl = "/ISAPI/System/Video/inputs/channels/1/overlays/text/7" cameraWebAddr = "http://192.168.10.11:40080" cameraWebUser = "admin" cameraWebPassword = "a1234567" ) var overlayText textOverlay 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 hikISAPIRequest(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) } func addFloorToOSD(osdText string) { overlay7Url := cameraWebAddr + hikISAPIOverlay7SetUrl // 获取左下角第一个字符的位置 if overlayText.DisplayText == "" { rsp, err := hikISAPIRequest(cameraWebUser, cameraWebPassword, "GET", overlay7Url, "") if err != nil { logger.Warn("Get osd info failure") return } err = xml.Unmarshal(rsp, &overlayText) if err != nil { logger.Warn("%s", err.Error()) return } } overlayText.DisplayText = osdText body, _ := xml.Marshal(overlayText) _, err := hikISAPIRequest(cameraWebUser, cameraWebPassword, "PUT", overlay7Url, string(body)) if err != nil { logger.Warn("Camera osd set failure!!") return } }