[IT計(jì)算機(jī)]CCTV程序開發(fā)-基于??甸_發(fā)包_第1頁(yè)
[IT計(jì)算機(jī)]CCTV程序開發(fā)-基于??甸_發(fā)包_第2頁(yè)
[IT計(jì)算機(jī)]CCTV程序開發(fā)-基于海康開發(fā)包_第3頁(yè)
[IT計(jì)算機(jī)]CCTV程序開發(fā)-基于??甸_發(fā)包_第4頁(yè)
[IT計(jì)算機(jī)]CCTV程序開發(fā)-基于海康開發(fā)包_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、cctv程序開發(fā)文檔基于??翟O(shè)備網(wǎng)絡(luò)sdk使用手冊(cè) v4.1.02012/1/17概述設(shè)備網(wǎng)絡(luò)sdk是基于設(shè)備私有網(wǎng)絡(luò)通信協(xié)議開發(fā)的,為后端設(shè)備(嵌入式網(wǎng)絡(luò)硬盤錄像機(jī)、視頻服務(wù)器)、前端設(shè)備(網(wǎng)絡(luò)攝像機(jī)、網(wǎng)絡(luò)球機(jī)、ip模塊)等產(chǎn)品服務(wù)的配套模塊,用于遠(yuǎn)程訪問和控制設(shè)備軟件的二次開發(fā)。 適用于以下產(chǎn)品型號(hào):1. ds-95xx、ds-96xxnvr; ds-90xx混合型硬盤錄像機(jī); 2. ds-91xx、ds-81xx、ds-80xx、ds-70xx、ds-71xx、ds-7116、ds-72xx硬盤錄像機(jī);3. ds-60xx、ds-61xx視頻服務(wù)器、編/解碼器;4. ids-6002hf

2、/b雙攝像機(jī)跟蹤、ids-6101hf智能設(shè)備(行為分析)、ids52xx智能分析儀、ids90xx、ids91xx;5. ds630x_d、ds-6401hd多路解碼器;6. ip攝像機(jī)(以下簡(jiǎn)稱“ipc”):ds-2cd71xx、ds-2cd81xx、ds-2cd7xx、ds-2cd8xx、ds-2cd9xx;7. 其他ip設(shè)備:包含ip模塊、ip快球等。由于某些功能在此sdk版本中做了擴(kuò)展,同時(shí)設(shè)備程序也做了相應(yīng)的更新擴(kuò)展,為了方便下文說明,此處將以上設(shè)備歸為兩類:l 如ds-7116、ds-81xx、ds-90xx、ds-91xx、ds-95xx、ds-96xx等系列設(shè)備稱為v3.0以

3、上版本支持的設(shè)備;l 如ds-80xx、ipc等設(shè)備稱為v3.0以下版本支持的設(shè)備。設(shè)備網(wǎng)絡(luò)sdk主要功能 序號(hào)功能備注1.圖像預(yù)覽2.文件回放和下載3.云臺(tái)控制、布防/撤防4.語(yǔ)音對(duì)講5.日志管理6.解碼卡7.遠(yuǎn)程升級(jí)8.遠(yuǎn)程重啟/關(guān)閉9.格式化硬盤10.參數(shù)配置(系統(tǒng)配置、通道配置、串口配置、報(bào)警配置、用戶配置)11.多路解碼器12.智能設(shè)備功能和獲取設(shè)備能力集設(shè)備網(wǎng)絡(luò)sdk包含網(wǎng)絡(luò)通訊庫(kù)、軟解碼庫(kù)、硬解碼庫(kù)等功能組件,我們提供windows和linux兩個(gè)版本的sdk,各自所包含的組件如下: windows下設(shè)備網(wǎng)絡(luò)sdk: 網(wǎng)絡(luò)通訊庫(kù)hcnetsdk.h頭文件hcnetsdk.lib

4、lib庫(kù)文件hcnetsdk.dll dll庫(kù)文件hpr庫(kù)hpr.lib lib庫(kù)文件hpr.dll dll庫(kù)文件rtsp通訊庫(kù)streamtransclient.dll dll庫(kù)文件軟解碼庫(kù)playm4.h頭文件playctrl.lib lib庫(kù)文件playctrl.dll dll庫(kù)文件轉(zhuǎn)封裝庫(kù)systemtransform.dll dll庫(kù)文件硬解碼庫(kù)datatype.hdecodecardsdk.h頭文件dssdk.lib lib庫(kù)文件dssdk.dll dll庫(kù)文件linux下設(shè)備網(wǎng)絡(luò)sdk庫(kù): 網(wǎng)絡(luò)通訊庫(kù)hcnetsdk.h頭文件libhcnetsdk.soso庫(kù)文件hpr庫(kù)libh

