溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

大華網(wǎng)絡(luò)攝像機(jī)SDK對(duì)接

發(fā)布時(shí)間:2020-06-12 08:51:29 來(lái)源:網(wǎng)絡(luò) 閱讀:2935 作者:fengyuzaitu 欄目:軟件技術(shù)

1)演示程序\Mfc分類Demo中有04.遠(yuǎn)程抓圖19.槍球聯(lián)動(dòng)等功能說(shuō)明

關(guān)于視音頻的數(shù)據(jù)格式有兩種

// 編碼格式, 包括音頻和視頻
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;?????// 視頻圖像質(zhì)量
?AV_int32???nVideoPack;??????// 視頻打包模式, 0-DHAV, 1-PS?
};


嘗試使用如下代碼設(shè)置視音頻數(shù)據(jù)的格式為PS,而不是大華的私有流協(xié)議,暫時(shí)無(wú)效

?NET_ENCODE_VIDEO_PACK_INFO struEnCodeInfo = { 0 };
?struEnCodeInfo.dwSize = sizeof(struEnCodeInfo);

//指定主碼流
?struEnCodeInfo.emFormatType = EM_FORMAT_MAIN_NORMAL;

//先查看當(dāng)前的視頻流格式
?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);
?}

//設(shè)置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.編碼配置例子中對(duì)視音頻的編碼可以設(shè)置,目前通過(guò)OnVideoDlgToStu設(shè)置PS,抓包沒(méi)有找到對(duì)應(yīng)的PS頭字段,需要保存文件分析


2)工程編譯問(wèn)題

問(wèn)題1)

1>BSWndContainer.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _xMonitorFromWindow@8,該符號(hào)在函數(shù) "int __cdecl GetCurrentScreenMonitorRect(struct HWND__ *,struct tagRECT &)" (?GetCurrentScreenMonitorRect@@YAHPAUHWND__@@AAUtagRECT@@@Z) 中被引用
1>BSWndContainer.obj : error LNK2019: 無(wú)法解析的外部符號(hào) _xGetMonitorInfo@8,該符號(hào)在函數(shù) "int __cdecl GetCurrentScreenMonitorRect(struct HWND__ *,struct tagRECT &)" (?GetCurrentScreenMonitorRect@@YAHPAUHWND__@@AAUtagRECT@@@Z) 中被引用


源代碼

#include "BSWndContainer.h"
#pragma?? warning(disable:4706)??
//#define?? COMPILE_MULTIMON_STUBS??
#include?? <multimon.h>??
#pragma?? warning(default:4706)?


修改后

#include "BSWndContainer.h"
#pragma?? warning(disable:4706)??
#define?? COMPILE_MULTIMON_STUBS ? //取消注釋
#include?? <multimon.h>??
#pragma?? warning(default:4706) ?


問(wèn)題2)

error C3861: “_Min”: 找不到標(biāo)識(shí)符

源代碼:

int nMinChannel = _Min(m_ChannelNum, _Min(nNum, MAX_RECORD_CHANNEL));


修改后:
int nMinChannel = min(m_ChannelNum, min(nNum, MAX_RECORD_CHANNEL));


大華私有流對(duì)接優(yōu)勢(shì)

1)大華設(shè)備進(jìn)行rtsp交互耗時(shí)1500毫秒

2)SDK私有協(xié)議對(duì)接耗時(shí)600毫秒


3)如下是大華私有視頻流的說(shuō)明

1.2 DHFS視頻監(jiān)控幀格式解析
  幀是視頻監(jiān)控?cái)?shù)據(jù)組成的基本單位,視頻監(jiān)控?cái)?shù)據(jù)是由許多幀按照一定的順序組合而成,幀存在多種類型,而且?guī)拇笮〔还潭ǎ總€(gè)幀的起始位置不一定只出現(xiàn)在扇區(qū)或塊的起始地址,它可以出現(xiàn)在任何合理的物理地址范圍內(nèi)。大華視頻監(jiān)控文件中視頻幀是由其自定義的網(wǎng)絡(luò)通訊協(xié)議封裝RTP載荷的H.264碼流組成,大華視頻幀與一般的H.264編碼的視頻幀是不同的,它對(duì)原始H.264視頻數(shù)據(jù)進(jìn)行了多次封裝。
  由于大華視頻每幀中都含有特定的網(wǎng)絡(luò)通訊協(xié)議頭部信息和尾部信息,通過(guò)分析幀中網(wǎng)絡(luò)通訊協(xié)議頭或尾部的數(shù)據(jù)特點(diǎn)可以實(shí)現(xiàn)對(duì)視頻幀進(jìn)行搜索和定位,經(jīng)過(guò)大量實(shí)驗(yàn)發(fā)現(xiàn)其幀起始特定標(biāo)志為大寫字母DHAV,十六進(jìn)制表示為0x44484156,幀結(jié)束標(biāo)志為小寫字母dhav,十六進(jìn)制表示為0x64686176(見圖1)。大華幀頭部結(jié)構(gòu)中記錄了基本的視頻屬性信息,例如幀的編號(hào)、幀所屬通道號(hào)、幀長(zhǎng)度以及幀的創(chuàng)建時(shí)間等等。這些屬性是視頻監(jiān)控?cái)?shù)據(jù)進(jìn)行通道分離與重組的關(guān)鍵信息,其中與視頻監(jiān)控恢復(fù)相關(guān)的屬性信息,如表1所示,頭部結(jié)構(gòu)中相對(duì)DHAV標(biāo)識(shí)偏移量為0x04描述的是幀類型;如圖1中偏移0x06位置描述通道號(hào),此幀的通道號(hào)是0x0005,具體含義表示為6通道,因?yàn)橥ǖ捞?hào)是0作為基數(shù)表示1通道;0x08描述的是此幀編號(hào),考慮到大小端表達(dá)形式,十六進(jìn)制表示為0x47D0;相對(duì)DHFS偏移0x0C是此幀的長(zhǎng)度,此幀長(zhǎng)度是0x00000F80,十進(jìn)制表示為3698字節(jié);相對(duì)DHAV偏移0x10是描述此幀的創(chuàng)建時(shí)間信息,十六進(jìn)制表示為0x39308EBB。如圖1中dhav后四個(gè)字節(jié)為幀長(zhǎng)度,十六進(jìn)制表達(dá)式為0x20F8,轉(zhuǎn)換成十進(jìn)制為8840字節(jié),用于校驗(yàn)。尾部結(jié)束標(biāo)志為小寫字母dhav,具體幀尾部結(jié)構(gòu)見表2。

