本文为博主原创文章,未经博主允许不得转载。(合作洽谈请联系QQ:1010316426)

通过调取大华摄像机SDK,获取的音视频码流,其格式为大华的私有格式。需通过大华的码流分析库StreamAnalyzer.dll将私有头和负载分离,从而提取出纯H264及音频帧数据。

第1步:调用sdk获取实况码流

LLONG lRet = CLIENT_RealPlayEx(m_LoginID,iChannel,0);
if(0 != lRet)
{m_DispHanle[iDispNum-1]=lRet;SetPlayVideoInfo(iDispNum,iChannel,ServerMode);CLIENT_SetRealDataCallBackEx2(lRet, RealDataCallBackEx, (LDWORD)this, 0x0f);CPlayWnd* pWnd = (CPlayWnd*)FromHandle(hWnd);pWnd->SetWndPlaying(true);
}

第2步:在实况流回调函数中将码流送入帧分析库
在这里需要引入分析库StreamAnalyzer.dll,并声明一个处理句柄:ANA_HANDLE m_hParser。后续对私有流的解析都要用到这个句柄。

void CALLBACK RealDataCallBackEx(LLONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize, LLONG lParam, LDWORD dwUser)
{LONG lRealPort=GetStreamPort(lRealHandle);if (0 == lRealPort){return;}//Input the stream data getting from the cardBOOL bInput=FALSE;switch(dwDataType) {case 0://Original data ANA_InputData(m_hParser, pBuffer, dwBufSize);ANA_FRAME_INFO frame;memset(&frame, 0, sizeof(frame));//int ret = 0;while ((/*ret = */ANA_GetMediaFrame(m_hParser, &frame)) == 0){if (((frame.bValid & (1 << E_STREAM_LENGTH)) != 0)|| ((frame.bValid & (1 << E_STREAM_HEADER)) != 0)|| ((frame.bValid & (1 << E_STREAM_VERIFY)) != 0)|| (frame.bValid & (1 << E_STREAM_WATERMARK)))continue;AanlyData(&frame);}break;case 1://data with frame info break;case 2://yuv data break;case 3://pcm audio data break;       default:break;}
}

第3步:获取H264裸流

void AanlyData(const ANA_FRAME_INFO* frame)
{if (!frame || !frame->pHeader || frame->nLength <= 0)return;BOOL isKeyFrame = false;#if 0printf("nType=%d nSubType=%d nStreamType=%d nEncodeType=%2d nLength=%6d nBodyLength=%6d ", frame->nType, frame->nSubType, frame->nStreamType, frame->nEncodeType, frame->nLength, frame->nBodyLength);u_char* payload = frame->pFrameBody;//H264 NALUfor (int i = 0; i < 16*3; i++){printf("%.2x ", payload[i]);}printf("\r\n");
#endifif (frame->nType == FRAME_TYPE_VIDEO){if(frame->nEncodeType == ENCODE_VIDEO_DH_H264){uint32_t streamType = STREAM_TYPE_VIDEO;uint32_t codecType = VIDEO_TYPE_H264;/* 进行后续操作,如打包PS等 */}}else if (frame->nType == FRAME_TYPE_AUDIO && m_v_streamid>0){if (frame->nEncodeType == ENCODE_AUDIO_G711A){uint32_t streamType = STREAM_TYPE_AUDIO;uint32_t codecType = AUDIO_TYPE_G711A;}}else{return;}
}

