video analysis2.0拆分,ffmpeg封装go接口库
chenshijun
2019-12-03 f29f269d999fc4bb8a9bfa85629f08b89971a2ef
gostream.go
@@ -8,19 +8,43 @@
import "unsafe"
// CloseStream close stream
func (h *GoFFMPEG) CloseStream() {
   C.wrap_fn_close_stream(unsafe.Pointer(libcffmpeg), h.ffmpeg)
}
//GetAVPacket get AVPacket
func (h *GoFFMPEG) GetAVPacket() ([]byte, int, int) {
   var key C.int
   var size C.int
   p := C.wrap_fn_get_avpacket(unsafe.Pointer(libcffmpeg), h.ffmpeg, &size, &key)
   defer C.free(unsafe.Pointer(p))
   if size <= 0 {
      return nil, 0, -1
   }
   defer C.free(unsafe.Pointer(p))
   d := C.GoBytes(p, size)
   s := int(size)
   k := int(key)
   return d, s, k
}
//GetAVPacket2 get AVPacket
func (h *GoFFMPEG) GetAVPacket2() (unsafe.Pointer, []byte, int, int) {
   var key C.int
   var size C.int
   p := C.wrap_fn_get_avpacket(unsafe.Pointer(libcffmpeg), h.ffmpeg, &size, &key)
   if size <= 0 {
      return nil, nil, 0, -1
   }
   const maxLen = 0x7fffffff
   length := int(size)
   data := (*[maxLen]byte)(unsafe.Pointer(p))[:length:length]
   k := int(key)
   return p, data, length, k
}