From 837fc475082201eaf569cf01008770bec51d6eb5 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期五, 19 七月 2019 17:24:58 +0800
Subject: [PATCH] merge so
---
capture.go | 38 ++++++++++++++++++++++----------------
1 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/capture.go b/capture.go
index 936c4fe..b7c2bee 100644
--- a/capture.go
+++ b/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()
--
Gitblit v1.8.0