視頻系統 流媒體 rtsp hls h264 h265 aac 高併發 低延時 系統 設計 錄像 視頻合成 轉發 點播 快進 快退 單步播放 分佈式集羣

 

 

系統改名爲:,升級包改使用jpg圖像封裝,從2.124版本開始,1.*的升級包停止使用

         系統工具            下載地址(2019-04-19) :https://pan.baidu.com/s/1kPZC38jPrZ4xWbSCplomuQ 提取碼:39wg 

         升級包(fs-2.124.1038)下載地址(2019-04-19):https://pan.baidu.com/s/1PhjqtoHeqENI0ERA8aMm3w 提取碼:g7so 

 

         升級包(1.78)下載地址(2017-04-10):http://pan.baidu.com/s/1i5ieCFr 新功能:增加阿里雲oss儲存回放的支持

         升級包(1.78)下載地址(2017-04-10):http://pan.baidu.com/s/1i5ieCFr 新功能:增加阿里雲oss儲存回放的支持;

         客戶端工具下載地址(2017-04-10):http://pan.baidu.com/s/1c2Omp5u

         升級包(1.77)下載地址(2017-03-31):http://pan.baidu.com/s/1qY6Sr4C 新功能:增加rtmp採集模塊,支持按需拉流,支持相機輪巡檢查相機狀態;

         升級包(1.76)下載地址(2017-03-04):http://pan.baidu.com/s/1i4NdQol  關鍵更新:hls服務端極限優化,vlc實測直播最小延時小於1S,讓web直播互動成爲可能;

         升級包(1.75)下載地址(2017-02-22):http://pan.baidu.com/s/1boRto4Z

         升級包(1.74)下載地址(2017-02-13):http://pan.baidu.com/s/1slat8Pv

         升級包(1.73)下載地址(2017-01-11):http://pan.baidu.com/s/1bptbt07

         升級包(1.72)下載地址(2017-01-10):http://pan.baidu.com/s/1pKEHoMn

         客戶端工具下載地址(2017-01-10):http://pan.baidu.com/s/1miLjnCW

         升級包(1.71)下載地址(2017-01-09):http://pan.baidu.com/s/1geJHlLp

         客戶端工具下載地址(2017-01-02):https://pan.baidu.com/s/1nvJKMJR

         升級包(1.69)下載地址(2016-12-07):http://pan.baidu.com/s/1c1DFPG8

         升級包(1.68)下載地址(2016-12-02):http://pan.baidu.com/s/1i5v4EHZ

         升級包(1.65)下載地址(2016-11-01):http://pan.baidu.com/s/1qYbCaNa

         客戶端工具下載地址(2016-11-01):http://pan.baidu.com/s/1pL4Kpp5

         升級包(1.64)下載地址(2016-10-28):http://pan.baidu.com/s/1qXUQmy4

         客戶端工具下載地址(2016-10-27):http://pan.baidu.com/s/1cd0pBo

         升級包(1.63)下載地址(2016-10-18):https://pan.baidu.com/s/1jIM4CRW

         客戶端工具下載地址(2016-10-18):https://pan.baidu.com/s/1c20wkCS

         客戶端工具下載地址(2016-10-11):https://pan.baidu.com/s/1kUP9OgB

         客戶端工具下載地址(2016-10-10):https://pan.baidu.com/s/1skYQYQD

         客戶端工具下載地址(2016-09-28):https://pan.baidu.com/s/1c2FUoY8

         升級包(1.61)下載地址(2016-09-28):https://pan.baidu.com/s/1pLrRsan

         客戶端工具下載地址(2016-09-27):http://pan.baidu.com/s/1boEufGb

         升級包(1.60)下載地址(2016-09-27):http://pan.baidu.com/s/1nvfeho1

         客戶端工具下載地址(2016-09-22):https://pan.baidu.com/s/1bpKFGrP        

         升級包(1.57)下載地址(2016-09-12):https://pan.baidu.com/s/1kUH0OJH

         客戶端工具下載地址(2016-09-07):https://pan.baidu.com/s/1i5sIyhB

         客戶端工具下載地址(2016-07-13):http://pan.baidu.com/s/1o8tlc9c

         客戶端工具下載地址(2016-07-07):http://pan.baidu.com/s/1i5O2YbV

 

文章完善中().....

