VideoNoViskHeadFrameCallBackClass.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.persagy.nvr;
  2. import com.persagy.cameractl.common.VideoExportProcessContext;
  3. import com.persagy.nvr.VskClient.VideoNoViskHeadFrameInfo;
  4. import com.sun.jna.Pointer;
  5. import com.sun.jna.Structure;
  6. import lombok.extern.slf4j.Slf4j;
  7. @Slf4j
  8. public class VideoNoViskHeadFrameCallBackClass implements VskClient.VideoNoViskHeadFrameCallBack {
  9. @Override
  10. public void Callback(Pointer pFrameBuf, int nFrameLen, Pointer pStream, Pointer pUser) {
  11. try {
  12. if (pFrameBuf == null || pStream == null) {
  13. log.info("自定义回调没数据");
  14. return;
  15. }
  16. VideoNoViskHeadFrameInfo videoNoViskHeadFrameInfo = Structure.newInstance(
  17. VideoNoViskHeadFrameInfo.class,
  18. pStream);
  19. videoNoViskHeadFrameInfo.read();
  20. int encodeType = videoNoViskHeadFrameInfo.nEncodeType.intValue();
  21. if (encodeType != 26) {
  22. log.warn("非h264编码,当前编码类型枚举值为:" + encodeType);
  23. }
  24. VideoExportProcessContext.getCurrentContext().write(pFrameBuf.getByteArray(0, nFrameLen));
  25. } catch (Exception e) {
  26. log.error("自定义回调执行异常", e);
  27. }
  28. }
  29. }
  30. // 编码类型
  31. // E_PT_MPEG2TS = 1, // MPEG-2 Transport Stream
  32. // E_PT_QCELP = 2,// QCELP audio
  33. // E_PT_AMR = 3,// AMR audio (narrowband)
  34. // E_PT_AMR_WB = 4,// AMR audio (wideband)
  35. // E_PT_MPEGAUDIO = 5,// MPEG-1 or 2 audio
  36. // E_PT_MP4AUDIO = 6,// MPEG-4 LATM audio
  37. // E_PT_PCM8 = 7,// PCM u-law audio
  38. // E_PT_AC3 = 8,// AC3 audio
  39. // E_PT_MPEG4V_ES = 9,// MPEG-4 ES
  40. // E_PT_MPVIDEO = 10,// MPEG-1 or 2 video
  41. //
  42. // E_PT_PCMA = 14, // VSK_G711A
  43. // E_PT_PCMU = 22, // VSK_G711U
  44. //
  45. // E_PT_H261 = 24,// H.261
  46. // E_PT_H263 = 25,// H.263
  47. // E_PT_H264 = 26,// H.264 视频帧类型
  48. // E_PT_MJPEG = 27,// motion JPEG
  49. //
  50. // E_PT_G726_16 = 28,// G.726, 16 kbps
  51. // E_PT_G726_24 = 29,// G.726, 24 kbps
  52. // E_PT_G726_32 = 30,// G.726, 32 kbps
  53. // E_PT_G726_40 = 31,// G.726, 40 kbps
  54. // E_PT_H265 = 35,// H.265 视频帧类型