??礢DK相關調查報告_第1頁
??礢DK相關調查報告_第2頁
??礢DK相關調查報告_第3頁
海康SDK相關調查報告_第4頁
??礢DK相關調查報告_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論