From 7e98d8c98b3c6aed09da67e1652e2b78bc4a964f Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 24 九月 2019 14:17:18 +0800
Subject: [PATCH] use decode only

---
 capture.go |   29 +++++++++--------------------
 1 files changed, 9 insertions(+), 20 deletions(-)

diff --git a/capture.go b/capture.go
index a01634c..050d85c 100644
--- a/capture.go
+++ b/capture.go
@@ -36,10 +36,7 @@
 
 // Capture pic
 func Capture(soFile string, m StreamMode, url string, ext PicExt, w, h, maxTry int) ([]byte, error) {
-	gb := false
-	if m == GB28181 {
-		gb = true
-	} else if m != Rtsp {
+	if m != GB28181 && m != Rtsp {
 		return nil, errors.New("there is no this mode, try capture.Rtsp/capture.GB28181")
 	}
 
@@ -54,27 +51,19 @@
 		return nil, err
 	}
 
-	conf := goffmpeg.Config{
-		Scale:  goffmpeg.ScalePoint,
-		Width:  w,
-		Height: h,
-		GB:     gb,
-		CPU:    true,
-	}
-	gf := goffmpeg.New(conf)
+	ret, err = capt2Data(url, m, gocv.FileExt(ext), w, h, maxTry)
 
-	ret, err = capt2Data(gf, url, gocv.FileExt(ext), w, h, maxTry)
-
-	gf.Free()
 	goffmpeg.FreeFFmpeg()
 
 	return ret, err
 }
 
-func capt2Data(gf *goffmpeg.GoFFMPEG, url string, ext gocv.FileExt, w, h, maxTry int) ([]byte, error) {
+func capt2Data(url string, m StreamMode, ext gocv.FileExt, w, h, maxTry int) ([]byte, error) {
 
-	gf.Run(url)
-	gf.BuildDecoder()
+	gb := false
+	if m == GB28181 {
+		gb = true
+	}
 
 	tryTime := 0
 
@@ -82,7 +71,7 @@
 	var err2 error
 	for {
 
-		data, wid, hei, _ := gf.GetPicDecoder()
+		data, wid, hei := goffmpeg.Decode(url, gb)
 		if wid > 0 && hei > 0 {
 			img, err := gocv.NewMatFromBytes(hei, wid, gocv.MatTypeCV8UC3, data)
 			if err != nil {
@@ -107,7 +96,7 @@
 		}
 	}
 
-	if tryTime > maxTry {
+	if tryTime >= maxTry {
 		err := fmt.Sprintf("try %d times to capture image, is url correct?\n", tryTime)
 		return nil, errors.New(err)
 	}

--
Gitblit v1.8.0