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