video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2021-05-25 7950b86a4bf821e126d5e5659b772ce32faa1445
goffmpeg.go
@@ -92,6 +92,65 @@
   }
}
// NewWithDevID 2nd new
func NewWithDevID(GB, CPU bool, devID int) *GoFFMPEG {
   f := C.wrap_fn_create(unsafe.Pointer(libcffmpeg))
   if f == nil {
      return nil
   }
   if GB {
      C.wrap_fn_run_gb28181(unsafe.Pointer(libcffmpeg), f)
   }
   if CPU {
      C.wrap_fn_use_cpu(unsafe.Pointer(libcffmpeg), f)
   } else if devID > -1 {
      r := C.wrap_fn_set_devid(unsafe.Pointer(libcffmpeg), f, C.int(devID))
      if r != 0 {
         if f != nil {
            C.wrap_fn_destroy(unsafe.Pointer(libcffmpeg), f)
         }
         FreeFFmpeg()
         return nil
      }
   }
   return &GoFFMPEG{
      ffmpeg: f,
   }
}
// NewWithLogAndDevID log
func NewWithLogAndDevID(GB, CPU bool, devID int, ffmpegLog string) *GoFFMPEG {
   lf := C.CString(ffmpegLog)
   defer C.free(unsafe.Pointer(lf))
   f := C.wrap_fn_create2(unsafe.Pointer(libcffmpeg), lf)
   if f == nil {
      return nil
   }
   if GB {
      C.wrap_fn_run_gb28181(unsafe.Pointer(libcffmpeg), f)
   }
   if CPU {
      C.wrap_fn_use_cpu(unsafe.Pointer(libcffmpeg), f)
   } else if devID > -1 {
      r := C.wrap_fn_set_devid(unsafe.Pointer(libcffmpeg), f, C.int(devID))
      if r != 0 {
         if f != nil {
            C.wrap_fn_destroy(unsafe.Pointer(libcffmpeg), f)
         }
         FreeFFmpeg()
         return nil
      }
   }
   return &GoFFMPEG{
      ffmpeg: f,
   }
}
// NewWithLog log
func NewWithLog(GB, CPU bool, ffmpegLog string) *GoFFMPEG {
   lf := C.CString(ffmpegLog)
@@ -150,12 +209,12 @@
}
// GetGBJpg Get GB28181 Jpg
func GetGBJpg(rtspUrl string) []byte {
   rtsp := C.CString(rtspUrl)
func GetGBJpg(rtspURL string, maxTry int) []byte {
   rtsp := C.CString(rtspURL)
   defer C.free(unsafe.Pointer(rtsp))
   var jpgLen C.int
   pic := C.wrap_fn_get_gb28181_pic(unsafe.Pointer(libcffmpeg), rtsp, &jpgLen)
   pic := C.wrap_fn_get_gb28181_pic(unsafe.Pointer(libcffmpeg), rtsp, &jpgLen, C.int(maxTry))
   defer C.free(unsafe.Pointer(pic))
   retJpg := C.GoBytes(unsafe.Pointer(pic), jpgLen)