亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種瀏覽器無插件視頻直播方法與流程

文檔序號:11778410閱讀:2566來源:國知局
一種瀏覽器無插件視頻直播方法與流程

本發(fā)明涉及瀏覽器中視頻播放方法,具體涉及一種瀏覽器無插件視頻直播方法。



背景技術(shù):

在web頁面中進(jìn)行視頻直播,目前主要的解決方案主要有:

在瀏覽器中安裝自定義開發(fā)的activex和npapi插件的方式,通過插件進(jìn)行視頻直播,但該方案存在不同的瀏覽器需要安裝不同的插件,不同操作系統(tǒng)需要不同的插件,32位與64位瀏覽器也存在不同版本的插件,版本多,各個版本不能很好的兼容,需要每個客戶端都設(shè)置瀏覽器安全性,而且在新版本的瀏覽器中逐漸淘汰activex和npapi插件的支持,在移動端中也不支持該插件技術(shù),無法再移動端瀏覽器中使用該技術(shù)進(jìn)行視頻直播。

使用rtmp協(xié)議+pc客戶端瀏覽器中普遍預(yù)裝的flash插件的方式,但該方案因為使用的是rtmp協(xié)議和第三方的flash控件因此需要做自定義擴(kuò)展時相當(dāng)復(fù)雜與困難,同時不支持移動端web瀏覽器進(jìn)行直播。

使用hls協(xié)議的方式,無需安裝第三方插件,通過html5的video標(biāo)簽進(jìn)行播放,但該方案播放延遲通常大于10秒,不能有效降低直播時的延遲。

以上方案都無法做到在web瀏覽器中統(tǒng)一進(jìn)行低延遲的視頻直播,特別是在移動端的web瀏覽器中。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種瀏覽器無插件視頻直播方法,用于在跨平臺的多種web瀏覽器中統(tǒng)一、便捷、低延遲的進(jìn)行視頻直播。

本發(fā)明的目的是通過以下技術(shù)方案來實現(xiàn)的:

一種瀏覽器無插件視頻直播方法,其特征在于包括以下步驟:

s01:服務(wù)端獲取視頻編碼流;

s02:服務(wù)端使用websocket傳輸視頻編碼流給web瀏覽器端,web瀏覽器端使用websocket接收視頻編碼流;

s03:web瀏覽器端使用javascript對視頻編碼流進(jìn)行解碼;

s04:瀏覽器運(yùn)用canvas+webgl進(jìn)行實時視頻圖像展示,即視頻播放。

進(jìn)一步的,所述的步驟s01服務(wù)端獲取視頻編碼流包括使用中間件技術(shù)獲取視頻編碼流或從網(wǎng)絡(luò)直接獲取視頻編碼流或通過本地攝像機(jī)直接獲取視頻原始數(shù)據(jù)。

進(jìn)一步的,所述的步驟s01中還包括將獲取的視頻編碼流進(jìn)行解包為標(biāo)準(zhǔn)裸碼流,將標(biāo)準(zhǔn)裸碼流重新打包成視頻編碼流并進(jìn)入步驟s02;

若視頻編碼流是不可解包為標(biāo)準(zhǔn)裸碼流,調(diào)用相應(yīng)碼流解碼器解碼,再編碼為標(biāo)準(zhǔn)裸碼流,將標(biāo)準(zhǔn)裸碼流重新打包成視頻編碼流并進(jìn)入步驟s02。

進(jìn)一步的,所述的將標(biāo)準(zhǔn)裸碼流打包具體操作如下:

使用視頻封裝格式將每一幀的視頻流數(shù)據(jù)和對應(yīng)該幀視頻流數(shù)據(jù)需要攜帶的信息封裝序列化為一個個消息,供后續(xù)進(jìn)行傳輸。

進(jìn)一步的,所述的步驟s02的具體操作如下:

服務(wù)端實現(xiàn)websocket協(xié)議,將視頻編碼流通過websocket協(xié)議傳輸?shù)絯eb瀏覽器端,web瀏覽器端通過javascript支持的websocket對象主動連接服務(wù)端,并實時的接收服務(wù)端傳輸過來的視頻編碼流。

進(jìn)一步的,所述的步驟s03具體操作如下:

