国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ispy在視頻監(jiān)控中的應(yīng)用

2012-04-29 23:23:00吳常清
電腦知識(shí)與技術(shù) 2012年21期
關(guān)鍵詞:視頻監(jiān)控

吳常清

摘要:分析了基于IP Camera的ispy網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),該系統(tǒng)掃描出局域網(wǎng)中用戶(hù)設(shè)定的IP和端口號(hào)的IP Camera,利用AForge. net提供的API與IP Camera之間建立連接,然后ispy將IP Camera收集來(lái)的圖片發(fā)送www.ispyconnect.com,注冊(cè)用戶(hù)可以使用PC、IPad、手機(jī)等終端設(shè)備上的瀏覽器觀看到IP Camera傳送過(guò)來(lái)的視頻。ispy還提供了自動(dòng)報(bào)警功能,當(dāng)IP Camera通過(guò)相應(yīng)算法監(jiān)測(cè)到異常信息時(shí),會(huì)通過(guò)sms、email等方式將異常信息發(fā)送給客戶(hù)。

關(guān)鍵詞:ispy;IP Camera;視頻監(jiān)控

中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)21-5227-04

1 ispy簡(jiǎn)介

視頻監(jiān)控在我們?nèi)粘I钪衅鸬搅酥匾饔?。它廣泛應(yīng)用于機(jī)器設(shè)備看護(hù)、家庭保護(hù)、老人監(jiān)護(hù)、寵物照顧等等。網(wǎng)絡(luò)攝像機(jī)(IP Camera)的迅速發(fā)展也使得視頻監(jiān)控變得更加方便與簡(jiǎn)捷。IP Camera除了具備一般的傳統(tǒng)攝像機(jī)的所有圖像捕捉功能外,機(jī)內(nèi)還內(nèi)置了數(shù)字化壓縮控制器和基于WEB的操作系統(tǒng),使得視頻數(shù)據(jù)經(jīng)過(guò)壓縮加密后,通過(guò)局域網(wǎng),internet或無(wú)線(xiàn)網(wǎng)絡(luò)送至終端用戶(hù)。IP Camera可以直接接入到TCP/IP的數(shù)字化網(wǎng)絡(luò)中,因此這種系統(tǒng)主要的功能就是聯(lián)網(wǎng)上面,通過(guò)互聯(lián)網(wǎng)或者局域網(wǎng)進(jìn)行視頻和音頻的傳輸。ispy是一種C#編寫(xiě)的開(kāi)源視頻監(jiān)控軟件,它將局域網(wǎng)中的網(wǎng)絡(luò)攝像機(jī)的視頻信息收集起來(lái),進(jìn)行集中式管理。用戶(hù)可以用ispy對(duì)視頻進(jìn)行管理,它可以將視頻流發(fā)送到ispy的官方網(wǎng)站,注冊(cè)用戶(hù)登錄后可以在個(gè)人電腦或手機(jī)上觀看到視頻信息,可以播放原來(lái)錄制的視頻,也可以遠(yuǎn)程控制云臺(tái),它使人們做到了真正的遠(yuǎn)程監(jiān)控。ispy不僅可以用來(lái)進(jìn)行監(jiān)控,它還具有自動(dòng)報(bào)警的功能,一旦監(jiān)測(cè)到危險(xiǎn)時(shí)就會(huì)將危險(xiǎn)信息發(fā)送到用戶(hù)的郵件或通過(guò)sms發(fā)送。

1 ispy中利用的技術(shù)簡(jiǎn)介

1)ispy利用了AForge.net這個(gè)框架。AForge.net[1]是一個(gè)專(zhuān)門(mén)為開(kāi)發(fā)者和研究者基于C#框架設(shè)計(jì)的,這個(gè)框架提供了不同的類(lèi)庫(kù)和關(guān)于類(lèi)庫(kù)的資源,還有很多應(yīng)用程序例子,包括計(jì)算機(jī)視覺(jué)與人工智能,圖像處理,神經(jīng)網(wǎng)絡(luò),遺傳算法,機(jī)器學(xué)習(xí),機(jī)器人等領(lǐng)域。

