




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、flr舌幻桐千林*.電帖|扭翹 灘回遼柄林*電站巧咲生時mt電子坦EIZlO.siew-s曰曲他魅之丄3G監控視頻控件編寫方案在現有已經開發了 GIS平臺,想把電信的全球眼(天網)或是自己安裝的一些遠程監控集成到這個 GIS里面來,設備大多是海康的DVR,GIS是B/S結構的,希望遠控科技能提供一個可以融合到GIS的視頻軟件系統或IE插件,在GIS界面下點擊標注的視頻點,可以 彈出視頻監控窗口進行實時監控。幣域剳*干口 EMlk事孑口二中胡轉痔峯F1人口曲崎躍奮2. 解決方案可以采用兩種方式來整合:A. 最簡單的方式是:客戶提供現有GIS的接口,由遠控科技在軟件編 碼和數據庫里完成接入。 客戶
2、根據實際需求自行開發最后的界面, 在 視頻調用方面遠控科技予以配合;B遠控科技提供一個后臺支撐的 CMS和流媒體轉發服務器,同時提 供一個 B/S 的入口,客戶來編寫調用代碼和數據庫系統, 特別是數據 庫的對接。遠控科技向客戶提供一個基于流媒體轉發服務器的 OCX 接口,而這個接口,甲方可以很方便的可以嵌入到現有的 web 中, 而這個 OCX 需要完成的功能是:說去訪問哪個視頻流就訪問哪個視 頻流,如果有必要,可以做 9 畫面/16 畫面分割等等,在必要的情況 下,可以加入云臺、鏡頭控制功能,目前只考慮海康的設備接入,將 來有其他廠家的設備再做考慮。遠控科技除了 OCX 文件,還會提供 一個
3、Demo的實例,供客戶整合的時候參考。在寫代碼的時候,雙方 需要有個協議約定, 主要是數據如何統一到一起, 是手工還是自動。 譬如 GIS 的界面上標注增加一個攝像頭, 流媒體這邊的數據庫如何跟 著變動等等。乙方提供的程序文件有:1. CMS -中心管理服務器2. totalsvr 流媒體服務器3.ocxB/S 插件4. demo演示文件5. 說明文檔3. 關于客戶提出的統一轉換視頻流格式通用播放器監控的問題 客戶希望在流媒體服務器上將視頻統一轉換為視頻流格式, 在遠 端采用通用播放器來讀取碼流, 遠控通過嚴謹的技術論證, 不支持這 樣的處理方式,主要原因是:A. 遠程讀取視頻流的模式主要用于
4、 VOD(視頻點播系統),比如土豆 網、優酷網等等視頻網站,因為視頻點播讀取的不是實時的視頻流, 是視頻文件, 如果要對實時監控系統進行轉碼, 那轉碼的效率是非常 低的,本來遠程監控系統就有網絡延時, 如果再對前端的視頻服務器 做一次轉碼,那延時會變得非常大,因為轉碼的時候有個采樣頻率, 到最終用戶在瀏覽器上看到的視頻已經不是實時的視頻, 幾乎可以說 是錄像回放了,目前國際上都不會對實時的視頻監控系統做轉碼處 理,那樣操作的話就不叫實時播放,而是延時回放;B. 視頻流的轉碼對資源的消耗很大, 一臺頂級的服務器,如果同時轉 碼50路的視頻流就會全面崩潰,在視頻流的轉換過程中, CPU/內存 /顯
5、存的消耗都是非常大的。C. 很多廠家都不會提供視頻流轉換為AVI文件的接口,有的廠家的DVR 根本就不能轉換為 AVI 文件,目前的技術,任何廠家的實時視 頻流都無法轉換成 Flash 格式。以下就是基本海康的 SDK 包開發出的視頻 IE 控件,可是直接復制就可以用了,此控件是用 VC+編寫的,環境是用 VT2008。如需下載控件請到 下載。文件名: HkOcxCtl.h(3K)INCL#if !defined(AFX_HKOCXCTL_H_51923F17_EE7E_4049_8D42_9E3FED8493DB UDED_)#defineAFX_HKOCX
6、CTL_H_51923F17_EE7E_4049_8D42_9E3FED8493DB_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ HkOcxCtl.h : Declaration of the CHkOcxCtrl ActiveX Control class./ CHkOcxCtrl : See HkOcxCtl.cpp for implementation.class CHkOcxCtrl : public COleControlDECLARE_DYNCREATE(CHkOcxCtrl)/ Constructor
7、public:CHkOcxCtrl() 。private:long m_UserID 。long m_DevicePort 。char m_UserName32 。char m_DeviceIP16 。char m_UserPassWord32 。/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CHkOcxCtrl)public:virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) virtual
8、 void DoPropExchange(CPropExchange* pPX) 。virtual void OnResetState() 。/AFX_VIRTUAL/ Implementation public:CHkOcxCtrl() 。/ Class factory and guid/ GetTypeInfo/ Property page IDs/ Type name and misc statusDECLARE_OLECREA TE_EX(CHkOcxCtrl)DECLARE_OLETYPELIB(CHkOcxCtrl)DECLARE_PROPPAGEIDS(CHkOcxCtrl)DE
9、CLARE_OLECTLTYPE(CHkOcxCtrl)/ Message maps/AFX_MSG(CHkOcxCtrl)/ NOTE - ClassWizard will add and remove member functions here. /DO NOT EDIT what you see in these blocks of generated code !/AFX_MSG DECLARE_MESSAGE_MAP()/ Dispatch maps/AFX_DISPA TCH(CHkOcxCtrl) afx_msg long GetUserID() 。 afx_msg LPCSTR
10、 GetUserName() 。 afx_msg LPCSTR GetUserPassWord() 。 afx_msg LPCSTR GetDeviceIP() 。 afx_msg long GetDevicePort() 。 afx_msg long ConnectDevice() 。 afx_msg long StartPreviewVideo() 。 afx_msg void SetDeviceIP(LPCTSTR DeviceIP) 。 afx_msg void SetDevicePort(long DevicePort) 。 afx_msg void SetUserName(LPCT
11、STR UserName) 。 afx_msg void SetUserPassWrod(LPCTSTR UserPass) 。 /AFX_DISPA TCHDECLARE_DISPATCH_MAP()/ Event maps/AFX_EVENT(CHkOcxCtrl) /AFX_EVENT DECLARE_EVENT_MAP()/ Dispatch and event IDspublic: enum /AFX_DISP_ID(CHkOcxCtrl) dispidGetUserID = 1L, dispidGetUserName = 2L, dispidGetUserPassWord = 3L
12、, dispidGetDeviceIP = 4L,dispidGetDevicePort = 5L, dispidConnectDevice = 6L, dispidStartPreviewVideo = 7L, dispidSetDeviceIP = 8L, dispidSetDevicePort = 9L, dispidSetUserName = 10L, dispidSetUserPassWrod = 11L, /AFX_DISP_ID 。/AFX_INSERT_LOCA TION/ Microsoft Visual C+ will insert additional declarati
13、ons immediately before the previous line.#endif/ !defined(AFX_HKOCXCTL_H_51923F17_EE7E_4049_8D42_9E3FED8493DB_INCLUDE D)文件名: HkOcxCtl.cpp/ HkOcxCtl.cpp : Implementation of the CHkOcxCtrl ActiveX Control class.#include stdafx.h#include HkOcx.h#include HkOcxCtl.h#include HkOcxPpg.h#ifdef _DEBUG#define
14、 new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE#endifIMPLEMENT_DYNCREATE(CHkOcxCtrl, COleControl)/ Message mapBEGIN_MESSAGE_MAP(CHkOcxCtrl, COleControl)/AFX_MSG_MAP(CHkOcxCtrl)/ NOTE - ClassWizard will add and remove message map entries/ DO NOT EDIT what you see in these blocks of genera
15、ted code !/AFX_MSG_MAPON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties) END_MESSAGE_MAP()/ Dispatch mapBEGIN_DISPATCH_MAP(CHkOcxCtrl, COleControl)/AFX_DISPATCH_MAP(CHkOcxCtrl)DISP_FUNCTION(CHkOcxCtrl, GetUserID, GetUserID, VT_I4,VTS_NONE)DISP_FUNCTION(CHkOcxCtrl,GetUserName,GetUserName,VT_BSTR, VTS_
16、NONE)DISP_FUNCTION(CHkOcxCtrl,GetUserPassWord,GetUserPassWord, VT_BSTR, VTS_NONE)DISP_FUNCTION(CHkOcxCtrl,GetDeviceIP,GetDeviceIP,VT_BSTR, VTS_NONE)DISP_FUNCTION(CHkOcxCtrl,GetDevicePort,GetDevicePort,VT_I4, VTS_NONE)DISP_FUNCTION(CHkOcxCtrl,ConnectDevice,ConnectDevice,VT_I4, VTS_NONE)DISP_FUNCTION(
17、CHkOcxCtrl, StartPreviewVideo,StartPreviewVideo, VT_I4, VTS_NONE)DISP_FUNCTION(CHkOcxCtrl,SetDeviceIP,SetDeviceIP,VT_EMPTY , VTS_BSTR)DISP_FUNCTION(CHkOcxCtrl,SetDevicePort,SetDevicePort,VT_EMPTY , VTS_I4)DISP_FUNCTION(CHkOcxCtrl,SetUserName,SetUserName,VT_EMPTY , VTS_BSTR)DISP_FUNCTION(CHkOcxCtrl,
18、SetUserPassWrod,SetUserPassWrod, VT_EMPTY, VTS_BSTR)/AFX_DISPATCH_MAPEND_DISPATCH_MAP()/ Event mapBEGIN_EVENT_MAP(CHkOcxCtrl, COleControl)/AFX_EVENT_MAP(CHkOcxCtrl)/ NOTE - ClassWizard will add and remove event map entries/ DO NOT EDIT what you see in these blocks of generated code !/AFX_EVENT_MAPEN
19、D_EVENT_MAP()/ Property pages/ TODO: Add more property pages as needed. Remember to increase the count!BEGIN_PROPPAGEIDS(CHkOcxCtrl, 1) PROPPAGEID(CHkOcxPropPage:guid)END_PROPPAGEIDS(CHkOcxCtrl)/ Initialize class factory and guidIMPLEMENT_OLECREATE_EX(CHkOcxCtrl, HKOCX.HkOcxCtrl.1,0x22afffa4, 0x19ad
20、, 0x4fef, 0xbc, 0x2f, 0x6d, 0xc0, 0xd3, 0xad, 0x18, 0xa8)/ Type library ID and versionIMPLEMENT_OLETYPELIB(CHkOcxCtrl, _tlid, _wVerMajor, _wVerMinor)/ Interface IDsconst IID BASED_CODE IID_DHkOcx = 0xf37ec80d, 0x7fad, 0x4bc5, 0x83, 0xa5, 0xc3, 0x94, 0xa3, 0xe, 0x42, 0xe4 。const IID BASED_CODE IID_DH
21、kOcxEvents = 0xef9a1d1d, 0x5164, 0x40a0, 0x9a, 0x79, 0xdc, 0x35, 0xe6, 0x8d, 0x4f, 0x16 。/ Control type informationstatic const DWORD BASED_CODE _dwHkOcxOleMisc = OLEMISC_ACTIV ATEWHENVISIBLE | OLEMISC_SETCLIENTSITEFIRST |OLEMISC_INSIDEOUT |OLEMISC_CANTLINKINSIDE | OLEMISC_RECOMPOSEONRESIZE 。IMPLEME
22、NT_OLECTLTYPE(CHkOcxCtrl, IDS_HKOCX,_dwHkOcxOleMisc)/ CHkOcxCtrl:CHkOcxCtrlFactory:UpdateRegistry -/ Adds or removes system registry entries for CHkOcxCtrlBOOL CHkOcxCtrl:CHkOcxCtrlFactory:UpdateRegistry(BOOL bRegister)/ TODO: Verify that your control follows apartment-model threading rules./ Refer
23、to MFC TechNote 64 for more information./ If your control does not conform to the apartment-model rules, then/ you must modify the code below, changing the 6th parameter from/ afxRegApartmentThreading to 0.if (bRegister)return AfxOleRegisterControlClass(AfxGetInstanceHandle(),m_clsid, m_lpszProgID,I
24、DS_HKOCX,IDB_HKOCX, afxRegApartmentThreading, _dwHkOcxOleMisc,_tlid,_wVerMajor,_wVerMinor) 。elsereturn AfxOleUnregisterClass(m_clsid, m_lpszProgID)。 / CHkOcxCtrl:CHkOcxCtrl - ConstructorCHkOcxCtrl:CHkOcxCtrl()InitializeIIDs(&IID_DHkOcx, &IID_DHkOcxEvents) 。m_UserID = -1。 m_DevicePort = 0。memset(m_Us
25、erName, 0, 32。) memset(m_DeviceIP, 0, 16。) memset(m_UserPassWord, 0, 32。) / / CHkOcxCtrl:CHkOcxCtrl - DestructorCHkOcxCtrl:CHkOcxCtrl()/ CHkOcxCtrl:OnDraw - Drawing functionvoid CHkOcxCtrl:OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) / TODO: Replace the following code with your ow
26、n drawing code. pdc-FillRect(rcBounds,CBrush:FromHandle(HBRUSH)GetStockObject(BLACK_BRUSH) 。/ CHkOcxCtrl:DoPropExchange - Persistence supportvoid CHkOcxCtrl:DoPropExchange(CPropExchange* pPX)ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor) 。COleControl:DoPropExchange(pPX)。/ TODO: Call PX_ funct
27、ions for each persistent custom property./ CHkOcxCtrl:OnResetState - Reset control to default statevoid CHkOcxCtrl:OnResetState()COleControl:OnResetState()。/ Resets defaults found inDoPropExchange/ TODO: Reset any other control state here./ CHkOcxCtrl message handlerslong CHkOcxCtrl:GetUserID()/ TOD
28、O: Add your dispatch handler code herereturn m_UserID。LPCSTR CHkOcxCtrl:GetUserName()/return m_UserName.AllocSysString()。return m_UserName。LPCSTR CHkOcxCtrl:GetUserPassWord()/return m_UserPassWord.AllocSysString(。) return m_UserPassWord。LPCSTR CHkOcxCtrl:GetDeviceIP()/return m_DeviceIP.AllocSysStrin
29、g()。return m_DeviceIP。long CHkOcxCtrl:GetDevicePort()/ TODO: Add your dispatch handler code herereturn m_DevicePort。long CHkOcxCtrl:ConnectDevice()if(m_UserID = 0)NET_DVR_Logout_V30(m_UserID) 。NET_DVR_DEVICEINFO_V30 DVR_DEVICEINFO_V30 。m_UserID = NET_DVR_Login_V30(m_DeviceIP, m_DevicePort, m_UserName, m_UserPass
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 戀愛行為學課件
- 堵水調剖技術及發展現狀
- 腰間盤突出個案護理
- 阿爾茨海默病患者的全面護理方案
- 參會禮儀培訓內容
- 婦產科護理前沿
- 孕產婦健康管理服務規范課件
- 2025年中國母乳喂養用乳頭霜行業市場全景分析及前景機遇研判報告
- 中學生身心健康促成長
- 反流性食管炎護理
- 物流數據分析與決策
- 2024年河北交通投資集團公司招聘筆試參考題庫含答案解析
- PCN、ECN變更管理流程培訓資料
- 預防職務犯罪課件
- 酒店質檢得分表儀容儀表行為規范禮貌禮節
- DB61∕T 1308-2019 建筑消防設施維護保養規范
- 國開《民法學(1)》形考任務1-4答案
- ISTA-6-AMAZON-亞馬遜測試標準(快遞包裹運輸)
- 第五章健康保障制度
- 2022年撫順市三支一扶考試真題
- 國家開放大學一網一平臺電大《建筑測量》實驗報告1-5題庫
評論
0/150
提交評論