5、pr.soso庫(kù)文件rtsp通訊庫(kù)libstreamtransclient.soso庫(kù)文件軟解碼庫(kù)playsdkpu.h頭文件libm4play.soso庫(kù)文件轉(zhuǎn)封裝庫(kù)libsystemtransform.soso庫(kù)文件本版本的設(shè)備網(wǎng)絡(luò)sdk開發(fā)包中包含以上各個(gè)組件,除網(wǎng)絡(luò)通訊庫(kù)和hpr庫(kù)這兩個(gè)組件為必須項(xiàng)外,用戶可以根據(jù)需要選擇其中的一部分組件,以下將對(duì)各個(gè)組件在sdk中的作用和使用條件分別說明。網(wǎng)絡(luò)通訊庫(kù)是設(shè)備網(wǎng)絡(luò)sdk的主體,主要用于網(wǎng)絡(luò)客戶端與各類產(chǎn)品之間的通訊交互,負(fù)責(zé)遠(yuǎn)程功能調(diào)控、遠(yuǎn)程參數(shù)配置及碼流數(shù)據(jù)的獲取和處理等。 hpr庫(kù)是網(wǎng)絡(luò)通訊庫(kù)的依賴庫(kù)。 rtsp通訊庫(kù)是支持rtsp傳

6、輸協(xié)議的網(wǎng)絡(luò)庫(kù)。當(dāng)需要對(duì)支持rtsp協(xié)議的產(chǎn)品進(jìn)行取流等操作時(shí)就必須加載該項(xiàng)組件。 軟解碼庫(kù)主要用于對(duì)實(shí)時(shí)碼流數(shù)據(jù)進(jìn)行解碼顯示(實(shí)現(xiàn)預(yù)覽功能)和對(duì)錄像文件進(jìn)行回放解碼等。用戶如果需要在sdk內(nèi)部進(jìn)行對(duì)實(shí)時(shí)流和錄像碼流播放顯示時(shí)(即net_dvr_realplay_v30接口的第二個(gè)結(jié)構(gòu)體參數(shù)的播放句柄設(shè)置成有效句柄時(shí))必須加載該組件,而如果用戶僅需要用網(wǎng)絡(luò)通訊庫(kù)捕獲到數(shù)據(jù)后再外部自行處理就不需要加載該組件,這種情況下用戶在外部自行解碼將更靈活,可參見軟解碼庫(kù)函數(shù)說明播放器sdk編程指南。 轉(zhuǎn)封裝庫(kù)的功能可以分為兩種:一種是將標(biāo)準(zhǔn)碼流轉(zhuǎn)換成采用我們公司封裝格式的碼流。當(dāng)用戶需要對(duì)支持rtsp協(xié)議

7、的產(chǎn)品捕獲采用本公司封裝格式的碼流數(shù)據(jù)時(shí)(即當(dāng)設(shè)置net_dvr_realplay_v30接口中的回調(diào)函數(shù)捕獲數(shù)據(jù)或者調(diào)用net_dvr_setrealdatacallback接口捕獲數(shù)據(jù)時(shí))必須加載該組件。另一種功能是能將標(biāo)準(zhǔn)碼流轉(zhuǎn)換成其他格式的封裝,如3gpp、ps等。例如,當(dāng)用戶需要對(duì)支持rtsp協(xié)議的產(chǎn)品實(shí)時(shí)捕獲指定封裝格式的碼流數(shù)據(jù)(對(duì)應(yīng)的sdk接口為net_dvr_saverealdata)時(shí)必須加載該項(xiàng)組件。 硬解碼庫(kù)需在配備硬解碼卡(md卡)的前提下使用,通過解碼卡的解碼與輸出功能實(shí)現(xiàn)實(shí)時(shí)流的解碼顯示及向監(jiān)視器上矩陣輸出的功能。用戶如果需要在sdk內(nèi)部對(duì)實(shí)時(shí)流碼流播放顯示時(shí)必須