2)Web Service[2]也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統(tǒng)中傳遞過(guò)來(lái)的請(qǐng)求,輕量級(jí)的獨(dú)立的通訊技術(shù)。

Web Service的主要目標(biāo)是跨平臺(tái)的可互操作性。為了實(shí)現(xiàn)這一目標(biāo),Web Service完全基于XML(可擴(kuò)展標(biāo)記語(yǔ)言)、XSD(XML Schema)等獨(dú)立于平臺(tái)、獨(dú)立于軟件供應(yīng)商的標(biāo)準(zhǔn),是創(chuàng)建可互操作的、分布式應(yīng)用程序的新平臺(tái)。因此使用Web Service有許多優(yōu)點(diǎn),其中最大的優(yōu)點(diǎn)是跨防火墻的通信。

如果應(yīng)用程序有成千上萬(wàn)的用戶(hù),而且分布在世界各地,那么客戶(hù)端和服務(wù)器之間的通信將是一個(gè)棘手的問(wèn)題。因?yàn)榭蛻?hù)端和服務(wù)器之間通常會(huì)有防火墻或者代理服務(wù)器。傳統(tǒng)的做法是,選擇用瀏覽器作為客戶(hù)端,寫(xiě)下一大堆ASP頁(yè)面,把應(yīng)用程序的中間層暴露給最終用戶(hù)。這樣做的結(jié)果是開(kāi)發(fā)難度大,程序很難維護(hù)。要是客戶(hù)端代碼不再如此依賴(lài)于HTML表單,客戶(hù)端的編程就簡(jiǎn)單多了。如果中間層組件換成Web Service的話(huà),就可以從用戶(hù)界面直接調(diào)用中間層組件,從而省掉建立ASP頁(yè)面的那一步。要調(diào)用Web Service,可以直接使用Microsoft SOAP Toolkit或.net這樣的SOAP客戶(hù)端,也可以使用自己開(kāi)發(fā)的SOAP客戶(hù)端,然后把它和應(yīng)用程序連接起來(lái)。不僅縮短了開(kāi)發(fā)周期,還減少了代碼復(fù)雜度,并能夠增強(qiáng)應(yīng)用程序的可維護(hù)性。同時(shí),應(yīng)用程序也不再需要在每次調(diào)用中間層組件時(shí),都跳轉(zhuǎn)到相應(yīng)的"結(jié)果頁(yè)"。

3)利用瀏覽器來(lái)訪(fǎng)問(wèn)IP Camera。需要解決的問(wèn)題是NAT穿透[3]。解決的方法是,利用一個(gè)具有公網(wǎng)IP的計(jì)算機(jī),將它作為中介。在ispy上設(shè)置局域網(wǎng)中的每臺(tái)IP Camera的IP地址和端口。位于不同私網(wǎng)的兩臺(tái)主機(jī),在與另一臺(tái)主機(jī)通信時(shí),通過(guò)NAT的地址轉(zhuǎn)換,將私網(wǎng)地址和端口映射為公網(wǎng)地址和端口,利用此地址相互通信。

4)UPnP是各種各樣的智能設(shè)備、無(wú)線(xiàn)設(shè)備和個(gè)人電腦等實(shí)現(xiàn)遍布全球的對(duì)等網(wǎng)絡(luò)連接(P2P)的結(jié)構(gòu)。UPnP是一種分布式的,開(kāi)放的網(wǎng)絡(luò)架構(gòu)。UPnP是獨(dú)立的媒介。在任何操作系統(tǒng)中,利用任何編程語(yǔ)言都可以使用UPnP設(shè)備。

