video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2022-04-26 ab3d17cd44625a762fc10f0f1fd8f2c46b980aff
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(h.ffmpeg, &size, &key)
   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
}