8、加載該項(xiàng)組件。為更方便靈活地調(diào)用硬解碼的相關(guān)功能,建議用戶通過捕獲數(shù)據(jù)在外部處理解碼。相關(guān)硬解碼庫(kù)的功能函數(shù)可參見板卡sdk編程指南中解碼卡api相關(guān)介紹。linux下無硬解功能。通用接口介紹接口功能支持的產(chǎn)品備注net_dvr_init初始化sdk全部net_dvr_cleanup釋放sdk資源全部net_dvr_setconnecttime設(shè)置sdk網(wǎng)絡(luò)連接超時(shí)時(shí)間和連接嘗試次數(shù)全部net_dvr_setreconnect設(shè)置sdk重連功能全部net_dvr_getdvripbyresolvesvr通過解析服務(wù)器,獲取設(shè)備的動(dòng)態(tài)ip地址全部net_dvr_setdvrmessage注冊(cè)接收

9、異常、重連等消息的窗口句柄全部net_dvr_setexceptioncallback_v30注冊(cè)接收異常、重連等消息的窗口句柄或回調(diào)函數(shù)全部net_dvr_getsdkversion獲取sdk的版本信息全部net_dvr_getsdkbuildversion獲取sdk的版本號(hào)和build信息全部net_dvr_getsdkstate獲取當(dāng)前sdk的狀態(tài)信息全部net_dvr_getsdkability獲取當(dāng)前sdk的功能信息全部net_dvr_setlogtofile啟用sdk寫日志文件全部net_dvr_getlasterror返回最后操作的錯(cuò)誤碼全部net_dvr_geterrormsg

10、返回最后操作的錯(cuò)誤碼信息全部net_dvr_login_v30注冊(cè)全部net_dvr_logout_v30注銷全部編程引導(dǎo)sdk主動(dòng)注冊(cè)模式sdk接口調(diào)用的主要流程其中虛線框的流程是可選部分,不會(huì)影響其他流程和模塊的功能使用。按實(shí)現(xiàn)功能的不同可以分成十個(gè)模塊,實(shí)現(xiàn)每個(gè)模塊的功能時(shí)初始化sdk、用戶注冊(cè)設(shè)備、注銷設(shè)備和釋放sdk資源這4個(gè)流程是必不可少的。1) 初始化sdk(net_dvr_init):對(duì)整個(gè)網(wǎng)絡(luò)sdk系統(tǒng)的初始化,內(nèi)存預(yù)分配等操作。2) 設(shè)置連接超時(shí)時(shí)間(net_dvr_setconnecttime):這部分為可選,用于設(shè)置sdk中的網(wǎng)絡(luò)連接超時(shí)時(shí)間,用戶可以根據(jù)自己的需要設(shè)置

11、該值。在不調(diào)用此接口設(shè)置超時(shí)時(shí)間的情況下,將采用sdk中的默認(rèn)值。 3) 設(shè)置接收異常消息的回調(diào)函數(shù)(net_dvr_setdvrmessage或net_dvr_setexceptioncallback_v30):由于sdk中大部分模塊的功能都是由異步模式實(shí)現(xiàn),所以我們提供此接口用于接收預(yù)覽、報(bào)警、回放、透明通道和語(yǔ)音對(duì)講等模塊發(fā)生異常信息。用戶可以在初始化sdk后就設(shè)置該回調(diào)函數(shù),在應(yīng)用層對(duì)各個(gè)模塊異常消息的接收和處理。 4) 從解析服務(wù)器獲得設(shè)備的ip地址(net_dvr_getdvripbyresolvesvr):該接口提供一種在僅知道設(shè)備名稱和序列號(hào)的情況下,從解析服務(wù)器獲得設(shè)備ip地

12、址的方法。如:當(dāng)前設(shè)備是通過撥號(hào)上網(wǎng)方式獲取到動(dòng)態(tài)ip地址,而運(yùn)行了我公司ipserver軟件的服務(wù)器即為解析服務(wù)器,我們可以通過此接口輸入解析服務(wù)器的地址、設(shè)備的名稱和序列號(hào)等信息查詢?cè)撛O(shè)備的ip地址。ipserver是我公司提供的一款域名解析服務(wù)器軟件。 5) 用戶注冊(cè)設(shè)備(net_dvr_login_v30):實(shí)現(xiàn)用戶的注冊(cè)功能,注冊(cè)成功后,返回的用戶id作為其他功能操作的唯一標(biāo)識(shí),sdk允許最大注冊(cè)用戶數(shù)為512個(gè)。就設(shè)備而言,v3.0以上版本支持的設(shè)備允許有32個(gè)注冊(cè)用戶名,而且同時(shí)最多允許128個(gè)用戶注冊(cè);v3.0以下版本支持的設(shè)備允許有16個(gè)注冊(cè)用戶名,而且同時(shí)最多允許128個(gè)用