NAT穿越技術(shù)[3]允許網(wǎng)絡(luò)應(yīng)用程序?qū)λ鼈兪欠裎挥谝粋€(gè)具有UPnP能力的NAT設(shè)備之后進(jìn)行檢測(cè)。然后,這些程序?qū)@得共享的全球可路由IP地址,并且配置端口映射以將來(lái)自NAT外部端口的數(shù)據(jù)包轉(zhuǎn)發(fā)到應(yīng)用程序使用的內(nèi)部端口上--所有這一切都是自動(dòng)完成的,用戶(hù)無(wú)需手動(dòng)映射端口或者進(jìn)行其它工作。NAT穿越技術(shù)允許網(wǎng)絡(luò)設(shè)備或者點(diǎn)對(duì)點(diǎn)應(yīng)用程序通過(guò)動(dòng)態(tài)開(kāi)啟和閉合與外部服務(wù)之間的通信端口穿過(guò)NAT網(wǎng)關(guān)與外界通信。

5)P2P是英文Peer-to-Peer(對(duì)等)的簡(jiǎn)稱(chēng),又被稱(chēng)為“點(diǎn)對(duì)點(diǎn)”,P2P結(jié)構(gòu)如下圖1所示?!皩?duì)等”技術(shù),是一種網(wǎng)絡(luò)新技術(shù),依賴(lài)網(wǎng)絡(luò)中參與者的計(jì)算能力和帶寬,而不是把依賴(lài)都聚集在較少的幾臺(tái)服務(wù)器上。

圖1

簡(jiǎn)單的說(shuō),P2P直接將人們聯(lián)系起來(lái),讓人們通過(guò)互聯(lián)網(wǎng)直接交互。P2P使得網(wǎng)絡(luò)上的溝通變得容易、更直接共享和交互,真正地消除中間商。P2P就是人可以直接連接到其他用戶(hù)的計(jì)算機(jī)、交換文件,而不是像過(guò)去那樣連接到服務(wù)器去瀏覽與下載。P2P另一個(gè)重要特點(diǎn)是改變互聯(lián)網(wǎng)現(xiàn)在的以大網(wǎng)站為中心的狀態(tài)、重返"非中心化",并把權(quán)力交還給用戶(hù)。

ispy中應(yīng)用到了P2P技術(shù)[4],當(dāng)用戶(hù)從遠(yuǎn)端的瀏覽器對(duì)局域網(wǎng)中的攝像頭進(jìn)行訪(fǎng)問(wèn)時(shí),ispy官網(wǎng)的服務(wù)器會(huì)和作為一個(gè)Server,而遠(yuǎn)端的瀏覽器所用客戶(hù)端作為一個(gè)peer,網(wǎng)絡(luò)攝像頭作為一個(gè)peer,它們之間通過(guò)P2P技術(shù)進(jìn)行通信。

2 ispy的應(yīng)用

2.1ispy的網(wǎng)絡(luò)結(jié)構(gòu)

如圖2所示。

圖2

2.2網(wǎng)絡(luò)攝像機(jī)的監(jiān)測(cè)

由于每個(gè)IPCamera內(nèi)置有操作系統(tǒng)和WEB服務(wù)器,所以我們可以把它設(shè)想成一臺(tái)小型電腦。ispy是通過(guò)命令arp–a的方法來(lái)獲取所在局域網(wǎng)內(nèi)的所有ip camera的IP地址和所開(kāi)放的端口號(hào)。這部分的代碼在FindCamera.cs,以下代碼是將局域網(wǎng)中所有的網(wǎng)絡(luò)攝像機(jī)都掃描出來(lái)。

foreach (string s1 in nb.GetNetworkComputers())

{

var ipEntry = Dns.GetHostEntry(s1.Trim(\));

var addr=ipEntry.AddressList.Where(p=>p.AddressFamily==AddressFamily.InterNetwork);

foreach (var t in addr)

{

DnsEntries.Add(t.ToString().Trim());

}

}

2.3視頻的捕獲模塊與存儲(chǔ)

