測(cè)試發(fā)現(xiàn)拷淘,利用html5調(diào)用攝像頭可以實(shí)現(xiàn)撇他,但是再進(jìn)行rtmp推流就沒(méi)有找到合適的方法了竹习,然后參考網(wǎng)上一些直播云臺(tái)誊抛,發(fā)現(xiàn)它們都有自己的推流拉流播放器,以網(wǎng)易云直播和騰訊云直播為例整陌,它們有自己的開(kāi)發(fā)包拗窃,然后用戶接入它們的平臺(tái)就可以二次開(kāi)發(fā)了∶诒瑁可是我們要的是自己開(kāi)發(fā)随夸,用它們的有些還需要收費(fèi)和授權(quán)碼,綜合考慮后震放,決定利用rtmp-streamer推流宾毒,用時(shí)采用騰訊云的拉流播放器(當(dāng)然可以利用其它sdk,只要符合要求都行)殿遂。
先介紹rtmp-streamer诈铛,它是利用flash調(diào)用攝像頭和麥克風(fēng),然后內(nèi)部進(jìn)行rtmp推流墨礁,對(duì)flash了解者更可以根據(jù)api自己去開(kāi)發(fā)自己的sdk(當(dāng)然我還不會(huì)開(kāi)發(fā))幢竹。我們可以去github上下載完成的開(kāi)發(fā)包,也可以用npm去下載安裝恩静,安裝語(yǔ)句如下:
npm install rtmp-streamer --save-dev
其實(shí)rtmp-streamer可以實(shí)現(xiàn)推流和拉流焕毫,但是拉流效果不好蹲坷,所以只用里面的推流,這樣一來(lái)邑飒,用到的資源就更少了循签,我們只需要用到rtmp-streamer里面的RtmpStreamer.swf(可以華麗麗的把它復(fù)制到一個(gè)合適的路徑下)。
先來(lái)準(zhǔn)備html疙咸,我們需要一個(gè)object來(lái)裝載推流播放器
注意里面的id懦底、src,其中id最好動(dòng)態(tài)生成罕扎,而src是上面swf的路徑,然后在簡(jiǎn)單配置一下樣式即可
接下來(lái)開(kāi)發(fā)js代碼丐重,我們需要先根據(jù)id獲取到embed元素腔召,然后配置相關(guān)屬性,如分辨率等扮惦,最后再填寫(xiě)推流地址就可以了
屆時(shí)頁(yè)面如下(推流前必須確保nginx服務(wù)器開(kāi)啟成功)
相關(guān)配置
允許調(diào)用攝像頭
監(jiān)控畫(huà)面
是不是很簡(jiǎn)單臀蛛,到這里已經(jīng)實(shí)現(xiàn)了web推流,接下來(lái)繼續(xù)去開(kāi)發(fā)拉流
拉流就更簡(jiǎn)單了崖蜜,我們直接用騰訊云的拉流sdk(其他sdk也可以)浊仆,相關(guān)配置可以去官網(wǎng)查看,基本都是導(dǎo)入js豫领,然后進(jìn)行相關(guān)配置抡柿,最后填上拉流地址即可
html部分
先在首頁(yè)引入js
然后在文檔中添加視頻加載器
js部分
簡(jiǎn)簡(jiǎn)單單就可以實(shí)現(xiàn)了
頁(yè)面效果如下
填寫(xiě)配置
進(jìn)行觀看
這時(shí)候利用web實(shí)現(xiàn)rtmp推流拉流基本實(shí)現(xiàn),可以繼續(xù)完善系統(tǒng)等恐,如添加主播權(quán)限和主播互動(dòng)洲劣。
開(kāi)發(fā)的路還遠(yuǎn)沒(méi)有結(jié)束呢,我們的目標(biāo)是利用rtmp攝像頭推流到服務(wù)器课蔬,然后服務(wù)器對(duì)直播流進(jìn)行偵測(cè)囱稽,如人臉檢測(cè)、人臉識(shí)別和車牌識(shí)別二跋,當(dāng)然這一切都是在web基礎(chǔ)上實(shí)現(xiàn)的战惊,不依賴于桌面應(yīng)用(目前我只實(shí)現(xiàn)了利用web調(diào)用攝像頭進(jìn)行人臉識(shí)別,后續(xù)再開(kāi)發(fā)其他的)