zhangmeng
2019-07-19 9492b3eafc40b6a5ded9ecbd58751c88a86f61d7
capture.go
@@ -34,39 +34,45 @@
   InvalidFileExt PicExt = PicExt("")
)
const (
   soFileRtsp = "./runtime/libcffmpeg.so"
   soFileGB   = "./runtime/libcffmpeg_gb28181.so"
)
// Capture pic
func Capture(m StreamMode, url string, ext PicExt, w, h, maxTry int) ([]byte, error) {
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 {
      return nil, errors.New("there is no this mode, try capture.Rtsp/capture.GB28181")
   }
   if ext == InvalidFileExt {
      ext = JPEGFileExt
   }
   var ret []byte
   var err error
   if m == Rtsp {
      err = goffmpeg.InitFFmpeg(soFileRtsp)
   } else if m == GB28181 {
      err = goffmpeg.InitFFmpeg(soFileGB)
   } else {
      err = errors.New("there is no this mode, try capture.Rtsp/capture.GB28181")
   }
   err = goffmpeg.InitFFmpeg(soFile)
   if err != nil {
      return nil, err
   }
   ret, err = capt2Data(url, gocv.FileExt(ext), w, h, maxTry)
   conf := goffmpeg.Config{
      Scale:  goffmpeg.ScalePoint,
      Width:  w,
      Height: h,
      GB:     gb,
      CPU:    true,
   }
   gf := goffmpeg.New(conf)
   ret, err = capt2Data(gf, url, gocv.FileExt(ext), w, h, maxTry)
   gf.Free()
   goffmpeg.FreeFFmpeg()
   return ret, err
}
func capt2Data(url string, ext gocv.FileExt, w, h, maxTry int) ([]byte, error) {
func capt2Data(gf *goffmpeg.GoFFMPEG, url string, ext gocv.FileExt, w, h, maxTry int) ([]byte, error) {
   gf := goffmpeg.New()
   gf.Run(url)
   gf.BuildDecoder()
@@ -100,7 +106,6 @@
         time.Sleep(time.Second)
      }
   }
   gf.Free()
   if tryTime > maxTry {
      err := fmt.Sprintf("try %d times to capture image, is url correct?\n", tryTime)