video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2019-05-07 a96e38b66179a67380132704f76d6abd8f648afe
init ffmpeg only once
1个文件已修改
33 ■■■■■ 已修改文件
goffmpeg.go 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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