在web瀏覽器中通過javascript庫,將視頻編碼流解封裝,獲取到完整的每一幀標(biāo)準(zhǔn)裸碼流;使用emscripten將c語言編寫的標(biāo)準(zhǔn)解碼庫進(jìn)行轉(zhuǎn)換為javascript語言的解碼庫,使得在web瀏覽器中可以使用javascript對標(biāo)準(zhǔn)裸碼流進(jìn)行解碼,使用javascript將解封裝后的標(biāo)準(zhǔn)裸碼流進(jìn)行解碼,獲取到圖像原始數(shù)據(jù)。

進(jìn)一步的,所述的步驟s04具體操作是:web瀏覽器中使用webgl將解碼后的圖像原始數(shù)據(jù)繪制到canvas上,完成實時視頻圖像展示。

進(jìn)一步的,本方法中使用的標(biāo)準(zhǔn)通用標(biāo)記語言是超文本標(biāo)記語言html5標(biāo)準(zhǔn)。。

本發(fā)明的有益效果是:本發(fā)明主要用于解決在瀏覽器中進(jìn)行視頻直播需要安裝瀏覽器插件的問題;本發(fā)明使用標(biāo)準(zhǔn)websocket進(jìn)行視頻數(shù)據(jù)流傳輸,使用javascript進(jìn)行視頻解碼,使用webgl在canvas中進(jìn)行視頻顯示。使用本發(fā)明的技術(shù)方案,在支持websocket、webgl和canvans的web瀏覽器中,無需安裝第三方瀏覽器插件,進(jìn)行視頻直播,無論瀏覽器是32位還是64位,無論操作系統(tǒng)是windows、linux、ios、andriod。

附圖說明

圖1是本發(fā)明的流程圖;

圖2是實施例1的流程圖。

具體實施方式

下面結(jié)合附圖進(jìn)一步詳細(xì)描述本發(fā)明的技術(shù)方案,但本發(fā)明的保護(hù)范圍不局限于以下所述。

如圖1所示,

一種瀏覽器無插件視頻直播方法,包括以下步驟:

s01:服務(wù)端獲取視頻編碼流;

s02:服務(wù)端使用websocket傳輸視頻編碼流給web瀏覽器端,web瀏覽器端使用websocket接收視頻編碼流;

s03:web瀏覽器端使用javascript對視頻編碼流進(jìn)行解碼;

s04:瀏覽器運(yùn)用canvas+webgl進(jìn)行實時視頻圖像展示,即視頻播放。

【實施例1】

如圖2所示:一種瀏覽器無插件視頻直播方法,具體包括以下步驟;

使用中間件技術(shù),將各類視頻源設(shè)備,抽象為統(tǒng)一接口視頻設(shè)備,通過操作統(tǒng)一接口的視頻設(shè)備對象獲取視頻流。對于不同設(shè)備視頻的視頻流,中間件內(nèi)部對其進(jìn)行標(biāo)識。

檢查視頻流標(biāo)識,如果支持直接解復(fù)用,得到標(biāo)準(zhǔn)h264裸碼流,直接進(jìn)行解復(fù)用,如果不支持直接解復(fù)用得到h264裸碼流,則先通過視頻流標(biāo)識使用對應(yīng)解碼器對視頻流進(jìn)行實時解碼,然后再使用標(biāo)準(zhǔn)h264編碼器編碼,得到標(biāo)準(zhǔn)h264裸碼流。

使用bson格式的封裝將每一幀的視頻流數(shù)據(jù)和對應(yīng)該幀視頻流數(shù)據(jù)需要攜帶的信息封裝序列化為一個個消息,供后續(xù)進(jìn)行傳輸。

服務(wù)端實現(xiàn)websocket協(xié)議,將經(jīng)過bson格式序列化的視頻流消息,通過websocket協(xié)議傳輸?shù)絯eb瀏覽器。

web瀏覽器中通過javascript支持的websocket對象主動連接服務(wù)端,并實時的接收服務(wù)端傳輸過來的視頻流消息。

在web瀏覽器中通過javascript的bson庫,將視頻流消息解封裝,獲取到完整的每一幀標(biāo)準(zhǔn)h264裸碼流。

