diff --git a/Makefile b/Makefile index 5b7c673..63e5a2d 100644 --- a/Makefile +++ b/Makefile @@ -184,6 +184,8 @@ pack/windows: @make build/local GOOS=$(GOOS) GOARCH=$(GOARCH) $(eval dir := $(BUILD_DIR_ROOT)/windows_amd64) @cp -r deploy/easyvqd/* $(dir) + @cp -r deploy/win/ $(dir)/VqdSDK/ + @cp -r *dll $(dir) @mv $(dir)/bin $(dir)/easyvqd.exe @upx $(dir)/easyvqd.exe @make zip/windows diff --git a/deploy/easyvqd/package.json b/deploy/easyvqd/package.json index 22fe071..b604cbd 100644 --- a/deploy/easyvqd/package.json +++ b/deploy/easyvqd/package.json @@ -2,7 +2,7 @@ "name": "easyvqd", "author": "TSINGSEE", "auto_update": true, - "description": "将音频文件推送到GB设备", + "description": "将视频逐帧诊断分析", "display_name": "EasyVQD", "pid": 0, "web_server": true, diff --git a/deploy/lin/libdrm.so.2 b/deploy/lin/libdrm.so.2 new file mode 100644 index 0000000..af37117 Binary files /dev/null and b/deploy/lin/libdrm.so.2 differ diff --git a/deploy/lin/libgomp.so.1 b/deploy/lin/libgomp.so.1 new file mode 100644 index 0000000..91f3964 Binary files /dev/null and b/deploy/lin/libgomp.so.1 differ diff --git a/deploy/lin/libva-drm.so.1 b/deploy/lin/libva-drm.so.1 new file mode 100644 index 0000000..59e0dc1 Binary files /dev/null and b/deploy/lin/libva-drm.so.1 differ diff --git a/deploy/lin/libva.so.1 b/deploy/lin/libva.so.1 new file mode 100644 index 0000000..1eb9403 Binary files /dev/null and b/deploy/lin/libva.so.1 differ diff --git a/internal/app/app.go b/internal/app/app.go index cc15063..59ada6f 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -49,7 +49,7 @@ func Run(bc *conf.Bootstrap) { server.ReadTimeout(bc.Server.HTTP.Timeout.Duration()), server.WriteTimeout(bc.Server.HTTP.Timeout.Duration()), ) - lis, err := net.Listen("tcp", ":8089") + lis, err := net.Listen("tcp", ":") if err != nil { fmt.Printf("创建监听器失败: %v\n", err) return diff --git a/internal/core/vqdtask/core.go b/internal/core/vqdtask/core.go index acabccd..8262f9c 100644 --- a/internal/core/vqdtask/core.go +++ b/internal/core/vqdtask/core.go @@ -78,11 +78,20 @@ func NewCore(HostCore *host.Core, VqdTaskCore *vqd.Core, Cfg *conf.Bootstrap) *C } } core.HostCore.CbIFrame = func(s string, data []byte, codes int) { - v, ok := VqdTaskMap.LoadTaskMap(s) - if ok { - v.SendData(data, VIDEO_CODEC_H265) + if codes == VIDEO_CODEC_H264 { + v, ok := VqdTaskMap.LoadTaskMap(s) + if ok { + v.SendData(data, VIDEO_CODEC_H264) + } + } else { + v, ok := VqdTaskMap.LoadTaskMap(s) + if ok { + v.SendData(data, VIDEO_CODEC_H265) + } } + //slog.Debug("cb IFrame", "name", s, "codes", codes) + } time.AfterFunc(time.Duration(5)*time.Second, func() { // 启用诊断分析 @@ -105,7 +114,10 @@ func (c *Core) InitVqdTask() { all, _, err := c.VqdTaskCore.FindVqdTaskAll() if err == nil { for _, vqdTask := range all { - c.AddTaskVqd(vqdTask.ID) + errs := c.AddTaskVqd(vqdTask.ID) + if errs != nil { + slog.Error("vqd init add task", "err", errs.Error()) + } time.Sleep(200 * time.Millisecond) } } diff --git a/pkg/vqdcms/vqd.go b/pkg/vqdcms/vqd.go index b1842f7..0ad2ead 100644 --- a/pkg/vqdcms/vqd.go +++ b/pkg/vqdcms/vqd.go @@ -210,9 +210,7 @@ func (v *VQDHandle) RunFrame() { break } cdata = data - if !IsCurTimeInRecordPlan(v.info.Plans, cdata.now) { - continue - } + now := time.Now().UnixMilli() fpath := filepath.Join(cvqdImgsDir, fmt.Sprintf("%s_%d_%d_%d.jpg", v.info.ChannelID, v.info.TemplateID, v.info.PlanID, now)) fpath = filepath.ToSlash(fpath) @@ -411,7 +409,9 @@ func (v *VQDHandle) parseVQD(result VQDResult) (AbnormalModel, bool) { return abnormals, isabnormal } func (v *VQDHandle) SendData(buf []byte, _codec int) { - + if !IsCurTimeInRecordPlan(v.info.Plans, time.Now()) { + return + } w, h, data, err := v.decoder.PushDataEx(buf, _codec) if err != nil { slog.Error("I帧转YUV失败: ", "TaskID", v.info.TaskID, "err", err) diff --git a/web/src/components/VqdAlarm.tsx b/web/src/components/VqdAlarm.tsx index ba6a195..a63c291 100644 --- a/web/src/components/VqdAlarm.tsx +++ b/web/src/components/VqdAlarm.tsx @@ -34,7 +34,7 @@ export default function VqdAlarmPage() { ErrorHandle(err); throw err; }), - // refetchInterval: 4000, + refetchInterval: 4000, retry: 2, }); diff --git a/web/src/components/VqdTask.tsx b/web/src/components/VqdTask.tsx index 961134a..7fd99df 100644 --- a/web/src/components/VqdTask.tsx +++ b/web/src/components/VqdTask.tsx @@ -1,5 +1,5 @@ import { useRef, useState, useMemo } from "react"; -import { Table, Button, Space, Popconfirm, Flex, message, Tooltip, Switch,Popover,Tag } from "antd"; +import { Table, Button, Space, Popconfirm, Flex, message, Tooltip, Switch, Popover, Tag } from "antd"; import { EditOutlined, DeleteOutlined, PlusOutlined } from "@ant-design/icons"; import { useQuery, useMutation } from "@tanstack/react-query"; import { GetVqdTask, DeleteVqdTask, UpdateVqdTask } from "../api/vqdtask"; @@ -144,24 +144,7 @@ export default function VqdTaskPage() { ), }, { - title: "描述", - dataIndex: "des", - align: "center", - }, - { - title: "启用", - dataIndex: "enable", - align: "center", - render: (text, record) => ( - - { - saveTemplate(record, t) - }} /> - - ), - }, - { - title: "拉流状态", + title: "状态", dataIndex: "status", align: "center", render: (text, record) => ( @@ -180,6 +163,23 @@ export default function VqdTaskPage() { ), }, + { + title: "启用", + dataIndex: "enable", + align: "center", + render: (text, record) => ( + + { + saveTemplate(record, t) + }} /> + + ), + }, + { + title: "描述", + dataIndex: "des", + align: "center", + }, { title: "创建日期", dataIndex: "created_at",