??礢DK相關(guān)調(diào)查報(bào)告_第1頁
??礢DK相關(guān)調(diào)查報(bào)告_第2頁
??礢DK相關(guān)調(diào)查報(bào)告_第3頁
海康SDK相關(guān)調(diào)查報(bào)告_第4頁
??礢DK相關(guān)調(diào)查報(bào)告_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PAGEPAGE26目錄TOC\o"1-3"\u1.流媒體技術(shù)及流媒體服務(wù)器 21.1流媒體技術(shù) 21.2流媒體視頻轉(zhuǎn)發(fā)服務(wù)器 22.流媒體傳輸相關(guān)協(xié)議 22.1 TCP 22.2 UDP 42.3 RTP 42.4 RTCP 52.5 RTSP 53.??礢DK接口定義 63.1 備注 73.2 用戶注冊(cè) 7功能 7接口調(diào)用順序 7注意事項(xiàng): 93.3 實(shí)時(shí)預(yù)覽和云臺(tái)控制及相關(guān)模塊 9功能 9接口調(diào)用順序 10注意事項(xiàng) 163.4 回放和下載相關(guān)模塊 16功能 16接口調(diào)用順序 17注意事項(xiàng) 213.5 參數(shù)配置模塊 21功能 21接口調(diào)用順序 21注意事項(xiàng) 223.6 報(bào)警模塊 23功能 23接口調(diào)用順序 23注意事項(xiàng) 253.7 遠(yuǎn)程設(shè)備維護(hù)模塊 25功能 25接口調(diào)用順序 25注意事項(xiàng) 251.流媒體技術(shù)及流媒體服務(wù)器1.1流媒體技術(shù)流媒體(StreamingMedia)是指視頻、聲音和數(shù)據(jù)通過實(shí)時(shí)傳輸協(xié)議以連續(xù)流方式順序從源端向目的地傳輸,目的地只需接收到一定數(shù)據(jù)緩存后就可以立即播放的多媒體應(yīng)用。流媒體又根據(jù)流式傳輸?shù)牟煌瑢?shí)現(xiàn)方式分為順序傳輸流和實(shí)時(shí)傳輸流兩種。實(shí)時(shí)傳輸流指保證媒體信號(hào)帶寬與網(wǎng)絡(luò)連結(jié)匹配,使媒體內(nèi)容可被實(shí)時(shí)觀看到。實(shí)時(shí)流需要專用的流媒體服務(wù)器與傳輸協(xié)議,特別適合現(xiàn)場(chǎng)事件,也支持隨機(jī)訪問。用戶可以控制瀏覽的內(nèi)容。一般來說,如視頻為實(shí)時(shí)廣播,或使用流式傳輸服務(wù)器,或應(yīng)用如RISP的實(shí)時(shí)協(xié)議,即為實(shí)時(shí)傳輸流。而順序流是使用}Ⅱ1甲服務(wù)器順序下載文件。在下載文件的同時(shí),用戶可觀看己下載的那部分,而不能跳到還未下載的剩余部分,順序流不可根據(jù)用戶的連接速度作調(diào)整,嚴(yán)格來講,它不是真正意義上的流式傳輸技術(shù)。1.2流媒體視頻轉(zhuǎn)發(fā)服務(wù)器視頻轉(zhuǎn)發(fā)服務(wù)器是跨接兩個(gè)網(wǎng)絡(luò)的橋梁,具體地說,就是將由若干臺(tái)硬盤錄像機(jī)組成的局域網(wǎng)與公共網(wǎng)絡(luò)從物理上分離開,如企業(yè)內(nèi)部網(wǎng)、校園網(wǎng)等。這樣可以實(shí)現(xiàn)以下兩個(gè)目的:第一:硬盤錄像機(jī)提供的網(wǎng)絡(luò)服務(wù)功能是開放式的,只要是擁有它的客戶端播放軟件,并且知道硬盤錄像機(jī)的IP地址,就可以顯示它所提供的視頻圖像了。從這一點(diǎn)講,用于安防監(jiān)控領(lǐng)域中的硬盤錄像機(jī)是缺乏安全性的,這里主要指來源于網(wǎng)絡(luò)的病毒和惡意攻擊。當(dāng)采用視頻轉(zhuǎn)發(fā)服務(wù)器后,可以從物理上將硬盤錄像機(jī)組成的局域網(wǎng)與公共網(wǎng)絡(luò)分開,為硬盤錄像機(jī)提供了一道有效的安全保護(hù)措施。第二:視頻轉(zhuǎn)發(fā)服務(wù)器又相當(dāng)于架設(shè)在硬盤錄像機(jī)與客戶端之間的一道橋梁,客戶端要從硬盤錄像機(jī)取得的所有數(shù)據(jù)都必須經(jīng)過視頻轉(zhuǎn)發(fā)服務(wù)器,因此,視頻轉(zhuǎn)發(fā)服務(wù)器可以很容易地實(shí)現(xiàn)對(duì)視頻數(shù)據(jù)的編輯和修改。2.流媒體傳輸相關(guān)協(xié)議TCPTCP:TransmissionControlProtocol傳輸控制協(xié)議TCP是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運(yùn)輸層(Transportlayer)通信協(xié)議。TCP報(bào)文結(jié)構(gòu)源端口號(hào):標(biāo)明源設(shè)備端口號(hào),與IP頭確定唯一通訊端口目的端口號(hào):標(biāo)明目標(biāo)設(shè)備端口號(hào),與IP頭確定唯一通訊端口序列號(hào):用來標(biāo)識(shí)TCP源端設(shè)備向目的端設(shè)備發(fā)送的字節(jié)流,它表示在這個(gè)報(bào)文段中的第一個(gè)數(shù)據(jù)字節(jié)。如果將字節(jié)流看作在兩個(gè)應(yīng)用程序間的單向流動(dòng),則TCP用序列號(hào)對(duì)每個(gè)字節(jié)進(jìn)行計(jì)數(shù)。序列號(hào)是一個(gè)32bits的數(shù)。確認(rèn)序號(hào):包含發(fā)送確認(rèn)的一端所期望接收到的下一個(gè)序號(hào)。確認(rèn)序號(hào)應(yīng)該是上次已成功收到的數(shù)據(jù)字節(jié)序列號(hào)加1。首部長度:占4比特。給出頭部占32比特的數(shù)目。沒有任何選項(xiàng)字段的TCP頭部長度為20字節(jié);最多可以有60字節(jié)的TCP頭部。保留:由跟在數(shù)據(jù)偏移字段后的6位構(gòu)成,預(yù)留位通常為0.URG:緊急指針(urgentpointer)有效。ACK:確認(rèn)序號(hào)有效。PSH:接收方應(yīng)該盡快將這個(gè)報(bào)文段交給應(yīng)用層。RST:重建連接。SYN:發(fā)起一個(gè)連接。FIN:釋放一個(gè)連接。窗口大?。赫?6比特。此字段用來進(jìn)行流量控制。單位為字節(jié)數(shù),這個(gè)值是本機(jī)期望一次接收的字節(jié)數(shù)。檢驗(yàn)和:占16比特。對(duì)整個(gè)TCP報(bào)文段,即TCP頭部和TCP數(shù)據(jù)進(jìn)行校驗(yàn)和計(jì)算,并由目標(biāo)端進(jìn)行驗(yàn)證。緊急指針:占16比特。它是一個(gè)偏移量,和序號(hào)字段中的值相加表示緊急數(shù)據(jù)最后一個(gè)字節(jié)的序號(hào)。選項(xiàng):占32比特。可能包括"窗口擴(kuò)大因子"、"時(shí)間戳"等選項(xiàng)。UDPUDP:UserDatagramProtocol用戶數(shù)據(jù)包協(xié)議,UDP是一種無連接的運(yùn)輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)UDP報(bào)文結(jié)構(gòu)源端口號(hào):標(biāo)明源設(shè)備端口號(hào),與IP頭確定唯一通訊端口目的端口號(hào):標(biāo)明目標(biāo)設(shè)備端口號(hào),與IP頭確定唯一通訊端口UDP長度:標(biāo)明包括數(shù)據(jù)在內(nèi)的報(bào)文長度UDP檢驗(yàn)和:校檢位RTPRTP:Real-timeTransportProtocol實(shí)時(shí)傳輸協(xié)議RTP是針對(duì)Internet上多媒體數(shù)據(jù)流的一個(gè)運(yùn)輸層協(xié)議。RTP被定義為在一對(duì)一或一對(duì)多的傳輸情況下工作,其目的是提供時(shí)間信息和實(shí)現(xiàn)流同步。RTP協(xié)議就是提供了時(shí)間標(biāo)簽,序列號(hào)以及其它的結(jié)構(gòu)用于控制適時(shí)數(shù)據(jù)的流放。RTP的典型應(yīng)用建立在UDP上,但也可以在TCP等其他協(xié)議之上工作。RTP本身只保證實(shí)時(shí)數(shù)據(jù)的傳輸,并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機(jī)制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務(wù)。RTP報(bào)文格式V:RTP協(xié)議的版本號(hào),占2位。P:填充標(biāo)志,占1位,如果P=1,則在該報(bào)文的尾部填充一個(gè)或多個(gè)額外的八位組,它們不是有效載荷的一部分。X:擴(kuò)展標(biāo)志,占1位,如果X=1,則在RTP報(bào)頭后跟有一個(gè)擴(kuò)展報(bào)頭。CC:CSRC計(jì)數(shù)器,占4位,指示CSRC標(biāo)識(shí)符的個(gè)數(shù)。M::標(biāo)記,占1位,不同的有效載荷有不同的含義,對(duì)于視頻,標(biāo)記一幀的結(jié)束;對(duì)于音頻,標(biāo)記會(huì)話的開始。PT:有效載荷類型,占7位,用于說明RTP報(bào)文中有效載荷的類型,如GSM音頻、JPEM圖像等。序列號(hào):占16位,用于標(biāo)識(shí)發(fā)送者所發(fā)送的RTP報(bào)文的序列號(hào),每發(fā)送一個(gè)報(bào)文,序列號(hào)增1。接收者通過序列號(hào)來檢測(cè)報(bào)文丟失情況,重新排序報(bào)文,恢復(fù)數(shù)據(jù)。時(shí)戳:占32位,時(shí)戳反映了該RTP報(bào)文的第一個(gè)八位組的采樣時(shí)刻。接收者使用時(shí)戳來計(jì)算延遲和延遲抖動(dòng),并進(jìn)行同步控制。SSRC標(biāo)示符:占32位,用于標(biāo)識(shí)同步信源。該標(biāo)識(shí)符是隨機(jī)選擇的,參加同一視頻會(huì)議的兩個(gè)同步信源不能有相同的SSRC。CSRC標(biāo)示符:每個(gè)CSRC標(biāo)識(shí)符占32位,可以有0~15個(gè)。每個(gè)CSRC標(biāo)識(shí)了包含在該RTP報(bào)文有效載荷中的所有特約信源。RTCPRTCP:RTPControlProtocol(RTP控制協(xié)議)RTP本身并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機(jī)制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務(wù)。在RTP的會(huì)話之間周期的發(fā)放一些RTCP包以用來傳監(jiān)聽服務(wù)質(zhì)量和交換會(huì)話用戶信息等功能。RTCP包中含有已發(fā)送的數(shù)據(jù)包的數(shù)量、丟失的數(shù)據(jù)包的數(shù)量等統(tǒng)計(jì)資料。因此,服務(wù)器可以利用這些信息動(dòng)態(tài)地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,它們能以有效的反饋和最小的開銷使傳輸效率最佳化,因而特別適合傳送網(wǎng)上的實(shí)時(shí)數(shù)據(jù)。根據(jù)用戶間的數(shù)據(jù)傳輸反饋信息,可以制定流量控制的策略,而會(huì)話用戶信息的交互,可以制定會(huì)話控制的策略。RTSPRTSP(RealTimeStreamingProtocol),實(shí)時(shí)流傳輸協(xié)議,是TCP/IP協(xié)議體系中的一個(gè)應(yīng)用層協(xié)議。該協(xié)議定義了一對(duì)多應(yīng)用程序如何有效地通過IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù)。RTSP在體系結(jié)構(gòu)上位于RTP和RTCP之上,它使用TCP或RTP完成數(shù)據(jù)傳輸。使用RTSP時(shí),客戶機(jī)和服務(wù)器都可以發(fā)出請(qǐng)求,即RTSP可以是雙向的。3.??礢DK接口定義海康設(shè)備網(wǎng)絡(luò)SDK主要功能圖像預(yù)覽、文件回放和下載、云臺(tái)控制、布防/撤防、語音對(duì)講、日志管理、解碼卡、遠(yuǎn)程升級(jí)、遠(yuǎn)程重啟/關(guān)閉、格式化硬盤、參數(shù)配置(系統(tǒng)配置、通道配置、串口配置、報(bào)警配置、用戶配置)、多路解碼器、智能設(shè)備功能和獲取設(shè)備能力集等。SDK調(diào)用主要流程如下:圖1SDK調(diào)用流程其中虛線框的流程是可選部分,不會(huì)影響其他流程和模塊的功能使用。按實(shí)現(xiàn)功能的不同可以分成十個(gè)模塊,實(shí)現(xiàn)每個(gè)模塊的功能時(shí)初始化SDK、用戶注冊(cè)設(shè)備、注銷設(shè)備和釋放SDK資源這4個(gè)流程是必不可少的。備注??礢DK中對(duì)涉及的數(shù)據(jù)類型定義了模板,為了更好的理解程序,我將對(duì)應(yīng)的模板列出來,方便對(duì)SDK函數(shù)調(diào)用。typedefunsignedintDWORD;typedefunsignedshortWORD;typedefunsignedshortUSHORT;typedefintLONG;typedef unsignedcharBYTE;typedefintBOOL;typedefunsignedintUINT;typedef void* LPVOID;typedef void* HANDLE;typedefunsignedint*LPDWORD;typedefunsignedlonglongUINT64;用戶注冊(cè)功能注冊(cè)設(shè)備,獲得對(duì)SDK的控制。接口調(diào)用順序初始化SDK調(diào)用NET_DVR_Init()返回TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError()可能返回的具體錯(cuò)誤值請(qǐng)查看《設(shè)備網(wǎng)絡(luò)SDK使用手冊(cè)》用戶注冊(cè)設(shè)備調(diào)用NET_DVR_Login_V30(char*sDVRIP,unsignedshortwDVRPort,char*sUserName,char*sPassword,LPNET_DVR_DEVICEINFO_V30lpDeviceInfo)其中:*sDVRIP,//設(shè)備IP地址wDVRPort,//設(shè)備端口號(hào)*sUserName,//登錄的用戶名*sPassword//用戶密碼lpDeviceInfo//設(shè)備信息其中LPNET_DVR_DEVICEINFO_V30結(jié)構(gòu)定義如下Struct{unsignedcharsSerialNumber[48];//設(shè)備序列號(hào)unsignedcharbyAlarmInPortNum; //報(bào)警輸入個(gè)數(shù)unsignedcharbyAlarmOutPortNum; //報(bào)警輸出個(gè)數(shù)unsignedcharbyDiskNum; //硬盤個(gè)數(shù)unsignedcharbyDVRType; //設(shè)備類型,1:DVR2:ATMDVR3:DVSunsignedcharbyChanNum; //模擬通道個(gè)數(shù)unsignedcharbyStartChan; //起始通道號(hào),例如DVS-1,DVR-1unsignedcharbyAudioChanNum;//語音通道數(shù)unsignedcharbyIPChanNum; //最大數(shù)字通道個(gè)數(shù)unsignedcharbyZeroChanNum; //零通道編碼個(gè)數(shù)//2010-01-16unsignedcharbyMainProto; //主碼流傳輸協(xié)議類型0-private,1-rtspunsignedcharbySubProto; //子碼流傳輸協(xié)議類型0-private,1-rtspunsignedcharbySupport;//能力,位與結(jié)果為0表示不支持,1表示支持,//bySupport&0x1,表示是否支持智能搜索//bySupport&0x2,表示是否支持備份//bySupport&0x4,表示是否支持壓縮參數(shù)能力獲取//bySupport&0x8,表示是否支持多網(wǎng)卡//bySupport&0x10,表示支持遠(yuǎn)程SADP//bySupport&0x20表示支持Raid卡功能//bySupport&0x40表示支持IPSAN目錄查找unsignedcharbyRes1[20]; //保留}NET_DVR_DEVICEINFO_V30,*LPNET_DVR_DEVICEINFO_V30;返回值表示返回的用戶ID值。該用戶ID具有唯一性,后續(xù)對(duì)設(shè)備的操作都需要通過此ID實(shí)現(xiàn)。特別當(dāng)返回值為-1表示失敗獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError()可能返回的具體錯(cuò)誤值請(qǐng)查看《設(shè)備網(wǎng)絡(luò)SDK使用手冊(cè)》注銷設(shè)備調(diào)用NET_DVR_Logout_V30(IntlUserID)其中l(wèi)UserID//用戶ID,就是NET_DVR_Login_V30()返回值返回TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError()可能返回的具體錯(cuò)誤值請(qǐng)查看《設(shè)備網(wǎng)絡(luò)SDK使用手冊(cè)》釋放SDK調(diào)用NET_DVR_Cleanup()返回TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError()可能返回的具體錯(cuò)誤值請(qǐng)查看《設(shè)備網(wǎng)絡(luò)SDK使用手冊(cè)》注意事項(xiàng):A:初始化SDK和用戶注冊(cè)是所有操作的前提。B:NET_DVR_Login_V30()是對(duì)NET_DVR_Login()的擴(kuò)展。源代碼中出現(xiàn)的NET_DVR_Login()都可以由NET_DVR_Login_V30()函數(shù)代替。C::NET_DVR_Logout_V30()和NET_DVR_Logout()函數(shù)是同樣的函數(shù),兩者可以互換。D:NET_DVR_Login()函數(shù)返回值為用戶ID實(shí)時(shí)預(yù)覽和云臺(tái)控制及相關(guān)模塊功能A.預(yù)覽B.實(shí)時(shí)數(shù)據(jù)流的捕獲和錄像C.云臺(tái)控制D.聲音控制E.抓圖接口調(diào)用順序圖2實(shí)時(shí)預(yù)覽和云臺(tái)控制流程圖中虛線框部分的模塊是與預(yù)覽模塊相關(guān),必須在啟動(dòng)預(yù)覽后才能調(diào)用,這些模塊之間是并列的關(guān)系,各自完成相應(yīng)的功能。預(yù)覽模塊(1)調(diào)用NET_DVR_Init(),NET_DVR_Login_V30()完成設(shè)備注冊(cè)(詳見3.1章節(jié))(2)調(diào)用NET_DVR_RealPlay_V30(intlUserID,,LPNET_DVR_CLIENTINFOlpClientInfo,fRealDataCallBack_V30cbRealDataCallBack,void*pUser,intbBlocked)啟動(dòng)預(yù)覽,lUserID//NET_DVR_Login_V30()的返回值,用戶IDlpClientInfo//預(yù)覽參數(shù)cbRealDataCallBack//碼流數(shù)據(jù)回調(diào)函數(shù)*pUser//用戶數(shù)據(jù)bBlocked//請(qǐng)求碼流過程是否阻塞:0-否;1-是其中預(yù)覽參數(shù)結(jié)構(gòu)體NET_DVR_CLIENTINFO定義為struct{intlChannel;intlLinkMode;HWNDhPlayWnd;char*sMultiCastIP;}NET_DVR_CLIENTINFO,*LPNET_DVR_CLIENTINFO;lChannel//通道號(hào)lLinkMode//最高位(31)為0表示主碼流,為1表示子碼流0~30位表示連接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式hPlayWnd//播放窗口的句柄,為NULL表示不顯示圖像其中HWND結(jié)構(gòu)定義為structHWND##__{intunused;};typedefstructHWND##__*HWNDsMultiCastIP//多播組地址碼流數(shù)據(jù)回調(diào)函數(shù)定義為typedefvoid(CALLBACK*fRealDataCallBack_V30)(intlRealHandle,//當(dāng)前的預(yù)覽句柄unsignedintdwDataType,//數(shù)據(jù)類型見下表unsignedchar*pBuffer,//存放數(shù)據(jù)的緩沖區(qū)指針unsignedintdwBufSize,//緩沖區(qū)大小void*pUser//用戶數(shù)據(jù));宏定義宏定義值含義NET_DVR_SYSHEAD1系統(tǒng)頭數(shù)據(jù)NET_DVR_STREAMDATA2流數(shù)據(jù)(包括復(fù)合流或音視頻分開的視頻流數(shù)據(jù))NET_DVR_AUDIOSTREAMDATA3音頻數(shù)據(jù)表1NET_DVR_RealPlay_V30()返回-1表示失敗,其他值作為NET_DVR_StopRealPlay等函數(shù)的句柄參數(shù)。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError()可能返回的具體錯(cuò)誤值請(qǐng)查看《設(shè)備網(wǎng)絡(luò)SDK使用手冊(cè)》(3)調(diào)用NET_DVR_StopRealPlay_V30(intlRealHandle)停止預(yù)覽)lRealHandle//預(yù)覽句柄,NET_DVR_RealPlay_V30的返回值返回TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError()可能返回的具體錯(cuò)誤值請(qǐng)查看《設(shè)備網(wǎng)絡(luò)SDK使用手冊(cè)》實(shí)時(shí)流數(shù)據(jù)捕獲和錄像模塊主要實(shí)現(xiàn)數(shù)據(jù)回調(diào)和本地錄像的功能,可以供用戶后續(xù)處理。相關(guān)接口有:NET_DVR_SetRealDataCallBack、NET_DVR_SetStandardDataCallBack、NET_DVR_SaveRealData等。NET_DVR_SetRealDataCallBack()注冊(cè)回調(diào)函數(shù),返回實(shí)時(shí)碼流數(shù)據(jù)。BoolNET_DVR_SetRealDataCallBack(LONGlRealHandle,fRealDataCallBackcbRealDataCallBack,DWORDdwUser)lRealHandle//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值cbRealDataCallBack//碼流數(shù)據(jù)回調(diào)函數(shù)dwUser//用戶數(shù)據(jù)其中fRealDataCallBack回調(diào)函數(shù)定義為typedefvoid(CALLBACK*fRealDataCallBack)(LONGlRealHandle,//當(dāng)前的預(yù)覽句柄DWORDdwDataType,//數(shù)據(jù)類型見下表BYTE*pBuffer,//存放數(shù)據(jù)的緩沖區(qū)指針DWORDdwBufSize,//緩沖區(qū)大小DWORDdwUser//用戶數(shù)據(jù));宏定義宏定義值含義NET_DVR_SYSHEAD1系統(tǒng)頭數(shù)據(jù)NET_DVR_STREAMDATA2流數(shù)據(jù)(包括復(fù)合流或音視頻分開的視頻流數(shù)據(jù))函數(shù)返回TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError此函數(shù)目前僅支持對(duì)于支持RTSP協(xié)議取流的設(shè)備的標(biāo)準(zhǔn)碼流回調(diào)此函數(shù)包括開始和停止用戶處理SDK捕獲的數(shù)據(jù),當(dāng)回調(diào)函數(shù)cbRealDataCallBack設(shè)為非NULL值時(shí),表示回調(diào)和處理數(shù)據(jù);當(dāng)設(shè)為NULL時(shí)表示停止回調(diào)和處理數(shù)據(jù)?;卣{(diào)的第一個(gè)包是40個(gè)字節(jié)的文件頭,供后續(xù)解碼使用,之后回調(diào)的是壓縮的碼流?;卣{(diào)數(shù)據(jù)最大為256K字節(jié)。NET_DVR_SetStandardDataCallBack()注冊(cè)回調(diào)函數(shù),捕獲實(shí)時(shí)碼流數(shù)據(jù)(標(biāo)準(zhǔn)碼流)。BOOLNET_DVR_SetStandardDataCallBack(LONGlRealHandle,fStdDataCallBackcbStdDataCallBack,DWORDdwUser)lRealHandle//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值cbStdDataCallBack//標(biāo)準(zhǔn)碼流數(shù)據(jù)回調(diào)函數(shù)dwUser//用戶數(shù)據(jù)其中fStdDataCallBack回調(diào)函數(shù)定義為typedefvoid(CALLBACK*fStdDataCallBack)(LONGlRealHandle,//當(dāng)前的預(yù)覽句柄DWORDdwDataType,//數(shù)據(jù)類型見下表BYTE*pBuffer,//存放數(shù)據(jù)的緩沖區(qū)指針DWORDdwBufSize,//緩沖區(qū)大小DWORDdwUser//用戶數(shù)據(jù));宏定義宏定義值含義NET_DVR_SYSHEAD1系統(tǒng)頭數(shù)據(jù)NET_DVR_STD_VIDEODATA4標(biāo)準(zhǔn)視頻流數(shù)據(jù))NET_DVR_STD_AUDIODATA5標(biāo)準(zhǔn)音頻流數(shù)據(jù)函數(shù)返回TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError此函數(shù)包括開始和停止用戶處理SDK捕獲的數(shù)據(jù),當(dāng)回調(diào)函數(shù)cbStdDataCallBack設(shè)為非NULL值時(shí),表示回調(diào)和處理數(shù)據(jù);當(dāng)設(shè)為NULL時(shí)表示停止回調(diào)和處理數(shù)據(jù)?;卣{(diào)的第一個(gè)包是40個(gè)字節(jié)的文件頭,供后續(xù)解碼使用,之后回調(diào)的是標(biāo)準(zhǔn)碼流(含12字節(jié)的RTP頭)。NET_DVR_SaveRealData()捕獲數(shù)據(jù)并存放到指定的文件中BOOLNET_DVR_SaveRealData(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值char*sFileName//文件路徑指針);函數(shù)返回TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError云臺(tái)控制模塊主要是在開啟預(yù)覽的前提下實(shí)現(xiàn)對(duì)云臺(tái)控制的操作功能,包括云臺(tái)預(yù)置點(diǎn)、巡航、軌跡和透明云臺(tái)等。相關(guān)接口有:NET_DVR_PTZControl、NET_DVR_PTZControl_EX、NET_DVR_PTZPreset、NET_DVR_PTZPreset_EX、NET_DVR_PTZCruise、NET_DVR_PTZCruise_EX、NET_DVR_PTZTrack、NET_DVR_PTZTrack_EX、NET_DVR_TransPTZ、NET_DVR_TransPTZ_EX。NET_DVR_PTZControl云臺(tái)控制操作(需先啟動(dòng)圖象預(yù)覽NET_DVR_RealPlay_V30())。BOOLNET_DVR_PTZControl(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值DWORDdwPTZCommand,//云臺(tái)控制命令,見下表DWORDdwStop//云臺(tái)停止動(dòng)作或開始動(dòng)作:0-開始;1-停止);宏定義宏定義值含義LIGHT_PWRON2接通燈光電源WIPER_PWRON3接通雨刷開關(guān)FAN_PWRON4接通風(fēng)扇開關(guān)HEATER_PWRON5接通加熱器開關(guān)AUX_PWRON16接通輔助設(shè)備開關(guān)AUX_PWRON27接通輔助設(shè)備開關(guān)ZOOM_IN11焦距變大(倍率變大)ZOOM_OUT12焦距變小(倍率變小)FOCUS_NEAR13焦點(diǎn)前調(diào)FOCUS_FAR14焦點(diǎn)后調(diào)IRIS_OPEN15光圈擴(kuò)大IRIS_CLOSE16光圈縮小TILT_UP21云臺(tái)上仰TILT_DOWN22云臺(tái)下俯PAN_LEFT23云臺(tái)左轉(zhuǎn)PAN_RIGHT24云臺(tái)右轉(zhuǎn)UP_LEFT25云臺(tái)上仰和左轉(zhuǎn)UP_RIGHT26云臺(tái)上仰和右轉(zhuǎn)DOWN_LEFT27云臺(tái)下俯和左轉(zhuǎn)DOWN_RIGHT28云臺(tái)下俯和右轉(zhuǎn)PAN_AUTO29云臺(tái)左右自動(dòng)掃描函數(shù)返回TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError對(duì)云臺(tái)實(shí)施的每一個(gè)動(dòng)作都需要調(diào)用該接口兩次,分別是開始和停止控制,由接口中的最后一個(gè)參數(shù)(dwStop)決定。在調(diào)用此接口之前需要先開啟預(yù)覽。與設(shè)備之間的云臺(tái)各項(xiàng)操作的命令都對(duì)應(yīng)于設(shè)備與云臺(tái)之間的控制碼,設(shè)備會(huì)根據(jù)目前設(shè)置的解碼器種類和解碼器地址向云臺(tái)發(fā)送控制碼。如果目前設(shè)備上設(shè)置的解碼器與云臺(tái)設(shè)備的不匹配,需要重新配置設(shè)備的解碼器。如果云臺(tái)設(shè)備所需的解碼器設(shè)備不支持,則無法用該接口控制。NET_DVR_PTZControl_EX云臺(tái)控制操作,需先啟動(dòng)預(yù)覽,通過預(yù)覽連接發(fā)送命令(性能比NET_DVR_PTZControl好,RTSP預(yù)覽時(shí)不支持此功能)。BOOLNET_DVR_PTZControl_EX(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值DWORDdwPTZCommand,//云臺(tái)控制命令,同上DWORDdwStop//云臺(tái)停止動(dòng)作或開始動(dòng)作:0-開始;1-停止);函數(shù)返回TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastErrorNET_DVR_PTZPreset云臺(tái)預(yù)置點(diǎn)操作(需先啟動(dòng)預(yù)覽)。BOOLNET_DVR_PTZPreset(LONGlRealHandle,//返回句柄DWORDdwPTZPresetCmd,//操作類型,見下表DWORDdwPresetIndex//預(yù)置點(diǎn)序號(hào)從1開始,最多支持255個(gè)預(yù)置點(diǎn));宏定義宏定義值含義SET_PRESET8設(shè)置預(yù)置點(diǎn)CLE_PRESET9清除預(yù)置點(diǎn)GOTO_PRESET39轉(zhuǎn)到預(yù)置點(diǎn)TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError。與設(shè)備之間的云臺(tái)各項(xiàng)操作的命令都對(duì)應(yīng)于設(shè)備與云臺(tái)之間的控制碼,設(shè)備會(huì)根據(jù)目前設(shè)置的解碼器種類和解碼器地址向云臺(tái)發(fā)送控制碼。如果目前設(shè)備上設(shè)置的解碼器與云臺(tái)設(shè)備的不匹配,需要重新配置設(shè)備的解碼器。如果云臺(tái)設(shè)備所需的解碼器設(shè)備不支持,則無法用該接口控制。NET_DVR_PTZPreset_EXNET_DVR_PTZPreset的擴(kuò)展,性能優(yōu)于NET_DVR_PTZPreset,但是不支持RTSP預(yù)覽,參數(shù)結(jié)構(gòu)和返回值同NET_DVR_PTZPreset。NET_DVR_PTZCruise云臺(tái)巡航操作,需先啟動(dòng)預(yù)覽。BOOLNET_DVR_PTZCruise(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值DWORDdwPTZCruiseCmd,//巡航操作命令,見下表BYTEbyCruiseRoute,//巡航路徑,最多支持32條路徑(序號(hào)從1開始)BYTEbyCruisePoint,//巡航點(diǎn),最多支持32個(gè)點(diǎn)(序號(hào)從1開始)WORDwInput//不同巡航命令時(shí)的值不同,預(yù)置點(diǎn)(最大255)、時(shí)間(最大255)、速度(最大40));宏定義宏定義值含義FILL_PRE_SEQ30將預(yù)置點(diǎn)加入巡航序列SET_SEQ_DWELL31設(shè)置巡航點(diǎn)停頓時(shí)間SET_SEQ_SPEED32設(shè)置巡航速度CLE_PRE_SEQ33將預(yù)置點(diǎn)從巡航序列中刪除RUN_SEQ37開始巡航STOP_SEQ38停止巡航TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError。與設(shè)備之間的云臺(tái)各項(xiàng)操作的命令都對(duì)應(yīng)于設(shè)備與云臺(tái)之間的控制碼,設(shè)備會(huì)根據(jù)目前設(shè)置的解碼器種類和解碼器地址向云臺(tái)發(fā)送控制碼。如果目前設(shè)備上設(shè)置的解碼器與云臺(tái)設(shè)備的不匹配,需要重新配置設(shè)備的解碼器。如果云臺(tái)設(shè)備所需的解碼器設(shè)備不支持,則無法用該接口控制。NET_DVR_PTZCruise_EXET_DVR_PTZCruise的擴(kuò)展,性能優(yōu)于NET_DVR_PTZCruise,但是不支持RTSP預(yù)覽,參數(shù)結(jié)構(gòu)和返回值同NET_DVR_PTZCruise。NET_DVR_PTZTrack云臺(tái)軌跡操作,需先啟動(dòng)預(yù)覽BOOLNET_DVR_PTZTrack(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值DWORDdwPTZTrackCmd//操作云臺(tái)軌跡命令,見下表:);宏定義宏定義值含義STA_MEM_CRUISE34開始記錄軌跡STO_MEM_CRUISE35停止記錄軌跡RUN_CRUISE36開始軌跡TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError。與設(shè)備之間的云臺(tái)各項(xiàng)操作的命令都對(duì)應(yīng)于設(shè)備與云臺(tái)之間的控制碼,設(shè)備會(huì)根據(jù)目前設(shè)置的解碼器種類和解碼器地址向云臺(tái)發(fā)送控制碼。如果目前設(shè)備上設(shè)置的解碼器與云臺(tái)設(shè)備的不匹配,需要重新配置設(shè)備的解碼器。如果云臺(tái)設(shè)備所需的解碼器設(shè)備不支持,則無法用該接口控制。NET_DVR_PTZTrack_EXET_DVR_PTZTrack的擴(kuò)展,性能優(yōu)于NET_DVR_PTTrack,但是不支持RTSP預(yù)覽,參數(shù)結(jié)構(gòu)和返回值同NET_DVR_PTZTrack。NET_DVR_TransPTZ透明云臺(tái)操作,需先啟動(dòng)預(yù)覽。BOOLNET_DVR_TransPTZ(LONGlRealHandle,//NET_DVR_RealPlay()或NET_DVR_RealPlay_V30()的返回值char*pPTZCodeBuf,//存放云臺(tái)控制碼緩沖區(qū)的指針DWORDdwBufSize//云臺(tái)控制碼的長度);TRUE表示成功,F(xiàn)ALSE表示失敗。獲取錯(cuò)誤碼調(diào)用NET_DVR_GetLastError使用該接口能直接通過設(shè)備將云臺(tái)控制碼信息直接傳輸給云臺(tái)設(shè)備,而無需配置解碼器。NET_DVR_TransPTZ_EXET_DVR_PTZ的擴(kuò)展,性能優(yōu)于NET_DVR_PTZ,但是不支持RTSP預(yù)覽,參數(shù)結(jié)構(gòu)和返回值同NET_DVR_PTZ。聲音控制功能主要實(shí)現(xiàn)獨(dú)占、共享聲音的打開和關(guān)閉;音量的控制。相關(guān)接口有:NET_DVR_OpenSound、NET_DVR_CloseSound、NET_DVR_OpenSoundShare、NET_DVR_CloseSoundShare、NET_DVR_Volume等。抓圖功能主要實(shí)現(xiàn)對(duì)當(dāng)前解碼圖像的捕獲,保存格式為BMP。相關(guān)接口有:NET_DVR_CapturePicture。注意事項(xiàng)A:HWND結(jié)構(gòu)定義為structHWND##__{intunused;};typedefstructHWND##__*HWNDB:云臺(tái)控制函數(shù)中_EX擴(kuò)展的幾個(gè)函數(shù)都不支持RTSP預(yù)覽回放和下載相關(guān)模塊功能實(shí)現(xiàn)對(duì)已有的錄像回放和下載功能,實(shí)現(xiàn)按時(shí)間搜索和按文件名搜索2種方式接口調(diào)用順序按時(shí)間回放調(diào)用NET_DVR_Init()初始化SDK調(diào)用NET_DVR_Login_V30(char*sDVRIP,unsignedshortwDVRPort,char*sUserName,char*sPassword,LPNET_DVR_DEVICEINFO_V30lpDeviceInfo)完成設(shè)備注冊(cè)調(diào)用NET_DVR_PlayBackByTime(LONGlUserID,LONGlChannel,LPNET_DVR_TIMElpStartTime,LPNET_DVR_TIMElpStopTime,HWNDhWnd)開始查找目標(biāo)文件其中LPNET_DVR_TIME結(jié)構(gòu)為struct{DWORDdwYear;DWORDdwMonth;DWORDdwDay;DWORDdwHour;DWORDdwMinute;DWORDdwSecond;}NET_DVR_TIME,*LPNET_DVR_TIME;調(diào)用NET_DVR_PlayBackControl_V40(LONGlPlayHandle,DWORDdwControlCode,char*lpInBuffer,DWORDdwInLen,DWORD*lpOutLen)控制播放狀態(tài)lPlayHandle播放句柄,NET_DVR_PlayBackByTime的返回值dwControlCode控制命令,見下表lpInBuffer指向輸入?yún)?shù)的指針dwInLen輸入?yún)?shù)的長度lpOutBuffer指向輸出參數(shù)的指針lpOutLen輸出參數(shù)的長度停止回放錄像文件NET_DVR_StopPlayBack(LONGlPlayHandle)。返回TRUE表示成功,F(xiàn)ALSE表示失敗lPlayHandle播放句柄,NET_DVR_PlayBackByTime的返回值注銷NET_DVR_Logot_V30(IntlUserID)釋放SDK資源NET_DVR_Cleanup()按文件名回放調(diào)用NET_DVR_Init()初始化SDK調(diào)用NET_DVR_Login_V30(char*sDVRIP,unsignedshortwDVRPort,char*sUserName,char*sPassword,LPNET_DVR_DEVICEINFO_V30lpDeviceInfo)完成設(shè)備注冊(cè)調(diào)用NET_DVR_FindFile_V30(LONGlUserID,LPNET_DVR_FILECONDpFindCond)啟動(dòng)查找,該接口指定了要查找的錄像文件的信息,調(diào)用成功后,就可以調(diào)用NET_DVR_FindNextFile接口來獲取文件信息lUserIDNET_DVR_Login()或NET_DVR_Login_V30()的返回值pFindCond欲查找的文件信息結(jié)構(gòu),定義如下:struct{LONGlChannel;DWORDdwFileType;DWORDdwIsLocked;DWORDdwUseCardNo;BYTEsCardNumber[32];NET_DVR_TIMEstruStartTime;NET_DVR_TIMEstruStopTime;}NET_DVR_FILECOND,*LPNET_DVR_FILECOND;lChannel通道號(hào)dwFileType錄象文件類型:0xff-全部,0-定時(shí)錄像,1-移動(dòng)偵測(cè),2-報(bào)警觸發(fā),3-報(bào)警觸發(fā)或移動(dòng)偵測(cè),4-報(bào)警觸發(fā)和移動(dòng)偵測(cè),5-命令觸發(fā),6-手動(dòng)錄像,7-智能錄像dwIsLocked是否鎖定:0-未鎖定文件,1-鎖定文件,0xff表示所有文件(包括鎖定和未鎖定)dwUseCardNo是否帶卡號(hào)查找,這里是否sCardNumber卡號(hào)struStartTime開始時(shí)間struStopTime停止時(shí)間逐個(gè)獲取文件名NET_DVR_FindNextFile_V30(LONGlFindHandle,LPNET_DVR_FINDDATA_V30lpFindData)需要多次調(diào)用lFindHandle文件查找句柄,NET_DVR_FindFile_V30()的返回值lpFindData保存文件信息的指針錄像文件信息結(jié)構(gòu)體NET_DVR_FINDDATA_V30struct{charsFileName[100];文件名NET_DVR_TIMEstruStartTime;文件的開始時(shí)間NET_DVR_TIMEstruStopTime;文件的結(jié)束時(shí)間DWORDdwFileSize;文件大小charsCardNum[32];卡號(hào)BYTEbyLocked;文件是否被鎖定,1-文件已鎖定;0-文件未鎖定BYTEbyFileType;文件類型:0-定時(shí)錄像,1-移動(dòng)偵測(cè),2-報(bào)警觸發(fā),3-報(bào)警|移動(dòng)偵測(cè),4-報(bào)警&移動(dòng)偵測(cè),5-命令觸發(fā),6-手動(dòng)錄像BYTEbyRes[2];保留,置為0}NET_DVR_FINDDATA_V30,*LPNET_DVR_FINDDATA_V30;關(guān)閉文件查找,釋放資源NET_HWNDhWndDVR_FindClose_V30(LONGlFindHandle)按文件名回放錄像文件NET_DVR_PlayBackByName(LONGlUserID,char*sPlayBackFileName,HWNDhWnd)lUserIDNET_DVR_Login()或NET_DVR_Login_V30()的返回值sPlayBackFileName回放的文件名,長度不能超過100字節(jié)hWnd回放的窗口句柄,若置為空,SDK仍能收到碼流數(shù)據(jù),但不解碼顯示調(diào)用NET_DVR_PlayBackControl_V40(LONGlPlayHandle,DWORDdwControlCode,char*lpInBuffer,DWORDdwInLen,DWORD*lpOutLen)控制播放狀態(tài),詳細(xì)見上一節(jié)停止回放錄像文件NET_DVR_StopPlayBack(LONGlPlayHandle)。返回TRUE表示成功,F(xiàn)ALSE表示失敗lPlayHandle播放句柄,NET_DVR_PlayBackByTime的返回值注銷NET_DVR_Logot_V30(IntlUserID)釋放SDK資源NET_DVR_Cleanup()按時(shí)間下載基本同按時(shí)間回放功能,其中NET_DVR_GetFilekByTime(LONGlUserID,LONGlChannel,LPNET_DVR_TIMElpStartTime,LPNET_DVR_TIMElpStopTime,sSavedFileNamechar*sSavedFileName)開始查找目標(biāo)文件。sSavedFileName下載后保存到PC機(jī)的文件路徑,需為絕對(duì)路徑NET_DVR_StopGetFile(LONG1FileHandle)停止下載錄像文件。其中1FileHandle為NET_DVR_GetFilekByTime()返回值按文件名下載基本同按文件名回放功能,NET_DVR_GetFileByName(LONGlUserID,char*sDVRFileName,char*sSavedFileName);sSavedFileName下載后保存到PC機(jī)的文件路徑,需為絕對(duì)路徑NET_DVR_StopGetFile(LONG1FileHandle)停止下載錄像文件。其中1FileHandle為NET_DVR_GetFilekByName()返回值注意事項(xiàng)NET_DVR_FindNextFile_V30()在調(diào)用該接口獲取查找文件之前,必須先調(diào)用NET_DVR_FindFile_V30得到當(dāng)前的查找句柄。此接口用于獲取一條已查找到的文件信息,若要獲取全部的已查找到的文件信息,需要循環(huán)調(diào)用此接口。通過此接口可以同時(shí)獲取到與當(dāng)前錄像文件相關(guān)的卡號(hào)信息和文件是否被鎖定的信息。參數(shù)配置模塊功能獲取和修改設(shè)備的參數(shù)。接口調(diào)用順序獲取參數(shù)NET_DVR_GetDVRConfig(LONGlUserID,DWORDdwCommand,LONGlChannel,LPVOIDlpOutBuffer,DWORDdwOutBufferSize,LPDWORDlpBytesReturned)lUserID//NET_DVR_Login或NET_DVR_Login_V30的返回值dwCommand//設(shè)備配置命令,參見配置命令,參見SDK對(duì)應(yīng)函數(shù)lChannel//通道號(hào),如果命令不需要通道號(hào),該參數(shù)無效,置為0xFFFFFFFFlpOutBuffer//接收數(shù)據(jù)的緩沖指針dwOutBufferSize//接收數(shù)據(jù)的緩沖長度(以字節(jié)為單位),不能為0lpBytesReturned//實(shí)際收到的數(shù)據(jù)長度指針,不能為NULL設(shè)置參數(shù)NET_DVR_SetDVRConfig(LONGlUserID,DWORDdwCommand,LONGlChannel,LPVOIDlpOutBuffer,DWORDdwOutBufferSize,LPDWORDlpBytesReturned)lUserID//NET_DVR_Login或NET_DVR_Login_V30的返回值dwCommand//設(shè)備配置

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論