大华sdk对接php,大华网络摄像机SDK对接
1)演示程序\Mfc分类Demo中有04.远程抓图19.枪球联动等功能说明
关于视音频的数据格式有两种
// 编码格式, 包括音频和视频
struct AV_CFG_EncodeFormat
{
AV_int32 nStructSize;
AV_BOOL bAudioEnable; // 音频使能
AV_int32 nAudioBitRate; // 音频比特率
CFG_AUDIO_FORMAT emAudioCompression; // 音频压缩模式
AV_int32 nAudioDepth; // 音频采样深度
AV_int32 nAudioFrequency; // 音频采样频率
AV_int32 nAudioMode; // 音频编码模式
AV_int32 nAudioPack; // 音频打包模式, 0-DHAV, 1-PS
AV_BOOL bVideoEnable; // 视频使能
AV_int32 nVideoBitRate; // 视频比特率
CFG_BITRATE_CONTROL emVideoBitRateControl; // 码流控制模式
CFG_VIDEO_COMPRESSION emVideoCompression; // 视频压缩模式
AV_int32 nVideoFPS; // 视频帧率
AV_int32 nVideoGOP; // 视频I帧间隔
AV_int32 nVideoWidth; // 视频宽度
AV_int32 nVideoHeight; // 视频高度
CFG_IMAGE_QUALITY emVideoQuality; // 视频图像质量
AV_int32 nVideoPack; // 视频打包模式, 0-DHAV, 1-PS
};
尝试使用如下代码设置视音频数据的格式为PS,而不是大华的私有流协议,暂时无效
NET_ENCODE_VIDEO_PACK_INFO struEnCodeInfo = { 0 };
struEnCodeInfo.dwSize = sizeof(struEnCodeInfo);
//指定主码流
struEnCodeInfo.emFormatType = EM_FORMAT_MAIN_NORMAL;
//先查看当前的视频流格式
bool bRet = CLIENT_GetConfig(id, NET_EM_CFG_ENCODE_VIDEO_PACK, 1, (void*)&struEnCodeInfo, sizeof(struEnCodeInfo));
DWORD err = 0;
if (!bRet)
{
err = CLIENT_GetLastError()&(0x7fffffff);
}
//设置PS流格式
struEnCodeInfo.emPackType = EM_PACK_PS;
bRet = CLIENT_SetConfig(id, NET_EM_CFG_ENCODE_VIDEO_PACK, 1, (void*)&struEnCodeInfo, sizeof(struEnCodeInfo));
bRet = CLIENT_GetConfig(id, NET_EM_CFG_ENCODE_VIDEO_PACK, 1, (void*)&struEnCodeInfo, sizeof(struEnCodeInfo));
注意:06.编码配置例子中对视音频的编码可以设置,目前通过OnVideoDlgToStu设置PS,抓包没有找到对应的PS头字段,需要保存文件分析
2)工程编译问题
问题1)
1>BSWndContainer.obj : error LNK2019: 无法解析的外部符号 _xMonitorFromWindow@8,该符号在函数 "int __cdecl GetCurrentScreenMonitorRect(struct HWND__ *,struct tagRECT &)" (?GetCurrentScreenMonitorRect@@YAHPAUHWND__@@AAUtagRECT@@@Z) 中被引用
1>BSWndContainer.obj : error LNK2019: 无法解析的外部符号 _xGetMonitorInfo@8,该符号在函数 "int __cdecl GetCurrentScreenMonitorRect(struct HWND__ *,struct tagRECT &)" (?GetCurrentScreenMonitorRect@@YAHPAUHWND__@@AAUtagRECT@@@Z) 中被引用
源代码
#include "BSWndContainer.h"
#pragma warning(disable:4706)
//#define COMPILE_MULTIMON_STUBS
#include
#pragma warning(default:4706)
修改后
#include "BSWndContainer.h"
#pragma warning(disable:4706)
#define COMPILE_MULTIMON_STUBS //取消注释
#include
#pragma warning(default:4706)
问题2)
error C3861: “_Min”: 找不到标识符
源代码:
int nMinChannel = _Min(m_ChannelNum, _Min(nNum, MAX_RECORD_CHANNEL));
修改后:
int nMinChannel = min(m_ChannelNum, min(nNum, MAX_RECORD_CHANNEL));
大华私有流对接优势
1)大华设备进行rtsp交互耗时1500毫秒
2)SDK私有协议对接耗时600毫秒
3)如下是大华私有视频流的说明
1.2 DHFS视频监控帧格式解析
帧是视频监控数据组成的基本单位,视频监控数据是由许多帧按照一定的顺序组合而成,帧存在多种类型,而且帧的大小不固定,每个帧的起始位置不一定只出现在扇区或块的起始地址,它可以出现在任何合理的物理地址范围内。大华视频监控文件中视频帧是由其自定义的网络通讯协议封装RTP载荷的H.264码流组成,大华视频帧与一般的H.264编码的视频帧是不同的,它对原始H.264视频数据进行了多次封装。
由于大华视频每帧中都含有特定的网络通讯协议头部信息和尾部信息,通过分析帧中网络通讯协议头或尾部的数据特点可以实现对视频帧进行搜索和定位,经过大量实验发现其帧起始特定标志为大写字母DHAV,十六进制表示为0x44484156,帧结束标志为小写字母dhav,十六进制表示为0x64686176(见图1)。大华帧头部结构中记录了基本的视频属性信息,例如帧的编号、帧所属通道号、帧长度以及帧的创建时间等等。这些属性是视频监控数据进行通道分离与重组的关键信息,其中与视频监控恢复相关的属性信息,如表1所示,头部结构中相对DHAV标识偏移量为0x04描述的是帧类型;如图1中偏移0x06位置描述通道号,此帧的通道号是0x0005,具体含义表示为6通道,因为通道号是0作为基数表示1通道;0x08描述的是此帧编号,考虑到大小端表达形式,十六进制表示为0x47D0;相对DHFS偏移0x0C是此帧的长度,此帧长度是0x00000F80,十进制表示为3698字节;相对DHAV偏移0x10是描述此帧的创建时间信息,十六进制表示为0x39308EBB。如图1中dhav后四个字节为帧长度,十六进制表达式为0x20F8,转换成十进制为8840字节,用于校验。尾部结束标志为小写字母dhav,具体帧尾部结构见表2。
图1 DHFS文件系统的帧头与帧尾
Fig.1 Frame head and tail in DHFS
2 DHFS视频监控存储方式研究
2.1 DHFS视频文件存储方式分析
视频监控采用实时文件顺序存储方式,整体的基本布局结构如图2上所示,从文件系统数据区可以分析出大华视频监控文件系统的标识,视频监控存储块大小等信息,这些参数对于大华视频监控数据的恢复有十分重要的作用,例如DHFS会实时分配给各个视频通道2 MB存储空间,该值由启动扇区中相应参数定义,各通道的视频片段以2 MB为分割,在磁盘中顺序交替存储,但是有些情况下也存在连续存放单一通道2 MB视频片段的情况,假设CHn表示所属通道的2 MB视频片段,在只有3个通道的视频监控系统中,DHFS文件系统中各通道视频片段存储排列情况如图2下所示,视频片段代表视频存储过程中一个2 MB的视频数据块,其中编号为1~6的视频片段为正常录制视频监控的情况,各个通道视频片段交替存储。编号6~10属于连续录制同一通道监控视频的情况。如果DHFS文件系统误格式化或部分视频覆盖的情况下,视频监控系统的文件系统遭到破坏,视频监控的恢复需要通过通道分离与重组进行还原,即分离出1、4、8编号的视频片段,重组成通道一的视频监控文件,分离出2、5、9、10编号的视频片段,重组成通道二的视频监控文件,分离出3、6、7编号的视频片段,重组成通道三的视频监控文件。因此对于DHFS文件系统数据取证问题,将转化成如何确
表1 DHFS帧头部结构
Table 1 Frame head structure of DHFS
┌───────┬───────┬─────────────────────┐
│偏移量 │占用字节 │含义 │
├───────┼───────┼─────────────────────┤
│0x00 │4 │帧起始标识0x44484156 │
├───────┼───────┼─────────────────────┤
│0x04 │2 │帧类型 │
├───────┼───────┼─────────────────────┤
│0x06 │2 │帧通道 │
├───────┼───────┼─────────────────────┤
│0x08 │4 │帧编号 │
├───────┼───────┼─────────────────────┤
│0x0C │4 │帧长度 │
├───────┼───────┼─────────────────────┤
│0x10 │4 │帧创建时间 │
└───────┴───────┴─────────────────────┘
表2 DHFS帧尾部结构
Table 2 Frame tail structure of DHFS
┌────────┬────────┬───────────────────┐
│偏移量 │占用字节 │含义 │
├────────┼────────┼───────────────────┤
│0x00 │4 │帧结束标识0x64686176 │
├────────┼────────┼───────────────────┤
│0x04 │4 │帧长度 │
└────────┴────────┴───────────────────┘
大华sdk对接php,大华网络摄像机SDK对接相关推荐
- 大华视频服务器sdk显示,大华网络摄像机SDK对接
1)演示程序\Mfc分类Demo中有04.远程抓图19.枪球联动等功能说明 关于视音频的数据格式有两种 // 编码格式, 包括音频和视频 struct AV_CFG_EncodeFormat { AV ...
- 海康android sdk联外网,海康网络摄像机SDK对接
Windows下 1. 更新设备网络SDK时,SDK开发包[库文件]里的HCNetSDK.dll.HCCore.dll.HCNetSDKCom文件夹.PlayCtrl.dll.SuperRender. ...
- 海康威视网络摄像机 SDK二次开发(JAVA)
1.下载地址 https://www.hikvision.com/cn/download_more_406.html#prettyPhoto 根据各自情况,选择win32或者win64位 64位下载之 ...
- 高清网络摄像机主流芯片方案之安霸、TI和海思对比
高清网络视频监控发展到今天,市场也开始进入真正的高清时代,诸多有实力的高清摄像机厂家的产品线也逐渐完善起来,高清网络视频监控的配套产品有更加丰富和成熟.与此同时困扰很多人的高清网络摄像机与后端平台或者 ...
- 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
(本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...
- 高清网络摄像机主流芯片方案之安霸、德仪和海思对比
(本文由四川艾普视达数码科技有限公司 苏彬.范清华 搜集整理) 高清网络视频监控发展到今天,市场也开始进入真正的高清时代,诸多有实力的高清摄像机厂家的产品线也逐渐完善起来,高清网络视频监控的配套产品有 ...
- ipcam 网络摄像机介绍
网络服务器的核心功能,目前,网络摄像机的主要解决方案有DSP和ASIC两大阵营,DSP方面,主要有TI.ADI等,而ASIC解决方案中,近期比较成功的有映佳和海思的方案,下面我们就这些核心方案进行一个 ...
- 网络摄像机rtsp地址详解。
RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetworks公司提交的 ...
- 海康、大华网络摄像机RTSP URL格式组成及参数配置
经常有开发者咨询我们关于海康.大华网络摄像机RTSP url拼接规则和相关参数配置,虽然很简单,考虑到资料不全,写个博客记录下: 1. 海康摄像机: 在IE浏览器输入网络摄像机的IP地址,输入配置的用 ...
最新文章
- matlab-xlsread无法打开文件找不到文件
- python 每日温度
- Redis:相关知识点纵观
- 撰写论文时word使用诀窍标题
- 利用redis写webshell
- Python批量添加库搜索路径
- 使用ros发布UVC相机和串口IMU数据
- python gdb coredump_Linux段错误及GDB Coredump调试方法
- 32岁妈妈适合转行做软件测试吗,32+大龄妈妈,AMH偏低,可丽蓝助力好孕一次就中...
- c# 去除字符串中的换行符 \r\n
- 生命剩下24小时应该做什么
- AndroidStudio与eclipse打包的时候报错。Error:(4) Error: ssdk_instapager_login_html is not translated in......
- 【POJ 1733】Parity game【带权并查集维护奇偶】
- 安装axure插件以便打开原型文件
- FCM算法的matlab程序
- 荣耀9igoogle模式_将iGoogle设为Microsoft Outlook中的启动页
- k8s 部署 xxl-job-admin:2.3.0
- PoseCNN DOPE Yolo-6D对比总结
- 贩妖记 第三百七十五章,教授笔记
- 二维小波变换_让你永远忘不了的傅立叶变换解析
热门文章
- 【CF #811 Div3】 A-E
- 程序员常用的网站(转)
- php通过链接获取公众号文章内容,php公众号链接提取文章标题、封面图、摘要、作者、公众号名称、简介、微信号、正文...
- 【记录3】小程序账号冻结之十分钟内解决(忘记原始ID或者公众号名称的解决方法)
- Motorola XOOM平板电脑(wingray)刷机方法
- 灰太狼的数据世界(四)
- Ellisys Bluetooth Sniffer 文档 (EEN-BT06) - 蓝牙安全 - 真相还是虚构?
- S3C2440裸机------异常与中断__swi异常模式程序示例
- 20@nginx优化
- 基于单片机的红外报警系统设计