聲明:本系列文章只提供交流與學習使用。文章中所有涉及到??低曉O備的SDK均可在??低暪俜骄W站下載得到。文章中所有除官方SDK意外的代碼均可隨意使用,任何涉及到??低暪纠娴姆钦J褂糜墒褂谜咦约贺撠?,與本人無關。
為什么在開始之前先說題外話呢?主要是為了怕有人誤會,以為這里要寫的是一個關于視頻流處理的文章。其實這個系列的幾篇文章可能和視頻流的處理半毛錢關系都沒有,沖著視頻技術來的看官們,可能讓你們失望了。這個系列里主要涉及的技術大概有.net的socket處理,C#寫ActiveX插件,少量的線程處理,以及對非托管C++庫的調用。
另一方面,這個系列文章說的是一個綜合的小項目,沒有復雜的功能,沒有嚴謹的項目管理過程,但卻有一個技術探索的一般過程。好了,題外話到此結束,下面是正題了。
前一段時間公司兄弟部門提出需求,希望能夠把公司部分公共區域的監控視頻共享出來給員工查看,這個事情最后落地到鄙人身上。經過多方聯系,了解到需求實現的兩個制約條件。
現狀就是這樣,沒有其他辦法,只能開發來解決這些問題了。其實想想問題也沒多麻煩,數據只要采集到服務器上一切就搞定容易了。沿著這條初步思路,在??倒倬W下了一堆SDK,你還別說,東西挺全的,什么方法都提供現成的了。什么視頻采集、設備設置、視頻播放這些都有現成的接口可以直接使用。更讓我驚喜的是,SDK里居然還提供C#和java版本的DEMO,好吧,看到這些前面聯系客服碰的釘子就不放心上了,可能客服MM那天失戀了,心情不好也說不定。
說回正題,既然有這些給力的SDK就該搭建一個原型來驗證把視頻數據通過服務端接到客戶端這種思路是否正確,具體實現下一篇會細說,這里就長話短說,原型驗證成功。說明思路很正確,下一步就是具體的開發工作了,在原型基礎上一步步的重構,最后一個從視頻設備讀取視頻數據轉發給客戶端的系統就搞定了。
經過進一步壓力測試以后發現有性能不能滿足需求,需求要求能夠滿足公司近千人的使用,并發要求很高,并且視頻服務器要求必須及時處理所有數據到客戶端的轉發,否則客戶端將出現跳幀,卡頓的問題。解決壓力問題從兩個方面著手:
最后的最后上線的系統,部署方案如圖所示:

從操作數據流方面整個序列圖如下:

從兩個圖中很清楚的能夠看出這個系統的設計思路,
當然從圖中也很容易發現系統的不足之處。
關于系統的不足之處,是下一個階段處理的問題,在這個系列里不會處理。但是非常歡迎各位大仙大神討論。。。這里就不多說了。
最后,細心的讀者一定已經發現前面段落中出現的橙色標記的關鍵字。
一個簡單方法論的實踐過程。希望對大家有用。
亂七八糟的寫了一堆,實在是想寫的點太多,寫的時候覺得這個重要,那個也重要,最后貌似什么也沒寫,讓大家見笑了。下一篇應該是要寫服務端的功能設計及實現,希望有需求的人多關注。
新聞熱點
疑難解答