zhangmeng
2019-07-19 837fc475082201eaf569cf01008770bec51d6eb5
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 {
      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:    false,
   }
   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()