From a96e38b66179a67380132704f76d6abd8f648afe Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 07 五月 2019 14:48:40 +0800
Subject: [PATCH] init ffmpeg only once

---
 goffmpeg.go |   33 +++++++++++++++++++++++----------
 1 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/goffmpeg.go b/goffmpeg.go
index b497fac..d7676d2 100644
--- a/goffmpeg.go
+++ b/goffmpeg.go
@@ -7,27 +7,41 @@
 */
 import "C"
 import (
+	"errors"
 	"fmt"
 	"unsafe"
 )
 
-// GoFFMPEG handle for c
-type GoFFMPEG struct {
-	lib    C.libcffmpeg
-	ffmpeg C.cffmpeg
-}
+var libcffmpeg C.libcffmpeg
 
-// New create handle
-func New() *GoFFMPEG {
+// InitFFmpeg init ffmepg
+func InitFFmpeg() error {
 	soFile := C.CString("./runtime/libcffmpeg.so")
 	defer C.free(unsafe.Pointer(soFile))
 	lib := C.init_libcffmpeg(soFile)
 	if lib == nil {
 		fmt.Println("open libcffmpeg.so error")
-		return nil
+		return errors.New("init ffmpeg error")
 	}
+	libcffmpeg = lib
+	return nil
+}
+
+// FreeFFmpeg free ffmpeg
+func FreeFFmpeg() {
+	if libcffmpeg != nil {
+		C.release_libcffmpeg(libcffmpeg)
+	}
+}
+
+// GoFFMPEG handle for c
+type GoFFMPEG struct {
+	ffmpeg C.cffmpeg
+}
+
+// New create handle
+func New() *GoFFMPEG {
 	return &GoFFMPEG{
-		lib:    lib,
 		ffmpeg: C.wrap_fn_create(),
 	}
 }
@@ -35,7 +49,6 @@
 // Free free handle
 func (h *GoFFMPEG) Free() {
 	C.wrap_fn_destroy(h.ffmpeg)
-	C.release_libcffmpeg(h.lib)
 }
 
 // Run ffmpeg

--
Gitblit v1.8.0