调用宇视摄像机SDK获取IPC的音视频码流

2020年07月13日

| 萬仟网网络运营

我要评论

通过调取宇视摄像机SDK,获取的音视频码流,其格式为标准的h264 over rtp或h265 over rtp。需通过解析rtp从而提取出纯H264/H265及音频帧数据。获得的数据均是裸的视频帧或音频帧。第1步:调用sdk获取实况码流NETDEV_PREVIEWINFO_S stNetInfo;memset(&stNetInfo, 0, sizeof stNetInfo);stNetInfo.dwChannelID = m_nChannel;stNetInfo.hPlayWnd

通过调取宇视摄像机SDK,获取的音视频码流,其格式为标准的h264 over rtp或h265 over rtp。需通过解析rtp从而提取出纯H264/H265及音频帧数据。获得的数据均是裸的视频帧或音频帧。

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

NETDEV_PREVIEWINFO_S stNetInfo;

memset(&stNetInfo, 0, sizeof stNetInfo);

stNetInfo.dwChannelID = m_nChannel;

stNetInfo.hPlayWnd = NULL;

stNetInfo.dwStreamType = 0;//main

stNetInfo.dwLinkMode = NETDEV_TRANSPROTOCAL_RTPTCP;

m_lRealplayHandle = NETDEV_RealPlay(m_lpDevLoginHandle, &stNetInfo, RealDataCallBack, (LPVOID)this);

第2步:在码流回调函数中解析rtp

void CALLBACK RealDataCallBack(IN LPVOID lpPlayHandle,

IN const BYTE *pucBuffer,

IN INT32 dwBufSize,

IN INT32 dwMediaDataType,

IN LPVOID lpUserParam

)

{

RTP_HDR *pHdr = (RTP_HDR*)pucBuffer;//可通过其他方式解析得到rtp头部

/*

宇视摄像机的负载类型 pHdr->pt:

108 H265

105 H264

26MJPEG

8PCMA

0PCMU

104 AAC

*/

if (pHdr->pt == 105)

{

ProcessV_H264(lpPlayHandle, pucBuffer, dwBufSize);

}

else if (pHdr->pt == 108)

{

ProcessV_H265(lpPlayHandle, pucBuffer, dwBufSize);

}

if (pHdr->pt == 8)

{

ProcessA_PCMA(lpPlayHandle, pucBuffer, dwBufSize);

}

else if (pHdr->pt == 0)

{

ProcessA_PCMU(lpPlayHandle, pucBuffer, dwBufSize);

}

else if (pHdr->pt == 104)

{

ProcessA_AAC(lpPlayHandle, pucBuffer, dwBufSize);

}

}

第3步:解析rtp负载,获取H264/H265/AUDIO帧

获取H264依据:rfc3984 (最新的h264 over rtp 已经是rfc6184)

获取H265依据:rfc7798

一探究竟

其实我们也可以通过Wireshark抓包来一探宇视SDK这种回调数据包格式的秘密。从下图可以看出,宇视SDK取流其实就走的rtsp协议。因此说,SDK给回调函数RealDataCallBack()的buffer其实就是rtp。从这个思路讲,我们解析宇视的码流其实就跟解析rtsp是一个道理。我们费劲调用它的sdk获取并解析码流,还不如使用live555等库直接获取码流。毕竟我们自己研究解析h264/h265 over rtp肯定不如这些库的作者对它们的研究来的深入和全面。

本文地址:https://blog.csdn.net/aflyeaglenku/article/details/107245119

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

相关文章:

linux c中多线程与volatile变量

volatile 修饰的变量表示改变量的值是易变的,编译器不对其进行优化,访问该变量...

环境系统:ubuntu18.04 软件:qt5.12.8一、下载安装包下载地址点击需要的版本(我们这里选择.run的)会跳转到一个选择源的界面,国内选择(cn)...

/******************

* 内核的调试技术

******************/

(1)内核...

二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b" ]...

大多数人在使用 bash 时,都会对其进行改造,因为默认的设置真的好难用~

参考以下 ~/.inputrc 设置:

复制代码 代...

目标将命令iostat中的一项数据在zabbix前端监控中显示。iostat命令iostat命令被用于监视系统输入输出设备和cpu的使用情况这里取出磁盘sda的...

详解linux系统配置nginx的负载均衡

负载均衡的几种方式:

1.轮询:默认按照时间顺序对所有服务器一个一个的访问,如果...

一、准备工作: 1台pc机,安装linux操作系统 参考文档linux安装.docx 2 gcc的安装 参考文档gcc的安装.zip...

复制代码 代码如下:#!/bin/bash#this script is use for describle cpu hard me...

linux使用 iftop 实时监控网卡的流量,,具体内容如下所示:

iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析ip、显示...

网友评论

验证码:

