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