一,功能清單:

        1,單機版(多網口)支持400路以上視頻流(1080及以上,4M碼流)採集--已實現;

        2,支持全天錄像--已實現mkv支持;

        3,支持硬盤滾動寫入,磁盤滿時自動刪除最早的文件,支持磁盤配額--已實現;

        4,支持磁盤陣列,支持動態擴容--已實現;

        5,支持通用播放器播放儲存的視頻--已實現兼容vlc,portplayer;

        6,支持視頻rtsp分發(不限客戶端數量,瓶頸在網絡)--已實現;

        7,rtsp使用kcp不公平協議搶佔網絡資源(在網絡丟包,如無線網,可比tcp延時小50%以上)--已實現(同時支持tcp和udp);

        8,支持視頻hls分發(不限客戶端數量,瓶頸在網絡,pc上的vlc,android上moboPlayer實測與海康網頁直播延時1S)--已實現,測試中;

        9,支持視頻文件rtsp點播--已實現;

        10,支持按時間rtsp點播視頻(既視頻回放,回放與實時視頻相比最小延時約爲2S,保證10S)--已實現;

        11,支持接收第三方程序發送的xml或json,並根據內容合成視頻(延時約1S,保證5S)--已實現;

        12,支持遠程配置系統--已實現;

        13,支持接受xml或json導入配置,方便第三方公司控制系統--已實現;

        14,支持ftp瀏覽和下載視頻--已實現;

        15,支持客戶端控制點播速度(可實現快速,慢速和單步播放)--已實現;    

        16,支持通過gb28181平臺預覽視頻,控制球機(現只支持海康球機)--已實現; 

        17,支持拉取第三方gb28181平臺的視頻數據進行儲存+rtsp轉發+rtsp回放+hls轉發+gb28181再推送 --已實現;

        18,支持"支持gb28181的相機"直接推送視頻數據到服務器進行儲存+rtsp轉發+rtsp回放+hls轉發+gb28181再推送,同時支持NAT穿透 --已實現;

        19,支持第三方使用GB28181協議訪問本服務器的儲存視頻,同時支持第三方使用GB28181協議訪問與本服務器屬於同一集羣的服務器上的儲存視頻--已實現;

        20,支持接入onvif相機,代理相機控制指令,實現集中控制;

        21,支持阿里雲oss儲存回放;

        22,支持分佈式集羣(各臺主機相互獨立,互不依賴,對客戶端來說集羣內的任何一個節點都是中心服務器,訪問任何一臺主機都能獲取到集羣內其它主機上的數據)--已實現;

        23,鑑於22條的特性,程序具有中心服務器熱備,負載均衡等功能--已實現;

        24,加入以telnet方式運行程序,同時配合看門狗,保證系統穩定持續運行,參考文章:http://blog.csdn.net/zhangrui_fslib_org/article/details/51591129;

二,系統優勢

        1,程序採用C語言,支持arm,x86平臺,具有跨平臺特性;

        2,程序經歷了三次重構,擁有先進的框架和良好的擴展性;

                1),首次編寫使用傳統的c面向資源對象設計(如一個相機一個對象,增加相機就增加一個類的實例),導致在通道過多時,會新建大量的對象,日誌的數據量成倍增長,在處理大併發時系統將創建大量的線程,線各程的創建和消亡佔用了過多的cpu,基於這些原因,在功能全開時程序只能做到100路以內的併發;

                2),第一次重構加入了線程池的機制,同時程序也去掉了第三方庫(不再需要live555,ffmpeg等第三方庫),依然使用面向資源對象設計,這個版本雖做了大量的修改,代碼量極度減少,cpu佔用降低,但併發數增加仍不明顯;

               3),第二次重構改變了程序的設計風格,改用使用面向過程的設計模式(或面向過程對象的設計模式,一個過程一個對象,因系統內任何一個資源只經過一個過程一次,即完成整個任務所需要的過程數就是系統總的線程數,這讓系統的線程數不再與通道相關,成爲一個定值),解決了線程過多的問題,同時也省去了複雜的線程池,讓系統變得高效簡單,讓系統併發數突破1000;

               4),第三次重構是對第二次重構的優化,也是真正工程化的實現,在第二次重構後,雖然併發數大大增加,但大併發時的一些不可預見性問題因程序不能追蹤(因路數太多,用記錄日誌的辦法效率低下,幾乎是因量太大無法分析),系統bug的修復變得困難,這次重夠加入了系統異常自動記錄功能,在出現異常時,可自動定位並記錄異常出現在源碼的什麼文件的多少行,同時還可記錄出現問題時對應線程你關心的內存的值,大大加簡化了系統bug定位和修復,讓直接處理生產環境中的異常變爲了可能,同時還增加了線程資源實時消耗的統計信息,能實時瞭解系統中各線程的cpu佔用情況;這次重夠還去掉了glib的依賴,系統不再使用鏈表,使用數組代替鏈表,修改所有的查找排序的算法爲二分查找,讓單系統達到萬級併發成爲了可能;

        3,系統不使用數據庫,單進程,不依賴第三方庫,簡單可靠;

        4,系統同時支持xml和json通信,讓第三方集成變得異常簡單;

        5,程序使用配置導入導出方式進行修改程序,讓程序可以向下並向後兼容,徹底解決版本不兼容給使用者帶來的問題;       

