video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2019-05-07 a96e38b66179a67380132704f76d6abd8f648afe
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