video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2019-11-21 9b12b43b25fd5a476205bc693be0cf836c281bc1
gostream.go
@@ -13,14 +13,33 @@
   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
}