很多嵌入式WEB服務(wù)器提供公共網(wǎng)關(guān)接口(cgi),它能使WEB的客戶(hù)端和服務(wù)器之間進(jìn)行交互操作,完成一些如遠(yuǎn)程監(jiān)控、數(shù)據(jù)庫(kù)查詢(xún)、參數(shù)更新等功能。CGI有3種可以從HTTP服務(wù)器獲取用戶(hù)輸入的數(shù)據(jù);通過(guò)環(huán)境變量(GET);通過(guò)命令行參數(shù)方式;通過(guò)CGI程序的標(biāo)準(zhǔn)輸入方式(POST)。當(dāng)從服務(wù)器上獲得數(shù)據(jù)并且不改變服務(wù)器端原有數(shù)據(jù)、且數(shù)據(jù)量較小時(shí),可以采用GET方式,GET方式常被用于獲取靜態(tài)文檔。由于不同IP Camera的CGI是不同的,所以ispy將不同IP Camera的CGI存放到一個(gè)Sources.xml文件中,以達(dá)到可以連接多種IP Camera的目的。

視頻的捕獲是利用AForge.net中提供的DirectShow視頻開(kāi)發(fā)技術(shù)。代碼在CameraVideo.cs中。以下是獲取本地USB攝像頭的代碼,主要是利用DirectShow提供的VideoCaptureDevice。

string moniker = Camobject.settings.videosourcestring;

var videoSource = new VideoCaptureDevice(moniker);

string[] wh = Camobject.resolution.Split(x);

videoSource.DesiredFrameSize=newSize(Convert.ToInt32(wh[0]),Convert.ToInt32(wh[1]));

videoSource.DesiredFrameRate = Camobject.settings.framerate;

OpenVideoSource(videoSource, true);

break;

獲取到攝像頭后,會(huì)捕獲攝像頭傳來(lái)的每一幅圖片,并將圖片封裝成幀,然后再以一定的壓縮算法將圖片轉(zhuǎn)成視頻流。如下代碼取于WindowCamera.cs中的BmpToBytes_MemStream方法,它是將圖片轉(zhuǎn)換成視頻流。

var ms = new MemoryStream();

// Save to memory using the Jpeg format

bmp.Save(ms, MainForm.Encoder, MainForm.EncoderParams);

// read to end

byte[] bmpBytes = ms.GetBuffer();

bmp.Dispose();

bmp = null;

ms.Close();

return bmpBytes;

每天錄制的視頻會(huì)存放在一個(gè)隨機(jī)命名的文件下。

2.4在外部網(wǎng)絡(luò)中利用瀏覽器訪(fǎng)問(wèn)

在LocalServer.cs中有一個(gè)_myListener進(jìn)程,它在指定的IP地址和端口上偵聽(tīng)是否有傳入的連接嘗試,它將IP Camera傳送過(guò)來(lái)的一幀幀圖片封裝成數(shù)據(jù)流。在ispy與網(wǎng)絡(luò)攝像機(jī)之間進(jìn)行數(shù)據(jù)交換時(shí),ispy作為服務(wù)器,攝像機(jī)作為客戶(hù)端。而當(dāng)在ispy與瀏覽器端建立了連接時(shí),ispy是作為客戶(hù)端與ispy官網(wǎng)作為服務(wù)器進(jìn)行交換數(shù)據(jù)的。在LocalServer.cs的StartListen

方法中String sRequestedFile;

String sErrorMessage; String sLocalDir; String sDirName;

ParseRequest(sMyWebServerRoot, sBuffer, out sRequest, out sRequestedFile, out sErrorMessage, out sLocalDir, out sDirName, out sPhysicalFilePath, out sHttpVersion,

out sFileName, out sMimeType, out bServe, out bHasAuth, ref mySocket);

if (!bServe)

{

resp = "Denied(Access this server through ispyconnect.com)";

SendHeader(sHttpVersion, "text/html", resp.Length, " 200 OK", 0, ref mySocket);

SendToBrowser(resp, mySocket);

goto Finish;

}

2.4.1處理瀏覽器發(fā)出的云臺(tái)命令