三,系統構架

        1,系統環境

                 系統託管給http://blog.csdn.net/zhangrui_fslib_org/article/details/49824353描述的系統,由此係統實現系統的更新與維護;

        2,系統密碼設計

                 小雉系統是基於linux開發,爲保證系統安全,同時方便運維操作,系統密碼按如下設計:

                         使用固定的本地密碼:使用本地鍵盤輸入本地root密碼可登錄系統,方便安裝和本地維護;

                         動態的遠程密碼:使用ssh或telnel遠程連接系統時,連接終端上會打印提示信息,操作員需根據提示信息向”小雉系統”官方用戶中心獲取對應的登錄密碼後登錄系統;

                注:動態密碼中的提示信息隨機產生,且獲取的密碼只能嘗試一次,如輸入錯誤,需要重新獲取提示信息,使用新的密碼再次嘗試.

 

        3,調試與穩定性框架設計

                 系統調試統一使用標準的printf打印,爲使系統在實際生產過程中能遠程查看到程序的實時打印信息,系統採用管道設計,保證在運行過程中能隨時遠程查看程序的實時和歷史打印信息(調用此接口的方法:out -v 1 /fs/bin/sos,表示用管道捕捉/fs/bin/sos的標準輸出),用此接口無需修改程序源碼;

                 爲了解程序線程之間的關係和線程的cpu瓶頸,設計線程監控,使用此接口,必須使用此對象;

                 爲了定位生產過程中出現的bug,設計系統遺產處理,使用此接口,必須使用此對象,並用線程監控對象配合;

                 圖1--遠程查看打印信息(運行debug);

                 上圖可看出可查看三個程序--fsServer(進程號369),php-fpm(進程號399,php的主程序),sos(進程號588,流媒體主程序)的打印信息;

               上圖可看出系統現接入16路視頻

                 圖2--遠程查看程序的線程信息(運行debub -m)

                 上圖可看出有兩個程序使用了監控接口--fsServer(進程號369),sos(進程號588,流媒體主程序)的打印信息;

                 圖3--爲sos的精簡版線程信息(掩碼0xF6)

                從上圖可看出流媒體的線程組成,總共11個線程,實現了線程監控的線程有11個,能清晰地看到各個線程之間的父子關係(主線程創建了ConfigManager線程和vsys,這兩個線程又創建了其他子線程),並能清晰看到各個線程的實時cpu(用戶態,系統態)的佔有率;

               圖4--程序異常的記錄信息

                 從上圖可以看到程序支持在程序死機時自己自動記錄當前的線程創建順序及時間,各線程佔用的cpu,異常出現在某線程的某函數(屬於某源碼文件)內的某行,異常出現線程的函數調用堆棧等信息,保證程序的穩定性;

        4,流媒體主程序框架

                (1).主線程:負責開啓各個工作線程,回收並準備數據幀傳給採集線程;
                (2).採集線程:負責調用各個相機的相關函數,得到視頻數據初始化數據幀,把數據幀傳給解碼線程;

                (3).解碼線程:解碼數據幀,得到裸數據,把數據幀傳給編碼線程(因現有相機的輸入視頻幀已是h264,最後也只是需要h264幀,此設計預留);
                (4).編碼線程:把數據幀編碼爲h264數據,把數據幀傳給錄像線程(因現有相機的輸入視頻幀已是h264,故在第一階段時此線程爲空,此設計預留);

                (5).錄像線程:把視頻按要求保存到硬盤,把數據幀傳給rtsp服務線程,響應錄像合成命令;

                (6).rtsp服務線程:在有需求時把視頻幀進行rtp封包發送,並響應視頻點播請求,把視頻幀傳給主線程回收;

                (7).配置線程:管理系統的配置,響應客戶或第三方的除視頻流外的各種請求(如配置獲取,配置上傳,視頻合成請求);