13、戶注冊(cè)。6) 預(yù)覽模塊:從前端服務(wù)器取實(shí)時(shí)碼流,解碼顯示以及播放控制等功能,同時(shí)支持軟解碼和解碼卡解碼。具體流程詳見預(yù)覽模塊流程。7) 回放和下載模塊:可以通過按時(shí)間和按文件名的方式遠(yuǎn)程回放或者下載前端服務(wù)器的錄像文件,后續(xù)可以進(jìn)行解碼或者存儲(chǔ)。同時(shí)還支持?jǐn)帱c(diǎn)續(xù)傳功能。具體流程詳見回放和下載模塊流程。8) 參數(shù)配置模塊:設(shè)置和獲取前端服務(wù)器的參數(shù),主要包括設(shè)備參數(shù)、網(wǎng)絡(luò)參數(shù)、通道壓縮參數(shù)、串口參數(shù)、報(bào)警參數(shù)、異常參數(shù)、交易信息和用戶配置等參數(shù)信息。具體流程詳見參數(shù)配置模塊流程。9) 遠(yuǎn)程設(shè)備維護(hù)模塊:實(shí)現(xiàn)關(guān)閉設(shè)備、重啟設(shè)備、恢復(fù)默認(rèn)值、遠(yuǎn)程硬盤格式化、遠(yuǎn)程升級(jí)和配置文件導(dǎo)入/導(dǎo)出等維護(hù)工作。具

14、體流程詳見遠(yuǎn)程設(shè)備維護(hù)模塊流程。10) 語(yǔ)音對(duì)講轉(zhuǎn)發(fā)模塊:實(shí)現(xiàn)和前端服務(wù)器的語(yǔ)音數(shù)據(jù)對(duì)講和語(yǔ)音數(shù)據(jù)獲取,音頻編碼格式可以指定。具體流程詳見語(yǔ)音對(duì)講轉(zhuǎn)發(fā)模塊流程。11) 報(bào)警模塊:處理前端服務(wù)器上傳的各種報(bào)警信號(hào)。報(bào)警分為“布防”和“監(jiān)聽”兩種方式,在采用監(jiān)聽方式并且不需要獲取用戶id的情況下,報(bào)警模塊可以無需進(jìn)行“用戶注冊(cè)”操作步驟。具體流程詳見報(bào)警模塊流程。12) 透明通道模塊:透明通道是將ip數(shù)據(jù)報(bào)文解析后直接發(fā)送到串行口的一種技術(shù)。實(shí)際上起到了延伸串行設(shè)備控制距離的作用。可利用ip網(wǎng)絡(luò)控制多種串行設(shè)備,如控制解碼器、矩陣、報(bào)警主機(jī)、門禁、儀器儀表等串行設(shè)備,對(duì)用戶來說,只看到點(diǎn)對(duì)點(diǎn)傳輸,

15、無須關(guān)心網(wǎng)絡(luò)傳輸過程,所以稱為串口透明通道。 sdk提供485和232串口作為透明通道功能,其中要將232串口作為透明通道使用,首先必須在232串口的配置信息(net_dvr_rs232cfg)中將工作模式選為透明通道,這樣232串口才可作為透明通道使用。具體流程詳見透明通道模塊流程。 13) 云臺(tái)控制模塊:實(shí)現(xiàn)對(duì)云臺(tái)的基本操作、預(yù)置點(diǎn)、巡航、軌跡和透明云臺(tái)的控制。sdk將云臺(tái)控制分為兩種模式:一種是通過圖像預(yù)覽返回的句柄進(jìn)行控制;另一種是無預(yù)覽限制,通過用戶注冊(cè)id號(hào)進(jìn)行云臺(tái)控制。 14) 解碼器功能模塊:實(shí)現(xiàn)解碼器設(shè)備的配置、解碼控制等功能。sdk支持單路解碼器和多路解碼器,但目前以多路解

