From 0ead91b8788b382d0d1e7f6eda3f1d008ce39602 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 26 十二月 2023 10:34:01 +0800
Subject: [PATCH] add bgr and yuv420 to jpeg support
---
capture.go | 29 ++++++++++++++++-------------
1 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/capture.go b/capture.go
index c7bb141..3164d11 100644
--- a/capture.go
+++ b/capture.go
@@ -5,9 +5,8 @@
"fmt"
"time"
- "basic.com/valib/goffmpeg.git"
-
"basic.com/valib/godraw.git"
+ "basic.com/valib/goffmpeg.git"
"github.com/disintegration/imaging"
)
@@ -44,7 +43,6 @@
var ret []byte
var err error
- var flag int
err = goffmpeg.InitFFmpeg(soFile)
if err != nil {
@@ -53,10 +51,12 @@
reterr := fmt.Errorf("gb28181 try %d times to capture image, is url correct?", maxTry)
// for i := 0; i < maxTry; i++ {
- ret, flag = goffmpeg.GetGBJpg(url, maxTry)
- if flag <= 0 {
- reterr = fmt.Errorf("gb28181 GetGBJpg failed %d", flag)
+ ret = goffmpeg.GetGBJpg(url, maxTry)
+ if len(ret) > 0 {
+ reterr = nil
+ // break
}
+ // }
goffmpeg.FreeFFmpeg()
@@ -105,9 +105,8 @@
gf.BuildDecoder()
tryTime := 0
- interval := 40 // ms
// 淇濊瘉鏈変竴涓叧閿抚
- maxTry *= 1000
+ maxTry = maxTry * 1000
var bgrData, jpgData []byte
var err error
@@ -116,8 +115,12 @@
data, ow, oh, _ := gf.GetYUV()
if ow > 0 && oh > 0 {
-
- bgrData = yuv2bgr(data, ow, oh)
+ if ow*oh*3 != len(data) {
+ // data 涓嶆槸 bgr 鏍煎紡锛岄渶瑕佽浆鎹�
+ bgrData = yuv2bgr(data, ow, oh)
+ } else {
+ bgrData = data
+ }
if w > 0 && h > 0 {
bgrData = bgresize(bgrData, ow, oh, w, h)
ow, oh = w, h
@@ -129,16 +132,16 @@
}
break
} else {
- tryTime += interval
+ tryTime += 40
if tryTime > maxTry {
break
}
- time.Sleep(time.Duration(interval) * time.Millisecond)
+ time.Sleep(40 * time.Millisecond)
}
}
if tryTime >= maxTry {
- err := fmt.Sprintf("try %d ms to capture image, is url correct?\n", tryTime)
+ err := fmt.Sprintf("try %d times to capture image, is url correct?\n", tryTime)
return nil, errors.New(err)
}
--
Gitblit v1.8.0