zhangzengfei
2024-10-20 2fc94ba7b517125a7ed9771b48bb5d383021bc91
nvcs/osd.go
File was renamed from service/osd.go
@@ -1,24 +1,26 @@
package service
package nvcs
import (
   "encoding/xml"
   "gat1400Exchange/pkg/logger"
   dac "github.com/xinsnake/go-http-digest-auth-client"
   "io/ioutil"
   "gat1400Exchange/pkg/logger"
   dac "github.com/xinsnake/go-http-digest-auth-client"
)
// 设置其他字符的第一个, 位置固定位7
// 摄像机信息暂时固定, 避免泄露
const (
   HikISAPIOverlaySetUrl = "/ISAPI/System/Video/inputs/channels/1/overlays/text/7"
   CameraWebAddr         = "http://192.168.10.11:40080"
   CameraWebUser         = "admin"
   CameraWebPassword     = "a1234567"
   hikISAPIOverlay7SetUrl = "/ISAPI/System/Video/inputs/channels/1/overlays/text/7"
   cameraWebAddr          = "http://192.168.10.11:40080"
   cameraWebUser          = "admin"
   cameraWebPassword      = "a1234567"
)
var overlayText TextOverlay
var overlayText textOverlay
type TextOverlay struct {
type textOverlay struct {
   Id               int64  `xml:"id"`
   Enabled          bool   `xml:"enabled"`
   PositionX        int64  `xml:"positionX"`
@@ -28,12 +30,24 @@
   IsPersistentText bool   `xml:"isPersistentText"`
}
func AddFloorToOSD(osdText string) {
   overlay7Url := CameraWebAddr + HikISAPIOverlaySetUrl
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 := ISAPIRequest(CameraWebUser, CameraWebPassword, "GET", overlay7Url, "")
      rsp, err := hikISAPIRequest(cameraWebUser, cameraWebPassword, "GET", overlay7Url, "")
      if err != nil {
         logger.Warn("Get osd info failure")
         return
@@ -48,21 +62,9 @@
   overlayText.DisplayText = osdText
   body, _ := xml.Marshal(overlayText)
   _, err := ISAPIRequest(CameraWebUser, CameraWebPassword, "PUT", overlay7Url, string(body))
   _, err := hikISAPIRequest(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)
}