使用emscripten將c語言編寫的h264標(biāo)準(zhǔn)解碼庫進(jìn)行轉(zhuǎn)換為javascript語言的h264解碼庫,使得在web瀏覽器中可以使用javascript對標(biāo)準(zhǔn)h264裸碼流進(jìn)行解碼。使用javascript將解封裝后的標(biāo)準(zhǔn)h264裸視頻數(shù)據(jù)進(jìn)行解碼,獲取到圖像原始數(shù)據(jù)。

web瀏覽器中使用webgl將解碼后的圖像原始數(shù)據(jù)繪制到canvas上,完成實時視頻圖像展示。

服務(wù)端:流媒體服務(wù)器支持websocket協(xié)議,通過websocket協(xié)議接收來自客戶端的視頻流請求,根據(jù)請求查詢對應(yīng)視頻設(shè)備信息,主動獲取視頻設(shè)備視頻流,將設(shè)備視頻流提供流媒體協(xié)議統(tǒng)一轉(zhuǎn)換,將轉(zhuǎn)換后的視頻流通過websocket發(fā)送到web瀏覽器端。

web瀏覽器端:使用websocket向服務(wù)端發(fā)起鏈接,通過websocket接收視頻流,將接收到的視頻流使用javascript的h264解碼器進(jìn)行解碼,解碼后的圖像數(shù)據(jù)使用webgl繪制到canvas上進(jìn)行顯示。

【實施例2】

一種瀏覽器無插件視頻直播方法,具體包括以下步驟;

使用本地攝像機(jī)直接獲取視頻原始數(shù)據(jù)。

使用標(biāo)準(zhǔn)h265編碼器編碼,得到標(biāo)準(zhǔn)h265裸碼流。

使用probuf格式的封裝將每一幀的視頻流數(shù)據(jù)和對應(yīng)該幀視頻流數(shù)據(jù)需要攜帶的信息封裝序列化為一個個消息,供后續(xù)進(jìn)行傳輸。

服務(wù)端實現(xiàn)websocket協(xié)議,將經(jīng)過probuf格式序列化的視頻流消息,通過websocket協(xié)議傳輸?shù)絯eb瀏覽器。

web瀏覽器中通過javascript支持的websocket對象主動連接服務(wù)端,并實時的接收服務(wù)端傳輸過來的視頻流消息。

在web瀏覽器中通過javascript的probuf庫,將視頻流消息解封裝,獲取到完整的每一幀標(biāo)準(zhǔn)h265裸碼流。

使用emscripten將c語言編寫的h265標(biāo)準(zhǔn)解碼庫進(jìn)行轉(zhuǎn)換為javascript語言的h265解碼庫,使得在web瀏覽器中可以使用javascript對標(biāo)準(zhǔn)h265裸碼流進(jìn)行解碼。使用javascript將解封裝后的標(biāo)準(zhǔn)h265裸視頻數(shù)據(jù)進(jìn)行解碼,獲取到圖像原始數(shù)據(jù)。

web瀏覽器中使用webgl將解碼后的圖像原始數(shù)據(jù)繪制到canvas上,完成實時視頻圖像展示。

服務(wù)端:流媒體服務(wù)器支持websocket協(xié)議,通過websocket協(xié)議接收來自客戶端的視頻流請求,根據(jù)請求查詢對應(yīng)視頻設(shè)備信息,主動獲取視頻設(shè)備視頻流,將設(shè)備視頻流提供流媒體協(xié)議統(tǒng)一轉(zhuǎn)換,將轉(zhuǎn)換后的視頻流通過websocket發(fā)送到web瀏覽器端。

web瀏覽器端:使用websocket向服務(wù)端發(fā)起鏈接,通過websocket接收視頻流,將接收到的視頻流使用javascript的h265解碼器進(jìn)行解碼,解碼后的圖像數(shù)據(jù)使用webgl繪制到canvas上進(jìn)行顯示。

值得說明的是,在本發(fā)明中獲取視頻編碼流的技術(shù)手段不局限于中間件技術(shù)和攝像機(jī)直接獲取,亦可通過其他本領(lǐng)域的常規(guī)技術(shù)手段獲取視頻編碼流,其次關(guān)于視頻流的標(biāo)準(zhǔn)編碼格式亦不局限,只要是本行業(yè)內(nèi)通用的視頻編碼格式均可應(yīng)用到本發(fā)明中。

以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進(jìn)行改動。而本領(lǐng)域人員所進(jìn)行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1