linux 摄像头 音频,调用宇视摄像机SDK获取IPC的音视频码流相关推荐

  1. 宇视摄像机 SDK取流失败解决方案

    场景 相同的产品型号:HIC5641,通过2.1和2.5版本的SDK demo都是同样的效果,登陆设备成功,点击异常摄像机的时候,没有任何打印 正常播放软件版本:QIPC-B6301.7.2.2010 ...

  2. TSINGEE青犀视频平台如何调用宇视SDK实现视频录像回放?

    TSINGSEE青犀视频的视频云服务平台已经实现了对接多个主流厂家的私有协议与SDK,如海康Ehome协议.海康SDK.大华SDK,目前我们仍在持续拓展更多厂家的SDK,以满足更多用户的场景需求. 今 ...

  3. 调取大华SDK获取IPC音视频流并得到H264帧

    本文为博主原创文章,未经博主允许不得转载.(合作洽谈请联系QQ:1010316426) 通过调取大华摄像机SDK,获取的音视频码流,其格式为大华的私有格式.需通过大华的码流分析库StreamAnaly ...

  4. 宇视摄像机接入TSINGSEE青犀视频平台,如何基于SDK获取设备的组织和摄像机?

    TSINGSEE青犀视频Easy系列视频平台,不仅支持市场主流协议如国标GB28181.RTSP/Onvif.RTMP等,还能对接厂家的私有协议,如海康Ehome.海康SDK.大华SDK等,更多私有协 ...

  5. 安防监控流媒体服务器对接宇视摄像机配置OCX插件安装时出现Failed to register ocx, error code 14001错误问题分析

    背景需求 随着雪亮工程.明厨亮灶.手机看店.智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网.微信直播,我们知道摄像头直播的春天了.将安防摄像头或NVR上的视频流转成互联网直播常用的RTMP.HT ...

  6. 宇视摄像机密码忘记找回方式(详细找回步骤)

    宇视摄像机密码忘记找回方式(详细找回步骤) IPC摄像机密码忘记,操作步骤如下: 尝试默认密码是否可以正常登陆,用户名admin,密码默认admin或者123456. 确认IPC是否有添加到上级VM平 ...

  7. 宇视摄像机默认用户名、密码、端口是多少

    答复:宇视摄像机默认用户名是admin,默认密码123456: 默认端口:HTTP80.HTTPS 443 .RTSP554

  8. 宇视摄像机巡航和自动跟踪哪个优先级高?

    问题: 宇视摄像机巡航和自动跟踪哪个优先级高? 答案:自动跟踪优先级高于巡航.

  9. 宇视摄像机码流类型定码率和变码率的区别?

    问题:宇视摄像机码流类型定码率和变码率的区别? 答案: 定码率:数据以恒定的码率进行传输,波动较小 变码率:码率会根据实况质量进行调整,波动较大

最新文章

  1. How is SAP CRM employee responsible being determined
  2. ES6之const命令
  3. 系统相机裁剪比例_拍照时图片比例怎么选?比构图还要提前一步的摄影攻略要做好...
  4. Spring 5的最终功能发行版即将来临
  5. 两边填上相同的数_二年级必考题,在括号里填上相同的数~
  6. VMware vMotion 实时虚拟机迁移
  7. java 面向对象继承的思想_Java面向对象思想!
  8. 转载-使用Nodepad++来编辑我们服务器的配置文件
  9. python机器学习库sklearn——降维
  10. MySQL常见故障处理手册_转
  11. 102 二叉树层序遍历Binary Tree Level Order Traversal @ Python
  12. ArcGIS Model批量矢量裁剪矢量
  13. c# 回调先进先出_Stack和Queue:后进先出和先进先出
  14. 在项目中后端开发所需要掌握的前端知识
  15. 民生问题:房价,房贷,首付之间的暖昧关系(借首页一放,点醒一下各位兄弟)
  16. 谈谈我了解的那些在线it学习网站
  17. Linux软件的安装
  18. 正交设计,OO与SOLID
  19. BroadCastReceiver 简介
  20. Linux 内核 3.3 和 3.4 简介

热门文章

  1. python语言最早的可用版本诞生于几几年_python语言公开发行版本诞生于哪年
  2. Android学习中使用百度定位出现经度纬度:4.9E-324问题
  3. 基于Java-SQL sever实现人事管理系统-数据库课程设计(附源码)
  4. Raft算法实现 - Sofa-JRaft,选主,数据写入,日志复制
  5. 隐藏攻击面,提升信息安全防范能力
  6. Mybatis之开启二级缓存
  7. 通过Kali Linux暴力破解WiFi密码
  8. jquery+css动画效果-数字跳动
  9. 论文阅读笔记:vTPM
  10. 计算机无法在安全模式下完成安装,我的电脑中了一种病毒,在安全模式下、微系统模式下都无法把它格式化,甚至重分区再低格后重装系统都不行啊...