调取大华SDK获取IPC音视频流并得到H264帧相关推荐

  1. linux 摄像头 音频,调用宇视摄像机SDK获取IPC的音视频码流

    调用宇视摄像机SDK获取IPC的音视频码流 2020年07月13日 | 萬仟网网络运营 | 我要评论 通过调取宇视摄像机SDK,获取的音视频码流,其格式为标准的h264 over rtp或h265 o ...

  2. 海康SDK/大华SDK安防视频智能分析平台EasyCVR如何将通道视频流推送至CDN分发?

    EasyCVR视频协议融合平台不仅支持常规协议的接入,我们还拓展了海康SDK.大华SDK.Ehome等私有协议.如果前端设备协议不同且数量较多,则可以通过EasyCVR平台来对所有视频通道做整合和统一 ...

  3. 大华SDK+JAVA+4g网络摄像头进行二次开发

    前言 监控,相信大家都不陌生.现在的监控技术发展迅速,国内以海康威视为首的智能视频监控提供商也层出不穷.现在,这些提供商都已经提供了相应的SDK以及API接口,能够很好的支撑我们进行摄像机的二次开发工 ...

  4. 大华摄像头获取yuv数据

    这里我把从大华公司获取的资料代码贴出来,希望对大家有所帮助. // DecCallBack.cpp : Defines the entry point for the console applicat ...

  5. 大华硬盘录像机通过大华SDK接入EasyCVR,为何出现无法在线的情况?

    EasyCVR视频融合云平台开放度高.兼容性强.可支持灵活拓展与第三方集成,目前已经成为安防市场主流的视频能力层服务平台.平台可支持多协议.多类型的设备接入,包括国标GB28181.RTSP/Onvi ...

  6. 视频融合协议安防监控系统EasyCVR支持大华SDK接入设备录像下载流程说明

    上一篇我们讲了EasyCVR视频协议融合平台已经支持了大华SDK协议设备的接入,并且分享了录像回放流程,目前其他私有协议仍在拓展和开发当中.本文我们再分享一下EasyCVR接入大华SDK协议设备后的录 ...

  7. EasyCVR通过大华SDK接入设备不能进行云台控制,如何判断是否为设备问题?

    EasyCVR视频融合云服务支持多协议.多类型的设备接入,包括IPC.NVR.编码器.单兵设备.移动执法仪等常见的视频源设备,可覆盖市面上大多数厂商的视频监控等设备.平台具备强大的视频汇聚与管理.数据 ...

  8. 基于大华SDK的二次开发,用于网络摄像头图像的实时显示和捕获(附源码)

    目录 1. 文章背景 2. 主要模块 2.1 初始化SDK 2.2 登录账号 2.3 捕获图片 2.4 实时显示 2.5 断开时释放 2.6 回调函数 3. 源代码 3.1 头文件 3.2 源文件 1 ...

  9. java对接大华SDK摄像头监控

    java对接大华SDK摄像头监控 SDK对接 java对接大华SDK摄像头监控 前言 获取SDK 配置环境变量 拉取实时监控数据 补充 前言 小编在接到对接大华摄像头实时监控在网页显示直播视频,先是在 ...

最新文章

  1. rbf神经网络_基于RBF神经网络的监督控制(09)
  2. 理解javascript中的回调函数(callback)【转】
  3. js实现焦点进入文本框内关闭输入法:imeMode
  4. wxWidgets:wxTimerEvent类用法
  5. 如何利用云原生技术构建现代化应用
  6. CSS 七层叠层顺序(stacking level)
  7. python中abc属于字符串吗_在Python中,字符串s = 'abc',那么执行表达式s+'d'之后,s的打印结果是( )。...
  8. Python 程序 运行过程
  9. php开发电商项目的技术,[项目实战] php电商开发基本功课程 电商后台实战开发视频教程 共6章...
  10. SPOJ HIGH Highways
  11. 矩阵平均路径长度_Android自定义View-路径动画
  12. Spring Cloud Config - RSA简介以及使用RSA加密配置文件
  13. 使用cairo绘制图形的部分函数总结
  14. sql SELECT时的with(nolock)选项说明
  15. JAVA中当子类覆盖一个父类的_java – 当子类中的某个方法被覆盖时,父类如何运行?...
  16. 免费翻译软件哪个好用
  17. 计算机管理如何格式化u盘,详细教您如何格式化u盘
  18. amap_flutter_map 初始化地图后将当前位置设为地图的中心点
  19. HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型
  20. 请每一个孝顺的子女耐心的看下去!

热门文章

  1. 文科高中毕业学计算机技术,一位高中生的困惑:成绩好的学理科,成绩差的学文科?...
  2. genicam 相机java,机器视觉必知-GenICam相机通用接口标准
  3. Mac Terminal (终端) 使用ssh快速登录远程服务器
  4. 如何快速连接别人共享的打印机?
  5. 从0到1教你设计业务系统
  6. tplink 虚拟服务器没有https,tplink虚拟服务器设置
  7. 学生选课系统---数据库课程设计SQL Server
  8. 经颅磁刺激后EEG神经网络的大规模变化
  9. 面向Web服务的游戏设计1:选择适合的Silverlight通信技术
  10. HPC走出全新路线:《开放架构HPC技术与生态白皮书》注解