如题,Java如何通过官方SDK接口获取大华监控的实时视频流帧,有偿
6条回答 默认 最新
- Johar 2021-03-07 00:01关注
一般大华的sdk有两种方式,一种是把窗口句柄直接传给sdk,画面直接显示,不用管解码显示,最为方便;另外一种是通过注册回调方法,返回数据流,sdk demo里面均有实现,见General_NetSDK_ChnEng_JAVA_Win64_IS_V3.052.0000002.0.R.201103中RealplayEx:
public void realplay(){ lRealHandle= netSdk.CLIENT_RealPlayEx(loginHandle, 0, null, 0); if(lRealHandle.longValue()!=0){ System.out.println("realplay success"); netSdk.CLIENT_SetRealDataCallBackEx(lRealHandle, CbfRealDataCallBackEx.getInstance(),null, 31); } }
/** * 实时监视数据回调函数--扩展(pBuffer内存由SDK内部申请释放) */ private static class CbfRealDataCallBackEx implements NetSDKLib.fRealDataCallBackEx { private CbfRealDataCallBackEx() { } private static class CallBackHolder { private static CbfRealDataCallBackEx instance = new CbfRealDataCallBackEx(); } public static CbfRealDataCallBackEx getInstance() { return CallBackHolder.instance; } @Override public void invoke(LLong lRealHandle, int dwDataType, Pointer pBuffer, int dwBufSize, int param, Pointer dwUser) { int bInput=0; if(0 != lRealHandle.longValue()) { switch(dwDataType) { case 0: System.out.println("码流大小为" + dwBufSize + "\n" + "码流类型为原始音视频混合数据"); break; case 1: //标准视频数据 break; case 2: //yuv 数据 break; case 3: //pcm 音频数据 break; case 4: //原始音频数据 break; default: break; } } } }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥15 stable diffusion
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