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