zhangmeng
2019-09-24 7e98d8c98b3c6aed09da67e1652e2b78bc4a964f
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)
   }