本發(fā)明屬于互聯(lián)網(wǎng)流媒體技術(shù)領(lǐng)域,涉及一種無(wú)客戶(hù)端的跨平臺(tái)視頻播放實(shí)現(xiàn)方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)的高速發(fā)展,視頻監(jiān)控類(lèi)應(yīng)用的物聯(lián)網(wǎng)設(shè)備的增多,人們通過(guò)pc端web瀏覽器或手機(jī)客戶(hù)端觀(guān)看視頻的需求逐步增多,傳統(tǒng)的實(shí)時(shí)傳輸協(xié)議(rtp)、實(shí)時(shí)流傳輸協(xié)議(rtsp)等流媒體協(xié)議已逐漸顯示其中的缺點(diǎn),服務(wù)端實(shí)現(xiàn)、部署復(fù)雜度高,需要開(kāi)放單獨(dú)的網(wǎng)絡(luò)端口,容易被網(wǎng)絡(luò)防火前攔截等。而傳統(tǒng)的基于http協(xié)議的流媒體服務(wù)器,雖然部署簡(jiǎn)單,不需單獨(dú)的網(wǎng)絡(luò)端口,但其對(duì)實(shí)時(shí)視頻流的支持較差,且需要安裝flash插件來(lái)支持視頻播放,難以做到跨平臺(tái)來(lái)滿(mǎn)足大眾的需求。
因此,研究一種跨平臺(tái)性能好、無(wú)需專(zhuān)用播放器或插件支持的物聯(lián)網(wǎng)設(shè)備視頻播放方法,具有巨大的實(shí)際應(yīng)用價(jià)值。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種無(wú)客戶(hù)端的跨平臺(tái)視頻播放實(shí)現(xiàn)方法,解決了現(xiàn)有技術(shù)中視頻播放跨平臺(tái)性差,需要專(zhuān)用的客戶(hù)端或?yàn)g覽器插件支持,服務(wù)端安裝部署麻煩的問(wèn)題。
本發(fā)明采用的技術(shù)方案是,一種無(wú)客戶(hù)端的跨平臺(tái)視頻播放實(shí)現(xiàn)方法,按照以下步驟實(shí)施:
步驟1、客戶(hù)端向流媒體服務(wù)器發(fā)起視頻請(qǐng)求
1.1)啟動(dòng)流媒體服務(wù)器,解析配置文件,創(chuàng)建rpc線(xiàn)程并綁定至特定端口,監(jiān)聽(tīng)客戶(hù)端連接的到來(lái);
1.2)web客戶(hù)端讀取數(shù)據(jù)庫(kù)中保存的攝像機(jī)列表顯示至web界面供用戶(hù)選擇;
1.3)根據(jù)用戶(hù)所選的具體攝像機(jī)編號(hào)、通道號(hào)向流媒體服務(wù)器rpc接口發(fā)起視頻請(qǐng)求;
步驟2、流媒體服務(wù)器對(duì)web客戶(hù)端請(qǐng)求進(jìn)行解析處理;
步驟3、web客戶(hù)端向流媒體服務(wù)器發(fā)起http請(qǐng)求;
步驟4、流媒體服務(wù)器通過(guò)http協(xié)議傳遞特定視頻分片至web客戶(hù)端;
步驟5、web客戶(hù)端解析視頻分片內(nèi)容并播放。
本發(fā)明的有益效果是,結(jié)合dash協(xié)議和視頻監(jiān)控的特點(diǎn),通過(guò)對(duì)dash協(xié)議的實(shí)時(shí)性增強(qiáng)和優(yōu)化等改進(jìn),實(shí)現(xiàn)了實(shí)時(shí)和歷史視頻播放。服務(wù)端按照dash視頻流支持的格式對(duì)原始視頻進(jìn)行處理,生成mpd索引文件和視頻分片文件,客戶(hù)端采用html5+mse技術(shù)完成視頻流的播放,用戶(hù)無(wú)需單獨(dú)安裝flash插件或特定播放器軟件,即可自適應(yīng)不同視頻流中分辨率、幀率的改變,借助瀏覽器能夠很好的在android、ios、windows、linux等不同平臺(tái)閱覽視頻,支持實(shí)時(shí)視頻和歷史視頻的調(diào)閱,增強(qiáng)用戶(hù)體驗(yàn)。
附圖說(shuō)明
圖1為本發(fā)明方法的整體框架圖;
圖2為本發(fā)明方法rpc模塊交互流程圖;
圖3為本發(fā)明視頻播放過(guò)程中http交互圖。
具體實(shí)施方式
以下本文中的流媒體服務(wù)器是指裝有服務(wù)端程序的pc機(jī),web客戶(hù)端是指支持html5和mse擴(kuò)展的web瀏覽器。
本發(fā)明采用html5+mse(mediasourceextensions)技術(shù),從工程角度實(shí)現(xiàn)mpeg-dash協(xié)議,實(shí)現(xiàn)了無(wú)客戶(hù)端的視頻播放方法。
如圖1所示,流媒體服務(wù)器由rpc模塊、dash視頻流處理模塊、http服務(wù)模塊三部分構(gòu)成,其中rpc模塊負(fù)責(zé)和客戶(hù)端進(jìn)行通信并處理客戶(hù)端視頻請(qǐng)求;dash視頻流處理模塊負(fù)責(zé)將原始視頻流數(shù)據(jù)打包成mpeg-dash支持的格式,產(chǎn)生視頻分片文件和mpd索引文件存儲(chǔ)在服務(wù)器端;http服務(wù)模塊負(fù)責(zé)視頻分片文件的傳輸。
本發(fā)明方法,基于上述的流媒體服務(wù)器架構(gòu),按照以下步驟實(shí)施:
步驟1、客戶(hù)端向流媒體服務(wù)器發(fā)起視頻請(qǐng)求
1.1)啟動(dòng)流媒體服務(wù)器,解析配置文件,創(chuàng)建rpc線(xiàn)程并綁定至特定端口(默認(rèn)為8090,用于和web客戶(hù)端進(jìn)行rpc通訊),監(jiān)聽(tīng)客戶(hù)端連接的到來(lái);
1.2)web客戶(hù)端讀取數(shù)據(jù)庫(kù)中保存的攝像機(jī)列表顯示至web界面供用戶(hù)選擇;
1.3)根據(jù)用戶(hù)所選的具體攝像機(jī)編號(hào)、通道號(hào)向流媒體服務(wù)器rpc接口發(fā)起視頻請(qǐng)求;
步驟2、流媒體服務(wù)器對(duì)web客戶(hù)端請(qǐng)求進(jìn)行解析處理
2.1)解析客戶(hù)端請(qǐng)求命令;
2.2)創(chuàng)建視頻處理線(xiàn)程,將原始h.264格式的視頻流數(shù)據(jù)打包處理成mpeg-dash所需的格式,生成mpd索引文件和視頻分片并存儲(chǔ)于服務(wù)器端;
2.3)采用統(tǒng)一命名規(guī)范對(duì)視頻分片進(jìn)行命名處理;
2.4)通過(guò)rpc接口返回mpd文件所在的虛擬url至web客戶(hù)端;
步驟3、web客戶(hù)端向流媒體服務(wù)器發(fā)起http請(qǐng)求
3.1)根據(jù)rpc接口返回的url向流媒體服務(wù)器發(fā)起httpget請(qǐng)求,下載mpd文件;
3.2)解析mpd索引文件,獲得媒體持續(xù)時(shí)間、比特率、分片url等媒體特征信息;
3.3)根據(jù)視頻分片1的url向流媒體服務(wù)器發(fā)起http請(qǐng)求;
步驟4、流媒體服務(wù)器通過(guò)http協(xié)議傳遞特定視頻分片至web客戶(hù)端
4.1)解析web客戶(hù)端的http請(qǐng)求;
4.2)根據(jù)web客戶(hù)端的請(qǐng)求url,流媒體服務(wù)器查找該url對(duì)應(yīng)的視頻分片文件;
4.3)調(diào)用readfile()函數(shù)讀取視頻分片文件,通過(guò)httpsendhttpresponse()方法返回視頻分片數(shù)據(jù)至web客戶(hù)端;
步驟5、web客戶(hù)端解析視頻分片內(nèi)容并播放
5.1)web客戶(hù)端解析視頻分片內(nèi)容并進(jìn)行播放;
5.2)開(kāi)啟自適應(yīng)機(jī)制,通過(guò)一定的策略估算網(wǎng)絡(luò)帶寬,調(diào)整下一次請(qǐng)求視頻分片的比特率,繼續(xù)向流媒體服務(wù)器請(qǐng)求下一個(gè)視頻分片,直至視頻播放完成。
實(shí)施例
步驟1、客戶(hù)端向流媒體服務(wù)器發(fā)起視頻請(qǐng)求
1.1)啟動(dòng)流媒體服務(wù)器,解析配置文件,創(chuàng)建rpc線(xiàn)程并綁定至特定端口(默認(rèn)為8090,用于和web客戶(hù)端進(jìn)行rpc通訊),監(jiān)聽(tīng)客戶(hù)端連接的到來(lái);
1.2)web客戶(hù)端讀取數(shù)據(jù)庫(kù)中保存的攝像機(jī)列表顯示至web界面供用戶(hù)選擇;
1.3)根據(jù)用戶(hù)所選的具體攝像機(jī)編號(hào)、通道號(hào)向流媒體服務(wù)器rpc接口發(fā)起視頻請(qǐng)求;
步驟2、流媒體服務(wù)器對(duì)web客戶(hù)端請(qǐng)求進(jìn)行解析處理
2.1)解析客戶(hù)端請(qǐng)求命令;
2.2)創(chuàng)建視頻處理線(xiàn)程,將原始h.264格式的視頻流數(shù)據(jù)打包處理成mpeg-dash所需的格式,生成mpd索引文件和視頻分片并存儲(chǔ)于服務(wù)器端,mpd索引文件以xml格式存在,主要由mpd、period、adaptationset、representation、segmenttemplate標(biāo)簽構(gòu)成。其中mpd標(biāo)簽中的type屬性代表視頻屬性是實(shí)時(shí)視頻或歷史視頻,minbuffertime屬性代表視頻的最小緩存時(shí)間,mediapresentationduration屬性代表節(jié)目的總播放時(shí)間;adaptationset標(biāo)簽中的contenttype屬性代表媒體的呈現(xiàn)方式,包括視頻、音頻或字幕;representaiton標(biāo)簽中codecs屬性代表視頻編解碼器類(lèi)型,minitype屬性代表視頻格式,width、height、framerate屬性分別代表該視頻分片的寬度、高度、幀率信息。segmenttemplate標(biāo)簽中timescale屬性表示切片的時(shí)間軸,其生成的視頻切片名用$number$標(biāo)識(shí),表示該部分由具體的數(shù)字來(lái)表示;
2.3)采用統(tǒng)一命名規(guī)范對(duì)視頻分片進(jìn)行命名處理,切片文件名由視頻文件名稱(chēng)和切片序號(hào)兩部分組成,所有的視頻片段都以“l(fā)ive-video-sd-”開(kāi)頭,按固定順序連接視頻片段的序號(hào)“1”,“2”……;
2.4)通過(guò)rpc接口返回mpd文件所在的虛擬url至web客戶(hù)端,rpc模塊通信的完整流程如圖2所示,首先創(chuàng)建rpc線(xiàn)程,監(jiān)聽(tīng)web客戶(hù)端連接,在收到客戶(hù)端視頻請(qǐng)求后對(duì)其進(jìn)行解析,然后調(diào)用視頻處理線(xiàn)程對(duì)原始視頻流進(jìn)行處理,等待視頻分片的產(chǎn)生。當(dāng)流媒體服務(wù)器端產(chǎn)生視頻分片后,返回mpd文件url至web端,否則返回相應(yīng)的錯(cuò)誤編碼;
步驟3、web客戶(hù)端向流媒體服務(wù)器發(fā)起http請(qǐng)求
3.1)根據(jù)rpc接口返回的url向流媒體服務(wù)器發(fā)起httpget請(qǐng)求,下載mpd文件;
3.2)解析mpd索引文件,獲得媒體持續(xù)時(shí)間、比特率、分片url等媒體特征信息;
3.3)根據(jù)視頻分片1的url向流媒體服務(wù)器發(fā)起httpget請(qǐng)求;
步驟4、流媒體服務(wù)器通過(guò)http協(xié)議傳遞特定視頻分片至web客戶(hù)端
4.1)解析web客戶(hù)端的http請(qǐng)求;
4.2)根據(jù)web客戶(hù)端的請(qǐng)求url,流媒體服務(wù)器查找該url對(duì)應(yīng)的視頻分片文件;
4.3)調(diào)用readfile()函數(shù)讀取視頻分片文件,通過(guò)httpsendhttpresponse()方法返回視頻分片數(shù)據(jù)至web客戶(hù)端;
步驟5、web客戶(hù)端解析視頻分片內(nèi)容并播放
5.1)web客戶(hù)端解析視頻分片1的內(nèi)容并進(jìn)行播放;
5.2)開(kāi)啟自適應(yīng)機(jī)制,通過(guò)一定的策略估算網(wǎng)絡(luò)帶寬,調(diào)整下一次請(qǐng)求視頻分片的比特率,繼續(xù)向流媒體服務(wù)器請(qǐng)求下一個(gè)視頻分片,直至視頻播放完成,http請(qǐng)求過(guò)程的交互邏輯如圖3所示。
本發(fā)明的方法,流媒體服務(wù)器部署在windows平臺(tái),由windows服務(wù)統(tǒng)一進(jìn)行管理,web客戶(hù)端為支持html5和mse擴(kuò)展的瀏覽器。web端用戶(hù)在登錄成功后,根據(jù)所選攝像機(jī)編號(hào),向流媒體服務(wù)器發(fā)起視頻請(qǐng)求,在獲得視頻流后對(duì)其進(jìn)行解析處理,完成視頻畫(huà)面的播放。與傳統(tǒng)的web端視頻流播放相比,本發(fā)明方法無(wú)需特定的flash插件支持,跨平臺(tái)性強(qiáng),用戶(hù)可在任一時(shí)間、任一地點(diǎn)完成視頻流的閱覽。