四,系統具體實現

         1,採集線程:現只支持h264的rtsp數據,根據vlc,potplayer數據開發,已測試海康,大華部分相機;

         2,rtsp服務線程:現只支持h264流化,根據vlc和live555開發,已測試兼容vlc,potplayer;

         3,錄像線程:現支持把實時數據保存到mkv文件,能響應視頻合成請求合成mkv視頻,精度在一幀;

         4,配置線程:現支持遠程導入和導出配置,支持權限管理,數據自描述校驗;

五,集羣實現原理

        假設條件
               1,任何設備或資源(如相機,雷達,gps)都有唯一編號,即唯一的uuid;
               2,任何設備或資源(如相機,雷達,gps)處理可由單核完成;
               3,任何設備或資源(如相機,雷達,gps)的系統配置的數據傳輸佔用的帶寬遠遠小於設備傳遞的信息量;
        系統實現原理
               1,配置同步
                       1),把要接入的設備信息寫入一個文件,每條信息都有自己對應的組號(組號對應集羣節點的IP);
                       2),把配置文件發送給集羣的任何一個節點(假設爲節點A);
                       3),節點A檢查導入配置文件到內存,並計算新配置的校驗和,如果校驗和沒有改變,就不執行以後的動作;
                       4),節點A獲取配置文件內各組的配置校驗和,向與自己校驗和不相同的節點發送新的配置文件;
                       注:每個節點只處理屬於自己組的資源,如只對屬於自己組的相機設備進行錄像和轉發;
               2,請求處理
                       1),所有請求的發起者都必須包含欲請求資源的uuid,客戶端可向集羣內的任何一個節點發起請求,如請求節點A;
                       2),節點A查找請求資源,如果此資源是自己處理的,就直接處理並返回,如果是其它節點處理的返回目的重定向地址(如果有多個目的地址,
                       就輪詢選擇一個,以此實現負載均衡);
                       注:建議客戶端建立一個緩存,緩存各個資源所在主機的ip,可提高系統的響應速度;
                       建議客戶端保存多個集羣節點的IP,這樣可實現冗餘;
        此設計的優勢
               1,支持單機版,系統配置可做到向下兼容,降低老項目的維護成本;
               2,無須添加硬件,節約硬件成本;
               3,集羣內節點無從屬關係,部署簡單;
               4,集羣內任何節點都可以做中心服務器,增加節點數量不僅可增加集羣的負載能力,同時也可增加中心服務器冗餘度;
               5,集羣內節點無直接關係,一個節點能否正常工作完全由本機決定,獨立性好;
               6,此設計同時支持單機版和集羣,支持第三方用其它方案實現系統集羣;
        此設計的缺陷
               1,配置同步所需要的數據量是N*N,即節點數量的平方,在節點過多時會產生廣播風暴;

        限制條件(產生的原因:系統採用分佈式集羣設計,系統內部所有命令用"命令字+uuid+主機ip"進行唯一區分)
                1,因命令字由開發者決定,故同一主機內不得存在uuid相同的相機或資源(相同uuid的設備執行是隨機的,但不會死機,刪除重複的異常通道可自動恢復);
                2,不同主機之間如果有相同uuid的資源可實現負載均衡,但負載量由工程人員決定,系統不會自動調整;
                3,不同主機之間的不同uuid的資源組成集羣,但節點的負載量由工程人員決定,系統不會自動調整;   

六,功能預覽

        1,配置管理(用configcore程序)

         -bash-4.2# configcore -h
-h:for help.
-c:set input config data,remote host or local file,eg(default). -c 127.0.0.1:16863.
-i:import data,must after -c,could use multi times.
-o:set output config data,remote host or local file.
-t:set local output file type(0--config,1--ebml with comment,2--ebml,3--xml all,4--xml with comment,5--xml,6--json all,7-json),eg(default). -t 0.
-q:set quit after run program.

                 (1)xml完整方式導出配置(configcore -c 127.0.0.1 -o /fs/project/data/1.txt -t 3)

                 太多了,省略

                 (2)xml只代註釋方式導出配置(configcore -c 127.0.0.1 -o /fs/project/data/1.txt -t 4)

