前端 | H5播放rtsp方案

由于攝像頭是rtsp格式的冠跷,h5原生不支持這種格式合是,網(wǎng)上查了很多教程大多是使用rtsp轉(zhuǎn)rtmp衫樊,不過(guò)rtmp需要falsh的支持飒赃,但是在chrome已經(jīng)默認(rèn)禁用、包括未來(lái)也會(huì)逐漸淘汰橡伞,所有最終這種方案被淘汰盒揉。

于是我想應(yīng)該把rtsp轉(zhuǎn)化成一種類(lèi)似http協(xié)議的方式,能夠直接被h5識(shí)別兑徘,于是我google刚盈,百度就不用說(shuō)了,查了半天全是沒(méi)用的東西挂脑。終于我找到了一種叫jsmpeg的插件藕漱,它主要是通過(guò)webSocket發(fā)送MPEG,前端通過(guò)js解析MPEG不斷繪制canvas崭闲,包括音頻肋联。最終測(cè)試的結(jié)果就是一個(gè)1920*1080分辨率的畫(huà)面延時(shí)大概的0.5s左右,超出我的預(yù)料刁俭,性能居然這么高橄仍。后臺(tái)觀察發(fā)現(xiàn)瀏覽器使用了GPU加速。

準(zhǔn)備工具:

  • 1、Ffmpeg:用來(lái)解碼的侮繁,做視頻逃不掉這個(gè)
  • 2虑粥、Node.js:搭建webSocket服務(wù)器,以及運(yùn)行一個(gè)jsmpeg的js文件
  • 3宪哩、jsmpeg:運(yùn)行主程序

可以到我的github去下載

其實(shí)整個(gè)步驟就以下幾步:

  1. 解壓ffmpeg,然后配置一下環(huán)境變量
  2. 安裝node,如電腦已安裝node,這一步忽略
  3. 安裝webSocket模塊[具體操作:cd到j(luò)smpeg所在路徑,執(zhí)行npm install ws即可]
  4. 在jsmpeg所在路徑下娩贷,執(zhí)行 node websocket-relay.js supersecret 8081 8082
  5. 打開(kāi)另一個(gè)cmd:ffmpeg -i "你的rtspurl" -q 0 -f mpegts -codec:v mpeg1video -s 1366x768 http://127.0.0.1:8081/supersecret
  6. 打開(kāi)jsmpeg文件夾里面的view-stream.html頁(yè)面就可以看到你的監(jiān)控視頻了

如果在view-stream.html中能看到攝像頭視頻的話,那也就可以在自己的html中這樣去實(shí)現(xiàn):

<!-- html -->
<canvas id="video-canvas"></canvas>
// js
var canvas = document.getElementById('video-canvas');
var url = 'ws://127.0.0.1:8082/';
var player = new JSMpeg.Player(url, {canvas: canvas});

效果如下:

下面是比較詳細(xì)的操作過(guò)程:

解壓之后的ffmpeg是這樣

接下來(lái)需要配置一下環(huán)境變量锁孟,把ffmpeg下的bin配置到系統(tǒng)path變量里面彬祖,根據(jù)自己不同的路徑配置

在cmd里輸入ffmpeg回車(chē) 輸出以下代表配置正確

此時(shí)如果電腦上已經(jīng)安裝了node,那就直接可運(yùn)行jsmpeg品抽,如果沒(méi)有安裝node,請(qǐng)先百度安裝储笑。由于我的電腦已安裝node,在這里就直接跳過(guò)安裝node這一步。

解壓jsmpeg壓縮文件到某個(gè)盤(pán)符桑包,里面出現(xiàn)有一個(gè)websocket-relay.js南蓬,我們主要運(yùn)行這個(gè)js文件

運(yùn)行websocket-relay.js之前node需要安裝webSocket模塊

  • 打開(kāi)cmd控制臺(tái),cd到j(luò)smpeg所在路徑
  • npm install ws
  • node websocket-relay.js supersecret 8081 8082

說(shuō)明:

  • Supersecret是密碼
  • 8081是ffmpeg推送端口
  • 8082是前端webSocket端口
    然后在cmd中執(zhí)行:ffmpeg -i "你的rtspurl" -q 0 -f mpegts -codec:v mpeg1video -s 1366x768 http://127.0.0.1:8081/supersecret

出現(xiàn)下面這樣說(shuō)明正確


打開(kāi)jsmpeg文件夾里面的view-stream.html頁(yè)面如果沒(méi)有問(wèn)題應(yīng)該出現(xiàn)下面的畫(huà)面哑了,到此為止在h5播放rtsp方案算基本完成

我這邊的node版本是v10.15.3

安裝過(guò)程中遇到的小問(wèn)題

我的是window10操作系統(tǒng)8G 64位
在全局安裝ws后赘方,執(zhí)行node websocket-relay.js supersecret 8081 8082會(huì)報(bào)cannot find module 'ws',不知道是不是node版本太高的原因

所以在安裝的時(shí)候不要加-g,按照下面的步驟來(lái)弱左。

如果電腦設(shè)置了睡眠之后再打開(kāi)窄陡,會(huì)發(fā)現(xiàn)視頻監(jiān)控停止了,此時(shí)不要緊張拆火,在cmd里重新執(zhí)行一下

  1. 在D:\videoStream\jsmpeg-master路徑下執(zhí)行node websocket-relay.js supersecret 8081 8082
  2. 打開(kāi)另一個(gè)cmd執(zhí)行:ffmpeg -i "你的rtspurl" -q 0 -f mpegts -codec:v mpeg1video -s 1366x768 http://127.0.0.1:8081/supersecret
參考資料

html5播放rtsp方案

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末跳夭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子们镜,更是在濱河造成了極大的恐慌币叹,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件模狭,死亡現(xiàn)場(chǎng)離奇詭異颈抚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)嚼鹉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)贩汉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人锚赤,你說(shuō)我怎么就攤上這事匹舞。” “怎么了线脚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵赐稽,是天一觀的道長(zhǎng)叫榕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)又憨,這世上最難降的妖魔是什么翠霍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蠢莺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘零如。我一直安慰自己躏将,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布考蕾。 她就那樣靜靜地躺著祸憋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肖卧。 梳的紋絲不亂的頭發(fā)上蚯窥,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音塞帐,去河邊找鬼拦赠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛葵姥,可吹牛的內(nèi)容都是我干的荷鼠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼榔幸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼允乐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起削咆,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤牍疏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拨齐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鳞陨,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年奏黑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炊邦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熟史,死狀恐怖馁害,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蹂匹,我是刑警寧澤碘菜,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響忍啸,放射性物質(zhì)發(fā)生泄漏仰坦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一计雌、第九天 我趴在偏房一處隱蔽的房頂上張望悄晃。 院中可真熱鬧,春花似錦凿滤、人聲如沸妈橄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)眷蚓。三九已至,卻和暖如春反番,著一層夾襖步出監(jiān)牢的瞬間沙热,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工罢缸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留篙贸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓祖能,卻偏偏與公主長(zhǎng)得像歉秫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子养铸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容