圖1 DHFS文件系統(tǒng)的幀頭與幀尾
  Fig.1 Frame head and tail in DHFS
  2 DHFS視頻監(jiān)控存儲(chǔ)方式研究
  2.1 DHFS視頻文件存儲(chǔ)方式分析
  視頻監(jiān)控采用實(shí)時(shí)文件順序存儲(chǔ)方式,整體的基本布局結(jié)構(gòu)如圖2上所示,從文件系統(tǒng)數(shù)據(jù)區(qū)可以分析出大華視頻監(jiān)控文件系統(tǒng)的標(biāo)識(shí),視頻監(jiān)控存儲(chǔ)塊大小等信息,這些參數(shù)對(duì)于大華視頻監(jiān)控?cái)?shù)據(jù)的恢復(fù)有十分重要的作用,例如DHFS會(huì)實(shí)時(shí)分配給各個(gè)視頻通道2 MB存儲(chǔ)空間,該值由啟動(dòng)扇區(qū)中相應(yīng)參數(shù)定義,各通道的視頻片段以2 MB為分割,在磁盤中順序交替存儲(chǔ),但是有些情況下也存在連續(xù)存放單一通道2 MB視頻片段的情況,假設(shè)CHn表示所屬通道的2 MB視頻片段,在只有3個(gè)通道的視頻監(jiān)控系統(tǒng)中,DHFS文件系統(tǒng)中各通道視頻片段存儲(chǔ)排列情況如圖2下所示,視頻片段代表視頻存儲(chǔ)過(guò)程中一個(gè)2 MB的視頻數(shù)據(jù)塊,其中編號(hào)為1~6的視頻片段為正常錄制視頻監(jiān)控的情況,各個(gè)通道視頻片段交替存儲(chǔ)。編號(hào)6~10屬于連續(xù)錄制同一通道監(jiān)控視頻的情況。如果DHFS文件系統(tǒng)誤格式化或部分視頻覆蓋的情況下,視頻監(jiān)控系統(tǒng)的文件系統(tǒng)遭到破壞,視頻監(jiān)控的恢復(fù)需要通過(guò)通道分離與重組進(jìn)行還原,即分離出1、4、8編號(hào)的視頻片段,重組成通道一的視頻監(jiān)控文件,分離出2、5、9、10編號(hào)的視頻片段,重組成通道二的視頻監(jiān)控文件,分離出3、6、7編號(hào)的視頻片段,重組成通道三的視頻監(jiān)控文件。因此對(duì)于DHFS文件系統(tǒng)數(shù)據(jù)取證問(wèn)題,將轉(zhuǎn)化成如何確

  表1 DHFS幀頭部結(jié)構(gòu)
  Table 1 Frame head structure of DHFS
┌───────┬───────┬─────────────────────┐
│偏移量    │占用字節(jié)   │含義                   │
├───────┼───────┼─────────────────────┤
│0x00     │4       │幀起始標(biāo)識(shí)0x44484156           │
├───────┼───────┼─────────────────────┤
│0x04     │2       │幀類型                  │
├───────┼───────┼─────────────────────┤
│0x06     │2       │幀通道                  │
├───────┼───────┼─────────────────────┤
│0x08     │4       │幀編號(hào)                  │
├───────┼───────┼─────────────────────┤
│0x0C     │4       │幀長(zhǎng)度                  │
├───────┼───────┼─────────────────────┤
│0x10     │4       │幀創(chuàng)建時(shí)間                │
└───────┴───────┴─────────────────────┘

  表2 DHFS幀尾部結(jié)構(gòu)
  Table 2 Frame tail structure of DHFS
┌────────┬────────┬───────────────────┐
│偏移量     │占用字節(jié)    │含義                 │
├────────┼────────┼───────────────────┤
│0x00      │4        │幀結(jié)束標(biāo)識(shí)0x64686176         │
├────────┼────────┼───────────────────┤
│0x04      │4        │幀長(zhǎng)度                │
└────────┴────────┴───────────────────┘






向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI