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