<?xml version="1.0" encoding="UTF-8"?>
<vsys comment="視頻系統,預留做定時器,最大實例數:100">
    <ntpfreq comment="ntp校時間隔(s),建議60S,有效長度:0-300字節">6</ntpfreq>
    <ntpserver comment="ntp服務器ip,有效長度:0-16字節">192.168.50.188</ntpserver>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">2</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">192.168.50.252</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/h264/ch2/main/av_stream</rtspURL>
            <rstpUsername comment="rtsp用戶名,可爲空,有效長度:0-128字節">admin</rstpUsername>
            <rstpPasswd comment="rtsp密碼,可爲空,有效長度:0-128字節">12345</rstpPasswd>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/ch1</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">57</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">192.168.50.251</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/defaultPrimary?streamType=u</rtspURL>
            <rstpUsername comment="rtsp用戶名,可爲空,有效長度:0-128字節">admin</rstpUsername>
            <rstpPasswd comment="rtsp密碼,可爲空,有效長度:0-128字節">12345</rstpPasswd>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/57</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">6</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">192.168.50.64</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/h264/ch2/main/av_stream</rtspURL>
            <rstpUsername comment="rtsp用戶名,可爲空,有效長度:0-128字節">admin</rstpUsername>
            <rstpPasswd comment="rtsp密碼,可爲空,有效長度:0-128字節">12345abc</rstpPasswd>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/6</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">4</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">192.168.50.65</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/h264/ch2/main/av_stream</rtspURL>
            <rstpUsername comment="rtsp用戶名,可爲空,有效長度:0-128字節">admin</rstpUsername>
            <rstpPasswd comment="rtsp密碼,可爲空,有效長度:0-128字節">12345abc</rstpPasswd>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/4</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">66</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">192.168.50.66</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/h264/ch2/main/av_stream</rtspURL>
            <rstpUsername comment="rtsp用戶名,可爲空,有效長度:0-128字節">admin</rstpUsername>
            <rstpPasswd comment="rtsp密碼,可爲空,有效長度:0-128字節">12345abc</rstpPasswd>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/66</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">67</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">192.168.50.67</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/h264/ch2/main/av_stream</rtspURL>
            <rstpUsername comment="rtsp用戶名,可爲空,有效長度:0-128字節">admin</rstpUsername>
            <rstpPasswd comment="rtsp密碼,可爲空,有效長度:0-128字節">12345abc</rstpPasswd>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/67</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt001</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt001</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt002</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt002</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt003</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt003</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt004</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt004</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt005</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt005</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt006</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt006</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt007</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt007</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt008</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt008</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt009</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt009</rtspServerURL>
        </recordConfig>
    </vsysChannel>
    <vsysChannel comment="通道,最大實例數:1000">
        <uuid comment="通道標識,每個通道應唯一,有效長度:1-64字節">tt010</uuid>
        <cameraConfig comment="相機配置">
            <cameraType comment="相機類型,有效長度:1-16字節">rtsp</cameraType>
            <ipv4 comment="相機IP,有效長度:1-16字節">127.0.0.1</ipv4>
            <rtspPort comment="rtsp端口,有效長度:1-5字節">554</rtspPort>
            <rtspURL comment="rtspURL,必須以/開頭,可爲空,有效長度:0-128字節">/ch1</rtspURL>
        </cameraConfig>
        <recordConfig comment="數據記錄配置">
            <rtspServerURL comment="rtsp轉發地址,爲空表示不轉發,有效長度:1-16字節">/tt010</rtspServerURL>
        </recordConfig>
    </vsysChannel>
</vsys>

                 (3)json不帶註釋方式導出配置(configcore -c 127.0.0.1 -o /fs/project/data/1.txt -t 7)

