最近幫著老師做項(xiàng)目的時(shí)候碰到一個(gè)難題,,將??禂z像頭的影像實(shí)時(shí)傳輸?shù)角岸隧?yè)面進(jìn)行展示。Google查了兩天,,終于有些眉目,,記錄一下經(jīng)驗(yàn)。 大致需要經(jīng)過(guò)以下幾個(gè)步驟:
下面詳細(xì)說(shuō)明一下每個(gè)步驟 1. 獲取??禂z像頭的視頻流(基于RTSP協(xié)議的視頻流)不僅僅是海康攝像頭,,市面上大多數(shù)攝像頭的視頻流都是基于RTSP協(xié)議的,,查閱了一下資料了解到??档腞TSP流格式:
說(shuō)一下 '/h264/ch1/main/av_stream’ 這部分,, 其中“h264”代表獲取h264格式編碼的流,我們實(shí)驗(yàn)室用的攝像頭支持兩種格式的編碼,,h264和h265,,可以在終端進(jìn)行設(shè)置,,雖然h265編碼比較好,,但是后邊幾個(gè)步驟用到的技術(shù)對(duì)這個(gè)格式的支持很不友好,,因此在這里建議使用h264的編碼,。后邊的“ch1/main/av_stream”表示一些主碼流、子碼流,、通道一類(lèi)的信息,一般情況下按照這個(gè)格式填寫(xiě)就行,。 拿到最終的URL后,最好測(cè)試一下是否是正確的,,這里推薦用最新版的VLC做測(cè)試,,VLC是一個(gè)非常強(qiáng)大的播放器,幾乎支持所有格式的視頻播放,。 2.流媒體服務(wù)器搭建首先是rtsp轉(zhuǎn)碼
RTMP默認(rèn)端口號(hào)1935,開(kāi)啟Nginx后可以直接用ffmpeg直接推過(guò)去,,rtmp://localhost:1935/live/room的路徑部分是可以隨意更換的,。注意要先開(kāi)Nginx然后再推流,,下邊是在windows下的效果圖 前端播放支持RTMP播放的播放器找了好久,,最后選擇了videojs。 這里還有一些坑,。首先是播放器頁(yè)面如果不丟到服務(wù)器環(huán)境下可能出現(xiàn)無(wú)法播放的情況,。還有就是,因?yàn)椴シ牌魇腔趂lash的,,需要瀏覽器開(kāi)啟flash支持,,但是一般情況下如果需要flash,瀏覽器都會(huì)彈窗詢問(wèn),,但是不曉得為啥這個(gè)播放器不會(huì)彈窗,,所以需要手動(dòng)啟動(dòng)瀏覽器的flash支持。chrome的話是點(diǎn)擊url欄左邊的感嘆號(hào)進(jìn)行設(shè)置,,其他瀏覽器不太清楚,。 另外,這個(gè)設(shè)置不是全局設(shè)置,,也就是說(shuō)如果項(xiàng)目站點(diǎn)移植之后,,需要重新設(shè)置一下。
2019-01-10補(bǔ)充說(shuō)明前端播放部分,,除了使用videoJS,, 還可以使用百度的 cyberplayer,是在videoJS的基礎(chǔ)上開(kāi)發(fā)的,針對(duì)直播做了很多優(yōu)化,,使用方便而且文檔也比較全,, 強(qiáng)烈安利! 2019-01-21補(bǔ)充說(shuō)明注意:本教程僅適用h264編碼的流,,有些受硬盤(pán)錄像機(jī)管理的攝像頭,,即便是填寫(xiě)了/h264這個(gè)參數(shù)(rtsp://admin:[email protected]:554/h264/ch1/main/av_stream ),但是返回的仍然是h265格式的流,,這個(gè)需要在硬盤(pán)錄像機(jī)里修改,。直接訪問(wèn)攝像頭后臺(tái)修改的話,,過(guò)幾分鐘會(huì)被重置。如果按照教程配置到最后出現(xiàn)VLC可以播放但是web無(wú)法播放的情況,,很有可能就是這個(gè)問(wèn)題,。 查看攝像頭編碼的方法:
|
|
來(lái)自: jackeyqing > 《視頻直播點(diǎn)播》