目 錄 1. 概述... 2 2. 將來集成到iNeuOS平臺演示... 3 3. iNeuVideo結(jié)構(gòu)... 3 4. iNeuVideo部署及應(yīng)用... 3 5. HTML5終端視頻監(jiān)測代碼... 5 6. 基于數(shù)據(jù)庫應(yīng)用使用效果... 6 1. 概述 iNeuVideo是視頻服務(wù)組件,,主要負(fù)責(zé)把RTSP的視頻流數(shù)據(jù)轉(zhuǎn)碼成WebSocket協(xié)議的視頻流數(shù)據(jù),為終端提供視頻監(jiān)測服務(wù),。iNeuVideo后期會集成到iNeuOS工業(yè)互聯(lián)網(wǎng)平臺的Web組態(tài)(iNeuView)上,,拖動組件快速構(gòu)建視頻監(jiān)測,。結(jié)合物聯(lián)網(wǎng)服務(wù)(iNeuKernel)采集設(shè)備或傳感器的數(shù)據(jù),形成視頻數(shù)據(jù)+設(shè)備數(shù)據(jù)的整體監(jiān)測服務(wù),。參見《iNeuKernel(物聯(lián)網(wǎng)核心組件)遠(yuǎn)程控制標(biāo)準(zhǔn)化設(shè)計與實現(xiàn)》,,可以實現(xiàn)遠(yuǎn)程控制。 iNeuVideo現(xiàn)在僅支持RTSP->WebSocket,,現(xiàn)在主流攝像頭廠家(??低暤龋┗局С諶TSP協(xié)議,可以很方便的接入視頻數(shù)據(jù)流,。后期集成RTSP->RTMP和RTSP->HTTP的協(xié)議,。基于iNeuVideo服務(wù),,其他公司也可以形成自己的產(chǎn)品,,后面應(yīng)用會具體介紹。 應(yīng)用效果,,如下圖: 針對視頻監(jiān)測幾個協(xié)議概念:RTSP,、RTMP、HTTP和WebSocket等進(jìn)行簡單介紹: (1)RSTP,、RTMP,、HTTP協(xié)議共同點,他們都是應(yīng)用層協(xié)議,。理論上這三種協(xié)議都可以做直播和點播,,但直播一般用RTSP和RTMP點播用HTTP。 HTTP將數(shù)據(jù)作為文件處理,所以HTTP不是流媒體協(xié)議,,RTMP和RTSP是流媒體協(xié)議,。 RTMP是Adobe的私有協(xié)議,,未完全公開,,RTSP和HTTP是共有協(xié)議。 RTSP一般需要2-3個通道,,數(shù)據(jù)和命令通道分開,RTMP和HTTP在一個通道上傳輸命令和數(shù)據(jù),。 WebSocket協(xié)議,,基于HTML5提供的一種在單個 TCP 連接上進(jìn)行全雙工通訊的協(xié)議。針對終端與服務(wù)端交互應(yīng)用較廣泛。 2. 將來集成到iNeuOS平臺演示在線演示:http://demo. (注:服務(wù)器比較慢,,請耐心等待,。自已注冊用戶,體驗系統(tǒng)功能) 視頻演示:http://www./video/iNeuOS%20and%20app.mp4 驅(qū)動開發(fā):http://www./index.php/products/ineukernel-15.html (v2.1版本) 手機(jī)APP:http://demo./app/ineuos_app.apk 3. iNeuVideo結(jié)構(gòu)視頻源一般為RTSP協(xié)議,,由iNeuVideo轉(zhuǎn)碼服務(wù)拉取視頻流數(shù)據(jù),,經(jīng)過代碼轉(zhuǎn)發(fā)服務(wù)向WebSocket連接的終端廣播數(shù)據(jù),HTML5終端進(jìn)行數(shù)據(jù)展示,。結(jié)構(gòu)示意,,如下圖: 4. iNeuVideo部署及應(yīng)用iNeuVideo基于.NETCore 3.1版本開發(fā),.NETCore 3.1的安裝部署參見:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install,。 iNeuVideo下載:百度網(wǎng)盤下載,,包括服務(wù)、數(shù)據(jù)庫腳本和HTML5腳本,。這是綠化版本的軟件,,直接下載就可以應(yīng)用,應(yīng)用有兩種模式:基于命令行和基于數(shù)據(jù)庫,。 (1)基于命令行的應(yīng)用 首先使用管理員模式打開命令行,,進(jìn)入iNeuVideo目錄,第一次運(yùn)行的時候需要執(zhí)行:dotnet iNeuVideoTool.dll,,檢測和配置當(dāng)前系統(tǒng),。 其次輸入?yún)?shù)執(zhí)行:dotnet iNeuVideo.dll rtsp://192.168.101.1:18554/stream1,進(jìn)行視頻轉(zhuǎn)換,,視頻轉(zhuǎn)換后的WebSocket地址對應(yīng):ws:// 192.168.101.1:9091/ineuos/live1,,live后邊的編號自動增加。如下圖: (2)基于數(shù)據(jù)庫的應(yīng)用 其他公司可以使用iNeuVideo服務(wù)組件,,基于數(shù)據(jù)庫的應(yīng)用形成自己的產(chǎn)品,,前臺業(yè)務(wù)系統(tǒng)操作數(shù)據(jù)庫可以完成對視頻流拉取、轉(zhuǎn)碼,、推送等全流程操作,。 mysql數(shù)據(jù)庫只有一個表:Video,只需要對這個表進(jìn)行操作,,表結(jié)構(gòu)如下: DROP TABLE IF EXISTS `video`;CREATE TABLE `video` ( `Id` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主鍵', `Key` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'http://*.*/ineuos/live1,live1就是key.', `VideoSource` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '視頻流源地址,,一般為rtsp協(xié)議。', `VideoSourceProtocol` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '現(xiàn)在支持,,包括:rtsp,。', `VideoDest` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '視頻流目標(biāo)地址,從VideoSource轉(zhuǎn)碼到VideoDest,,不需要設(shè)置,,系統(tǒng)自動生成,。', `VideoDestProtocol` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '現(xiàn)在支持,包括:websocket,。', PRIMARY KEY (`Id`) USING BTREE, UNIQUE INDEX `Key`(`Key`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; 在iNeuVideo\iNeuKernel\ SourceConfig.cfg文件下配置數(shù)據(jù)庫連接信息 以管理員的模式運(yùn)行【start-win.bat】批處理文件,,直接讀取數(shù)據(jù)庫的信息進(jìn)行視頻流的操作,不需要其他的操作,。 5. HTML5終端視頻監(jiān)測代碼基于MPEG標(biāo)準(zhǔn)的視頻編碼進(jìn)行解碼,,底層使用canvas進(jìn)行顯示,也有其他的JS組件可以使用,。代碼如下: <!DOCTYPE html><html><head> <title>JSMpeg Stream Client</title> <style type="text/css"> html, body {text-align: center;} </style></head><body> <canvas id="video-canvas"></canvas> <canvas id="video-canvas1"></canvas> <script type="text/javascript" src="jsmpeg.min.js"></script> <script type="text/javascript"> var canvas = document.getElementById('video-canvas'); var url = 'ws://127.0.0.1:9091/ineuos/live1'; var player = new JSMpeg.Player(url, {canvas: canvas}); var canvas1 = document.getElementById('video-canvas1'); var url1 = 'ws://127.0.0.1:9091/ineuos/live2'; var player1 = new JSMpeg.Player(url1, {canvas: canvas1}); </script></body></html> 6. 基于數(shù)據(jù)庫應(yīng)用使用效果
|
|