{
    "vsys":{
        "ntpfreq":"6",
        "ntpserver":"192.168.50.188",
        "vsysChannel":[{
            "uuid":"2",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"192.168.50.252",
                "rtspPort":"554",
                "rtspURL":"/h264/ch2/main/av_stream",
                "rstpUsername":"admin",
                "rstpPasswd":"12345"
            },
            "recordConfig":{
                "rtspServerURL":"/ch1"
            }
        },{
            "uuid":"57",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"192.168.50.251",
                "rtspPort":"554",
                "rtspURL":"/defaultPrimary?streamType=u",
                "rstpUsername":"admin",
                "rstpPasswd":"12345"
            },
            "recordConfig":{
                "rtspServerURL":"/57"
            }
        },{
            "uuid":"6",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"192.168.50.64",
                "rtspPort":"554",
                "rtspURL":"/h264/ch2/main/av_stream",
                "rstpUsername":"admin",
                "rstpPasswd":"12345abc"
            },
            "recordConfig":{
                "rtspServerURL":"/6"
            }
        },{
            "uuid":"4",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"192.168.50.65",
                "rtspPort":"554",
                "rtspURL":"/h264/ch2/main/av_stream",
                "rstpUsername":"admin",
                "rstpPasswd":"12345abc"
            },
            "recordConfig":{
                "rtspServerURL":"/4"
            }
        },{
            "uuid":"66",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"192.168.50.66",
                "rtspPort":"554",
                "rtspURL":"/h264/ch2/main/av_stream",
                "rstpUsername":"admin",
                "rstpPasswd":"12345abc"
            },
            "recordConfig":{
                "rtspServerURL":"/66"
            }
        },{
            "uuid":"67",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"192.168.50.67",
                "rtspPort":"554",
                "rtspURL":"/h264/ch2/main/av_stream",
                "rstpUsername":"admin",
                "rstpPasswd":"12345abc"
            },
            "recordConfig":{
                "rtspServerURL":"/67"
            }
        },{
            "uuid":"tt001",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt001"
            }
        },{
            "uuid":"tt002",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt002"
            }
        },{
            "uuid":"tt003",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt003"
            }
        },{
            "uuid":"tt004",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt004"
            }
        },{
            "uuid":"tt005",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt005"
            }
        },{
            "uuid":"tt006",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt006"
            }
        },{
            "uuid":"tt007",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt007"
            }
        },{
            "uuid":"tt008",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt008"
            }
        },{
            "uuid":"tt009",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt009"
            }
        },{
            "uuid":"tt010",
            "cameraConfig":{
                "cameraType":"rtsp",
                "ipv4":"127.0.0.1",
                "rtspPort":"554",
                "rtspURL":"/ch1"
            },
            "recordConfig":{
                "rtspServerURL":"/tt010"
            }
        }]
    }
}

         配置使用導入導出方式,支持標準的xml和json,方便第三方作二次開發

        2,實時錄像(ftp查看)

       3,實時視頻轉發

        4,按時間點播視頻

          5,文件點播

          

          6,變速播放

 

          7,倒退播放

         streamtype:

              0--正序正常播放,1-倒序正常播放,2-正序關鍵幀播放,3-倒序關鍵幀播放

七,評測

        1,120路(1080P視頻流) 輸入,23個客戶端點播   

                硬件環境: 內存 :2G   CPU:AMD X4 955  主頻:3.4GHz  4核4線程    流媒體接千兆口,其他接百兆口,320G硬盤一塊,1T硬盤兩塊

                IO峯值:60M/s
                句柄:799
                線程數:11

                CPU穩定在26%-45%
                內存峯值:550M
                硬盤IO均值:32.1M/s

                網絡下行:289m/s
                網絡上行:69m/s

      2,400路(1080P視頻流,4M) 輸入,110個客戶端直播   

 

                硬件環境: 內存 :4G   CPU:AMD X4 955  主頻:3.4GHz  4核4線程   雙千intel千兆口輸入, 一rtl8169輸出,6塊7200rpm高性能監控硬盤(每個1T)組rad0軟陣列;

                測試條件:400路1080P視頻(4M碼流)同時採集並錄像,23臺pc同時直播流媒體轉發視頻(共110路)

                硬盤IO峯值:250M/s
                句柄:2673
                線程數:25

                CPU穩定在65%-87%
                內存峯值:1.2G
                硬盤IO均值:198M/s

                網卡1(intel)下行(採集):768m/s

                網卡2(intel)下行(採集):789m/s

                網卡3(rtl8169)上行(轉發):431m/s

八,開發文檔

九,使用文檔

        1,系統安裝

        2,網絡設置

        3,硬盤設置

        4,系統更新

        5,配置工具

 

 

      

 

 























































































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章