當(dāng)用戶(hù)用瀏覽器對(duì)遠(yuǎn)程的攝像機(jī)進(jìn)行訪(fǎng)問(wèn)時(shí),還可以使用命令的方式對(duì)攝像機(jī)的云臺(tái)進(jìn)行控制。主要代碼在LocalServer.cs的ProcessCommandInternal中

case "ptz":

if (value != "")

cw.CalibrateCount = 0;

cw.Calibrating = true;

if(value.StartsWith("ispydir_"))cw.PTZ.SendPTZCommand((

Enums.PtzCommand)Convert.ToInt32(value.Replace("ispydir_", "")));

else

cw.PTZ.SendPTZCommand(value,true);

}

2.4.2運(yùn)動(dòng)監(jiān)測(cè)算法

Ispyconnect中的運(yùn)動(dòng)監(jiān)測(cè)算法都是調(diào)用AForge.net中的類(lèi),程序員不需要知道具體算法的如何實(shí)現(xiàn)的,只要知道算法的功能就可以。如以下是比較前后兩幀之間差異的算法

if (_camera.MotionDetector.MotionDetectionAlgorithm isCustomFrameDifferenceDetector)

{ ((CustomFrameDifferenceDetector)_camera.MotionDetector.MotionDetectionAlgorithm).SetBackgroundFrame(_camera.LastFrame);

}

3結(jié)束語(yǔ)

該文分析了基于IP Camera的ispy在視頻監(jiān)控中的實(shí)現(xiàn)。由于IP Camera中采用了嵌入式系統(tǒng)技術(shù),支持多種傳輸協(xié)議,綜合考慮成本和性能等方面。ispy適合于家庭、企業(yè)、政府等視頻監(jiān)控的實(shí)現(xiàn)。

參考文獻(xiàn):

[1]龔成瑩,何輝.基于AForge.NET的車(chē)輛運(yùn)動(dòng)視頻檢測(cè)方法[J].電腦知識(shí)與技術(shù),2011(1):187-188,196.

[2] webservice百度百科[EB/OL].http://baike.baidu.com/view/837392.htm.

[3]歐陽(yáng)軍林,李中凱,李章兵.大學(xué)生宿舍視頻監(jiān)控報(bào)警系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)[J].微計(jì)算機(jī)應(yīng)用,2011(1):60-67

[4] ispyconnect官方網(wǎng)站[EB/OL].http://www.ispyconnect.com.

猜你喜歡
視頻監(jiān)控
基于特定類(lèi)型物體檢測(cè)的藥店視頻監(jiān)管系統(tǒng)
基于變電站的微機(jī)防誤系統(tǒng)的可視化監(jiān)控技術(shù)研究
地鐵高清視頻存儲(chǔ)技術(shù)的應(yīng)用分析
基于視頻圖像采集移動(dòng)目標(biāo)檢測(cè)系統(tǒng)的設(shè)計(jì)
數(shù)字化監(jiān)控系統(tǒng)的企業(yè)應(yīng)用
廣東地區(qū)輸電線(xiàn)路在線(xiàn)監(jiān)測(cè)技術(shù)應(yīng)用探究
35kV變電站視頻接入集中遙視系統(tǒng)研究與應(yīng)用
基于嵌入式Linux的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
基于HTML5的視頻監(jiān)控微課設(shè)計(jì)淺析
智能視頻檢索技術(shù)在校園安防建設(shè)中的發(fā)展應(yīng)用
城口县| 临西县| 台中市| 左云县| 西昌市| 常德市| 内丘县| 台南县| 眉山市| 健康| 普宁市| 渭源县| 霍山县| 民勤县| 南城县| 沙湾县| 绥滨县| 高州市| 邯郸市| 阿鲁科尔沁旗| 浦北县| 老河口市| 井冈山市| 防城港市| 怀集县| 广州市| 温州市| 右玉县| 普洱| 仁怀市| 奉新县| 根河市| 安龙县| 忻州市| 资中县| 台州市| 武功县| 华安县| 三穗县| 江安县| 会泽县|