| | |
| | | */ |
| | | 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(), |
| | | } |
| | | } |
| | |
| | | // Free free handle |
| | | func (h *GoFFMPEG) Free() { |
| | | C.wrap_fn_destroy(h.ffmpeg) |
| | | C.release_libcffmpeg(h.lib) |
| | | } |
| | | |
| | | // Run ffmpeg |