16、碼器為主流產(chǎn)品。具體流程詳見多路解碼器功能模塊流程。 15) 智能行為分析功能模塊:實(shí)現(xiàn)對(duì)智能產(chǎn)品的參數(shù)配置、報(bào)警上傳和能力集獲取等功能。具體流程詳見智能行為分析功能模塊流程。 注:本手冊(cè)下文提供的代碼都是在vc環(huán)境下編譯的,其他語(yǔ)言版本的demo可在我們提供的多語(yǔ)言版本demo資源中找到。預(yù)覽模塊流程l 實(shí)時(shí)預(yù)覽支持tcp、udp、rtp、multicast網(wǎng)絡(luò)傳輸模式。 l 實(shí)時(shí)預(yù)覽時(shí),ds-80xx、ds-70xx、ds-71xx、ds-72xx、 ds-60xx、ds-61xx系列設(shè)備每個(gè)通道最多支持6路同時(shí)連接,每臺(tái)設(shè)備最多支持24路同時(shí)連接;ds-81xx、ds-71xxhv、72

17、xxhv等系列設(shè)備每個(gè)通道最多支持6路同時(shí)連接,每臺(tái)設(shè)備最多支持18路同時(shí)連接;ds-90xx混合型硬盤錄像機(jī)每個(gè)通道最多支持6路同時(shí)連接,每臺(tái)設(shè)備最多支持64路同時(shí)連接;ds-91xx系列設(shè)備每個(gè)通道最多支持6路同時(shí)連接,每臺(tái)設(shè)備最多支持64路同時(shí)連接;ip設(shè)備每個(gè)通道最多支持6路同時(shí)連接;ds-91xx-st系列通道連接數(shù)沒有限制,每臺(tái)設(shè)備最多支持128路同時(shí)連接。 預(yù)覽和與預(yù)覽相關(guān)的模塊流程圖圖中虛線框部分的模塊是與預(yù)覽模塊相關(guān),必須在啟動(dòng)預(yù)覽后才能調(diào)用,這些模塊之間是并列的關(guān)系,各自完成相應(yīng)的功能。l 聲音控制功能主要實(shí)現(xiàn)獨(dú)占、共享聲音的打開和關(guān)閉;音量的控制。相關(guān)接口有:net_dv

18、r_opensound、net_dvr_closesound、net_dvr_opensoundshare、net_dvr_closesoundshare、net_dvr_volume等。l 實(shí)時(shí)流數(shù)據(jù)捕獲和錄像模塊主要實(shí)現(xiàn)數(shù)據(jù)回調(diào)和本地錄像的功能,可以供用戶后續(xù)處理。相關(guān)接口有:net_dvr_setrealdatacallback、net_dvr_setstandarddatacallback、net_dvr_saverealdata等。l 抓圖功能主要實(shí)現(xiàn)對(duì)當(dāng)前解碼圖像的捕獲,保存格式為bmp。相關(guān)接口有:net_dvr_capturepicture。l 云臺(tái)控制模塊主要是在開啟預(yù)覽的前

