zhangmeng
2019-09-24 7e98d8c98b3c6aed09da67e1652e2b78bc4a964f
use decode only
1个文件已修改
29 ■■■■■ 已修改文件
capture.go 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
    }