zhangmeng
2019-07-19 837fc475082201eaf569cf01008770bec51d6eb5
merge so
1个文件已修改
38 ■■■■■ 已修改文件
capture.go 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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()