19、提下實(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。實(shí)時(shí)流解碼方式l 方式一:在預(yù)覽接口net_dvr_realplay_v30中預(yù)覽參數(shù)的播放窗口句柄賦成有效句柄,則由sdk實(shí)現(xiàn)解碼

20、功能。在初始化sdk和注冊(cè)設(shè)備兩步驟后,直接調(diào)用啟動(dòng)預(yù)覽和停止預(yù)覽接口。l 方式二:用戶可以通過設(shè)置預(yù)覽接口net_dvr_realplay_v30中預(yù)覽參數(shù)的播放窗口句柄為空值,并通過調(diào)用捕獲數(shù)據(jù)的接口(即設(shè)置net_dvr_realplay_v30接口中的回調(diào)函數(shù)或調(diào)用net_dvr_setrealdatacallback、net_dvr_setstandarddatacallback接口),獲取碼流數(shù)據(jù)進(jìn)行后續(xù)解碼播放處理。下面示例代碼以設(shè)置net_dvr_realplay_v30()接口中的回調(diào)為例進(jìn)行說明。 示例代碼方式一(由sdk實(shí)現(xiàn)解碼顯示) #include #include

21、#include windows.h#include hcnetsdk.h#include using namespace std;void callback g_exceptioncallback(dword dwtype, long luserid, long lhandle, void *puser) char tempbuf256 = 0; switch(dwtype) case exception_reconnect: /預(yù)覽時(shí)重連 printf(-reconnect-%dn, time(null); break;default: break; void main() /- / 初始

22、化 net_dvr_init(); /設(shè)置連接時(shí)間與重連時(shí)間 net_dvr_setconnecttime(2000, 1); net_dvr_setreconnect(10000, true); /- / 注冊(cè)設(shè)備 long luserid; net_dvr_deviceinfo_v30 strudeviceinfo; luserid = net_dvr_login_v30(192.0.0.64, 8000, admin, 12345, &strudeviceinfo); if (luserid 0) printf(login error, %dn, net_dvr_getlasterror

23、(); net_dvr_cleanup(); return; /- /設(shè)置異常消息回調(diào)函數(shù) net_dvr_setexceptioncallback_v30(0, null,g_exceptioncallback, null); /- /啟動(dòng)預(yù)覽并設(shè)置回調(diào)數(shù)據(jù)流 long lrealplayhandle; hwnd hwnd = getconsolewindow(); /獲取窗口句柄 net_dvr_clientinfo clientinfo = 0; clientinfo.hplaywnd = hwnd; /需要sdk解碼時(shí)句柄設(shè)為有效值,僅取流不解碼時(shí)可設(shè)為空 clientinfo.lch

24、annel = 1; /預(yù)覽通道號(hào) clientinfo.llinkmode = 0; /最高位(31)為0表示主碼流,為1表示子碼流030位表示連接方式:0tcp方式;1udp方式;2多播方式;3rtp方式; clientinfo.smulticastip = null; /多播地址,需要多播預(yù)覽時(shí)配置 bool bpreviewblock = false; /請(qǐng)求碼流過程是否阻塞,0:否,1:是 lrealplayhandle = net_dvr_realplay_v30(luserid, &clientinfo, null, null, 0); if (lrealplayhandle 0

25、) printf(net_dvr_realplay_v30 errorn); net_dvr_logout(luserid); net_dvr_cleanup(); return; /- /關(guān)閉預(yù)覽 net_dvr_stoprealplay(lrealplayhandle); /注銷用戶 net_dvr_logout(luserid); /釋放sdk資源 net_dvr_cleanup(); return;方式二(由用戶自行處理回調(diào)得到的碼流數(shù)據(jù),此處以軟解顯示為例,代碼中帶有playm4_的函數(shù)參見軟解碼庫(kù)說明文檔播放器sdk編程指南)#include #include #include w

26、indows.h#include hcnetsdk.h#include plaympeg4.h#include using namespace std;long lport; /全局的播放庫(kù)port號(hào)void callback g_realdatacallback_v30(long lrealhandle, dword dwdatatype, byte *pbuffer,dword dwbufsize,void* dwuser) hwnd hwnd=getconsolewindow();switch (dwdatatype)case net_dvr_syshead: /系統(tǒng)頭if (!play

27、m4_getport(&lport) /獲取播放庫(kù)未使用的通道號(hào)break;/m_iport = lport; /第一次回調(diào)的是系統(tǒng)頭,將獲取的播放庫(kù)port號(hào)賦值給全局port,下次回調(diào)數(shù)據(jù)時(shí)即使用此port號(hào)播放if (dwbufsize 0)if (!playm4_setstreamopenmode(lport, streame_realtime) /設(shè)置實(shí)時(shí)流播放模式break;if (!playm4_openstream(lport, pbuffer, dwbufsize, 1024*1024) /打開流接口break;if (!playm4_play(lport, hwnd) /播

28、放開始break;case net_dvr_streamdata: /碼流數(shù)據(jù)if (dwbufsize 0 & lport != -1)if (!playm4_inputdata(lport, pbuffer, dwbufsize)break; void callback g_exceptioncallback(dword dwtype, long luserid, long lhandle, void *puser) char tempbuf256 = 0; switch(dwtype) case exception_reconnect: /預(yù)覽時(shí)重連 printf(-reconnect-

29、%dn, time(null); break;default: break; void main() /- / 初始化 net_dvr_init(); /設(shè)置連接時(shí)間與重連時(shí)間 net_dvr_setconnecttime(2000, 1); net_dvr_setreconnect(10000, true); /- / 注冊(cè)設(shè)備 long luserid; net_dvr_deviceinfo_v30 strudeviceinfo; luserid = net_dvr_login_v30(172.0.0.100, 8000, admin, 12345, &strudeviceinfo); i

30、f (luserid 0) printf(login error, %dn, net_dvr_getlasterror(); net_dvr_cleanup(); return; /- /設(shè)置異常消息回調(diào)函數(shù) net_dvr_setexceptioncallback_v30(0, null,g_exceptioncallback, null); /- /啟動(dòng)預(yù)覽并設(shè)置回調(diào)數(shù)據(jù)流 long lrealplayhandle; net_dvr_clientinfo clientinfo = 0; clientinfo.hplaywnd = null; /需要sdk解碼時(shí)句柄設(shè)為有效值,僅取流不解碼時(shí)

31、可設(shè)為空 clientinfo.lchannel = 1; /預(yù)覽通道號(hào) clientinfo.llinkmode = 0; /最高位(31)為0表示主碼流,為1表示子碼流030位表示連接方式:0tcp方式;1udp方式;2多播方式;3rtp方式; clientinfo.smulticastip = null; /多播地址,需要多播預(yù)覽時(shí)配置 bool bpreviewblock = false; /請(qǐng)求碼流過程是否阻塞,0:否,1:是 lrealplayhandle = net_dvr_realplay_v30(luserid, &clientinfo, g_realdatacallback

32、_v30, null, 0); if (lrealplayhandle 0) printf(net_dvr_realplay_v30 errorn); net_dvr_logout(luserid); net_dvr_cleanup(); return; /- /關(guān)閉預(yù)覽 net_dvr_stoprealplay(lrealplayhandle); /注銷用戶 net_dvr_logout_v30(luserid); net_dvr_cleanup(); return;回放和下載模塊流程l 按文件回放或下載需要通過查找錄像文件功能先獲取文件信息(相關(guān)接口net_dvr_findfile_v30

33、、net_dvr_findnextfile_v30),然后根據(jù)獲取到的文件名開始回放或下載(相關(guān)接口net_dvr_playbackbyname、net_dvr_getfilebyname),特別提醒在調(diào)用了回放或下載的接口后,還必須調(diào)用控制接口(net_dvr_playbackcontrol)的開始播放命令(net_dvr_playstart)。l 按時(shí)間回放或下載文件時(shí),用戶可以無需調(diào)用查找錄像文件的相關(guān)接口,只要在接口中指定開始和結(jié)束時(shí)間,調(diào)用回放或下載接口(相關(guān)接口net_dvr_playbackbytime、net_dvr_getfilebytime)后,還必須調(diào)用控制接口(net_

34、dvr_playbackcontrol)的開始播放命令(net_dvr_playstart)。此時(shí),將按照指定時(shí)間范圍內(nèi)最近的有錄像的時(shí)間段開始回放或下載。用戶也可以通過調(diào)用查找錄像文件的相關(guān)接口,獲取文件的開始和結(jié)束時(shí)間后,按這個(gè)時(shí)間范圍指定回放或下載接口中的時(shí)間參數(shù),最后還必須調(diào)用控制接口(net_dvr_playbackcontrol)的開始播放命令(net_dvr_playstart)。l linux下,按文件回放和按時(shí)間回放時(shí),若回放的窗口句柄不為null(即需要sdk解碼顯示),需要調(diào)用初始化窗口接口(net_dvr_drawareainit)進(jìn)行sdl窗口的初始化才能正常的解碼顯

35、示,在停止回放時(shí),需要調(diào)用釋放窗口資源接口(net_dvr_drawarearelease)釋放窗口資源。 示例代碼示例一:查找錄像文件并下載#include #include #include windows.h#include hcnetsdk.husing namespace std;int saverecordfile(int userid,char * srcfile,char * destfile) int bres = 1; int hplayback = 0; if( (hplayback = net_dvr_getfilebyname(userid, srcfile, des

36、tfile) 0 ) printf( getfilebyname failed. error%dn, net_dvr_getlasterror(); bres= -1; return bres; if(!net_dvr_playbackcontrol(hplayback, net_dvr_playstart, 0, null) printf(play back control failed %dn,net_dvr_getlasterror(); bres=-1; return bres; int npos = 0; for(npos = 0; npos =0; npos = net_dvr_g

37、etdownloadpos(hplayback) sleep(5000); /millisecond printf(have got %dn, npos); if(!net_dvr_stopgetfile(hplayback) printf(failed to stop get file %dn,net_dvr_getlasterror(); bres = -1; return bres; printf(%sn,srcfile); if(npos100) printf(download err %dn,net_dvr_getlasterror(); bres=-1; return bres;

38、else return 0; void main() /- / 初始化 net_dvr_init(); /設(shè)置連接時(shí)間與重連時(shí)間 net_dvr_setconnecttime(2000, 1); net_dvr_setreconnect(10000, true); /- / 注冊(cè)設(shè)備 long luserid; net_dvr_deviceinfo_v30 strudeviceinfo; luserid = net_dvr_login_v30(192.0.0.64, 8000, admin, 12345, &strudeviceinfo); if (luserid 0) printf(logi

39、n error, %dn, net_dvr_getlasterror(); net_dvr_cleanup(); return; net_dvr_filecond strufilecond; strufilecond.dwfiletype = 0xff; strufilecond.lchannel = 1; strufilecond.dwislocked = 0xff; strufilecond.dwusecardno = 0; strufilecond.strustarttime.dwyear = 2011; strufilecond.strustarttime.dwmonth = 3; s

40、trufilecond.strustarttime.dwday = 1; strufilecond.strustarttime.dwhour = 10; strufilecond.strustarttime.dwminute = 6; strufilecond.strustarttime.dwsecond =50; strufilecond.strustoptime.dwyear = 2011; strufilecond.strustoptime.dwmonth = 3; strufilecond.strustoptime.dwday = 1; strufilecond.strustoptim

41、e.dwhour = 11; strufilecond.strustoptime.dwminute = 7; strufilecond.strustoptime.dwsecond = 0; /- /查找錄像文件 int lfindhandle = net_dvr_findfile_v30(luserid, &strufilecond); if(lfindhandle 0) net_dvr_findclose_v30(lfindhandle); /注銷用戶 net_dvr_logout(luserid); /釋放sdk資源 net_dvr_cleanup(); return;示例二:按時(shí)間播放錄

42、像文件#include #include #include windows.h#include hcnetsdk.husing namespace std;void main() /- / 初始化 net_dvr_init(); /設(shè)置連接時(shí)間與重連時(shí)間 net_dvr_setconnecttime(2000, 1); net_dvr_setreconnect(10000, true); /- / 注冊(cè)設(shè)備 long luserid; net_dvr_deviceinfo_v30 strudeviceinfo; luserid = net_dvr_login_v30(192.0.0.64, 8

43、000, admin, 12345, &strudeviceinfo); if (luserid 0) printf(login error, %dn, net_dvr_getlasterror(); net_dvr_cleanup(); return; net_dvr_time strustarttime, strustoptime; strustarttime.dwyear = 2011; strustarttime.dwmonth = 3; strustarttime.dwday = 1; strustarttime.dwhour = 9; strustarttime.dwminute

44、= 0; strustarttime.dwsecond =0; strustoptime.dwyear = 2011; strustoptime.dwmonth = 3; strustoptime.dwday = 1; strustoptime.dwhour = 10; strustoptime.dwminute = 7; strustoptime.dwsecond = 0; hwnd hwnd = getconsolewindow(); /獲取窗口句柄 /- /按時(shí)間回放 int hplayback; hplayback = net_dvr_playbackbytime(luserid, 1

45、, &strustarttime, &strustoptime, hwnd); if(hplayback 0) printf(net_dvr_getfilebytime fail,last error %dn,net_dvr_getlasterror(); net_dvr_logout(luserid); net_dvr_cleanup(); return; /- /開始 if(!net_dvr_playbackcontrol(hplayback, net_dvr_playstart, 0, null) printf(play back control failed %dn,net_dvr_getlasterror(); net_dvr_logout(luserid); net_dvr_cleanup(); return; sleep(15000); /millisecond if(!net_dvr_stopplayback(hplayback) printf(failed to stop file %dn,net_dvr_getlasterror(); net_dvr_logout(luserid); net_dvr_cleanup(); return; /注銷用戶 net_dvr_logout(luserid);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論