本發(fā)明屬于移動終端多媒體技術(shù)領(lǐng)域,具體涉及一種基于安卓的音頻視頻流推送方法及裝置、播放方法及裝置。
背景技術(shù):
隨著計算機、互聯(lián)網(wǎng)、移動終端等技術(shù)的飛速發(fā)展,多媒體技術(shù)得到越來越廣泛的應(yīng)用,人們對于多媒體技術(shù)的需求也日趨多樣化,單純從網(wǎng)絡(luò)上獲取文字信息和圖片信息已不能滿足人們的需求,在市場需求的刺激下,形式多樣的信息應(yīng)運而生,如層出不窮的網(wǎng)絡(luò)音樂、網(wǎng)絡(luò)視頻等多媒體資源,這些新形式的網(wǎng)絡(luò)資源同時滿足了人們不同感官上的需求。
而流媒體技術(shù)為了實現(xiàn)網(wǎng)絡(luò)直播中功能和結(jié)構(gòu)復(fù)雜的應(yīng)用,需要涉及種類繁多的技術(shù)。在技術(shù)層面上,基于各音視頻設(shè)備采集的直播系統(tǒng)是基于互聯(lián)網(wǎng)技術(shù)的多媒體應(yīng)用,是通過IP數(shù)據(jù)包發(fā)送實現(xiàn)的語音視頻業(yè)務(wù),它將網(wǎng)絡(luò)技術(shù)的便利性和實用性與現(xiàn)有多媒體網(wǎng)絡(luò)技術(shù)結(jié)合,使我們可以通過互聯(lián)網(wǎng)快速地傳送語音、視頻等業(yè)務(wù),而對于現(xiàn)有的移動終端(如手機、平板)來說,其直播多為使用攝像頭實現(xiàn)網(wǎng)絡(luò)直播,由于其文件格式、傳輸協(xié)議、編碼方式以及網(wǎng)絡(luò)傳輸?shù)仍蚴芟掭^多,無法便捷地對其屏幕內(nèi)容及音頻信息與其他移動終端進行共享和直播。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于安卓的音頻視頻流推送方法及裝置、播放方法及裝置。本發(fā)明可以將安卓移動終端所采集的音頻視頻流進行推送或播放,方便地實現(xiàn)音頻視頻數(shù)據(jù)的共享,并對安卓移動終端的音頻數(shù)據(jù)及視頻數(shù) 據(jù)進行共享及直播,有效的滿足使用者的個性化需求。
其技術(shù)方案如下:
基于安卓的音頻視頻流推送方法,該方法包括如下步驟:推送終端通過自身的音頻采集單元、視頻采集單元分別采集音頻數(shù)據(jù)、視頻數(shù)據(jù);推送終端通過自身的編碼單元對所采集的音頻數(shù)據(jù)、視頻數(shù)據(jù)進行編碼并壓縮;推送終端向后臺發(fā)出數(shù)據(jù)推送請求;后臺獲取該推送終端的身份代碼,并判斷該推送終端是否具有推送權(quán)限,并將權(quán)限信息返回給推送終端;若該權(quán)限信息為“允許”,則該推送終端將壓縮后的音頻數(shù)據(jù)、視頻數(shù)據(jù)傳輸至后臺保存。
進一步的,所述后臺包括流媒體服務(wù)器、業(yè)務(wù)服務(wù)器及權(quán)限服務(wù)器,所述推送終端向業(yè)務(wù)服務(wù)器發(fā)出推送請求,業(yè)務(wù)服務(wù)器獲取該推送終端的身份代碼,并判斷該推送終端是否具有推送權(quán)限,若該權(quán)限信息為“允許”,則業(yè)務(wù)服務(wù)器將路徑信息返回給推送終端;推送終端收到該路徑信息后,向流媒體服務(wù)器發(fā)出推送請求,流媒體服務(wù)器將該請求發(fā)送至權(quán)限服務(wù)器,權(quán)限服務(wù)器獲取該推送終端的身份代碼,判斷該推送終端是否具有推送權(quán)限,并將該權(quán)限信息返回至流媒體服務(wù)器,流媒體服務(wù)器將權(quán)限信息返回至該推送終端,若該權(quán)限信息為“允許”,則該推送終端將壓縮后的音頻數(shù)據(jù)、視頻數(shù)據(jù)傳輸至后臺保存。
進一步的,所述音頻采集單元在采集所述音頻數(shù)據(jù)時,在音頻數(shù)據(jù)中加入其采集時的時間信息;所述視頻采集單元在采集所述視頻數(shù)據(jù)時,在視頻數(shù)據(jù)中也加入其采集時的時間信息;在對該音頻數(shù)據(jù)、視頻數(shù)據(jù)進行保存時,分別按相應(yīng)的音頻數(shù)據(jù)、視頻數(shù)據(jù)所對應(yīng)的時間進行順序保存。
進一步的,當所述流媒體服務(wù)器收到至少兩個推送終端的推送請求時,按其所收到的推送請求的時間先后,允許時間在先的所述推送終端進行推送,向時間在后的所述推送終端發(fā)出“等待”信號或者暫停接收其推送信息。
基于安卓的音頻視頻流推送裝置,包括:音頻采集單元,用于采集音頻數(shù)據(jù);視頻采集單元,用于采集視頻數(shù)據(jù);編碼單元,用于對所采集的音頻數(shù)據(jù)、視頻數(shù)據(jù)進行編碼并壓縮;推送單元,向后臺發(fā)出推送請求或向后臺推送數(shù)據(jù)。
基于安卓的音頻視頻流播放方法,該方法包括如下步驟:播放終端向后臺發(fā)出數(shù)據(jù)播放請求;后臺獲取該播放終端的身份代碼,并判斷該播放終端是否具有播放權(quán)限,并將權(quán)限信息返回給播放終端;若該權(quán)限信息為“允許”,則該播放終端從后臺獲取壓縮后的音頻數(shù)據(jù)、視頻數(shù)據(jù)并將其解壓;播放終端通過自身的音頻播放單元、視頻播放單元分別將其所獲取的音頻數(shù)據(jù)、視頻數(shù)據(jù)進行播放。
進一步的,所述后臺包括流媒體服務(wù)器、業(yè)務(wù)服務(wù)器及權(quán)限服務(wù)器,所述播放終端向業(yè)務(wù)服務(wù)器發(fā)出播放請求,業(yè)務(wù)服務(wù)器獲取該播放終端的身份代碼,并判斷該播放終端是否具有播放權(quán)限,若該權(quán)限信息為“允許”,則業(yè)務(wù)服務(wù)器將路徑信息返回給播放終端;播放終端收到該路徑信息后,向流媒體服務(wù)器發(fā)出播放請求,流媒體服務(wù)器將該請求發(fā)送至權(quán)限服務(wù)器,權(quán)限服務(wù)器獲取該播放終端的身份代碼,判斷該播放終端是否具有播放權(quán)限,并將該權(quán)限信息返回至流媒體服務(wù)器,流媒體服務(wù)器將權(quán)限信息返回至該播放終端,若該權(quán)限信息為“允許”,則該播放終端從后臺獲取壓縮后的音頻數(shù)據(jù)、視頻數(shù)據(jù)。
進一步的,所述播放終端在發(fā)出播放請求時,分別獲取相應(yīng)的音頻數(shù)據(jù)、視頻數(shù)據(jù)的時間信息;所述音頻播放單元、視頻播放單元在播放所述音頻數(shù)據(jù)、音頻數(shù)據(jù)時,分別按相應(yīng)的音頻數(shù)據(jù)、視頻數(shù)據(jù)所對應(yīng)的時間進行順序播放。
進一步的,當所述流媒體服務(wù)器收到至少兩個播放終端的播放請求時,按其所收到的播放請求的時間先后,允許時間在先的所述播放終端進行播放,向時間在后的所述播放終端發(fā)出“等待”信號或者暫停接收其播放信息。
基于安卓的音頻視頻流播放裝置,包括:音頻播放單元,用于播放音頻數(shù)據(jù);視頻播放單元,用于播放視頻數(shù)據(jù);解碼單元,用于對所獲取的音頻數(shù)據(jù)、視頻數(shù)據(jù)進行解碼或解壓;獲取單元,向后臺發(fā)出獲取請求或從后臺獲取數(shù)據(jù)。
下面對本發(fā)明的優(yōu)點或原理進行說明:
1、在進行推送時,推送終端通過自身的音頻采集單元、視頻采集單元分別采集音頻數(shù)據(jù)、視頻數(shù)據(jù);再對音頻數(shù)據(jù)、視頻數(shù)據(jù)進行壓縮處理,并向后臺推送,以便其他的播放終端進行播放,該方案可以單獨的運用移動終端進行 屏幕內(nèi)容及音頻內(nèi)容的直播。
2、所述后臺包括流媒體服務(wù)器、業(yè)務(wù)服務(wù)器及權(quán)限服務(wù)器,在進行推送時,需要先判斷該推送終端是否具有推送權(quán)限,如果具有推送權(quán)限則返回路徑信息,推送終端再按該路徑信息進行推送存儲,這樣大大地提高了推送的安全性;同理,在播放終端進行播放時先驗證其是否具有播放權(quán)限,如果具有播放權(quán)限則向其返回路徑信息。
3、所述視頻采集單元在采集所述視頻數(shù)據(jù)時,在視頻數(shù)據(jù)中也加入其采集時的時間信息;在對該音頻數(shù)據(jù)、視頻數(shù)據(jù)進行保存時,分別按相應(yīng)的音頻數(shù)據(jù)、視頻數(shù)據(jù)所對應(yīng)的時間進行順序保存;由于音頻數(shù)據(jù)、視頻數(shù)據(jù)是分別進行采集、推送、存儲的,在音頻數(shù)據(jù)、視頻數(shù)據(jù)中加入時間信息,在進行播放時,再將時間信息相同的音頻數(shù)據(jù)及視頻數(shù)據(jù)按順序播放,可以保證線程并發(fā)無誤,進而可以對所采集的場影進行真實、完整的再現(xiàn)。
4、當所述流媒體服務(wù)器收到至少兩個推送終端的推送請求時,允許時間在先的所述推送終端進行推送,向時間在后的所述推送終端發(fā)出“等待”信號或者暫停接收其推送信息;即,在多個推送終端同時進行推送時,按時間先后隊列進行推送。
需要說明的是:
前述效果或原理更側(cè)重于推送終端,非常明顯,播放終端與推送終端的數(shù)據(jù)處理過程剛好相反,其原理是一樣的,文中沒有過多的贅述。
附圖說明
圖1是本發(fā)明實施例中,基于安卓的音頻視頻流推送、播放系統(tǒng)示意圖;
圖2是數(shù)據(jù)推送步驟圖;
附圖標記說明:
10、推送終端,11、音頻采集單元,12、視頻采集單元,13、編碼單元,14、推送單元,20、后臺,21、流媒體服務(wù)器,22、業(yè)務(wù)服務(wù)器,23、權(quán)限服務(wù)器,30、播放終端,31、音頻播放單元,32、視頻播放單元,33、解碼單元,34、獲取單元。
具體實施方式
下面對本發(fā)明的實施例進行詳細說明。
如圖1所示,基于安卓的音頻視頻流推送、播放系統(tǒng),該推送、播放系統(tǒng)包括:
A、移動推送終端10,該終端包括:
音頻采集單元11,用于采集音頻數(shù)據(jù);
視頻采集單元12,用于采集視頻數(shù)據(jù);
編碼單元13,用于對所采集的音頻數(shù)據(jù)、視頻數(shù)據(jù)進行編碼并壓縮;
推送單元14,向后臺20發(fā)出推送請求或向后臺20推送數(shù)據(jù);
B、移動播放終端30,該終端包括:
音頻播放單元31,用于播放音頻數(shù)據(jù);
視頻播放單元32,用于播放視頻數(shù)據(jù);
解碼單元33,用于對所獲取的音頻數(shù)據(jù)、視頻數(shù)據(jù)進行解碼或解壓;
獲取單元34,向后臺20發(fā)出獲取請求或從后臺20獲取數(shù)據(jù);
C、后臺20,該后臺20包括:
流媒體服務(wù)器21;
業(yè)務(wù)服務(wù)器22;
權(quán)限服務(wù)器23。
本實施例的音頻視頻流推送方法,包括如下步驟:
推送終端10通過自身的音頻采集單元11、視頻采集單元12分別采集音頻數(shù)據(jù)、視頻數(shù)據(jù);并在音頻數(shù)據(jù)、視頻數(shù)據(jù)中分別加入其采集時的時間信息;
推送終端10通過自身的編碼單元13對所采集的音頻數(shù)據(jù)、視頻數(shù)據(jù)進行編碼并壓縮;
推送終端10向后臺20的業(yè)務(wù)服務(wù)器22發(fā)出推送請求;
后臺20的業(yè)務(wù)服務(wù)器22獲取該推送終端10的身份代碼,并判斷該推送終端10是否具有推送權(quán)限,若該權(quán)限信息為“允許”,則業(yè)務(wù)服務(wù)器22將路徑信息返回給推送終端10;
推送終端10收到該路徑信息后,向流媒體服務(wù)器21發(fā)出推送請求;
流媒體服務(wù)器21將該請求發(fā)送至權(quán)限服務(wù)器23,權(quán)限服務(wù)器23獲取該推送終端10的身份代碼,判斷該推送終端10是否具有推送權(quán)限,并將該權(quán)限信息返回至流媒體服務(wù)器21,流媒體服務(wù)器21將權(quán)限信息返回至該推送終端10,若該權(quán)限信息為“允許”,則該推送終端10將壓縮后的音頻數(shù)據(jù)、視頻數(shù)據(jù)傳輸至后臺20保存;在對該音頻數(shù)據(jù)、視頻數(shù)據(jù)進行保存時,分別按相應(yīng)的音頻數(shù)據(jù)、視頻數(shù)據(jù)所對應(yīng)的時間進行順序保存,其具體步驟如圖2所示,并詳細說明如下:
步驟1:推流組件分別進行音頻錄制操作、并從屏幕進行視頻錄制操作,獲取壓縮和封裝好的flv(flash video)格式的幀,此部分需要的交互需要在安卓調(diào)用c語言編寫的接口,需要運用NDK交叉編譯技術(shù),將推送組件和ffmpeg(多媒體視頻處理工具)代碼編譯成.so文件(shared object,即C動態(tài)鏈接庫)供安卓使用,其中涉及JNI(Java Native Interface,即Java本地接口)技術(shù)實現(xiàn)自定義對接程序,利用幀隊列實現(xiàn)流轉(zhuǎn)數(shù)據(jù)包。
步驟2:組件運用NDK(原生開發(fā)工具包)交叉編譯技術(shù)將音頻視頻幀打包成Jpacket數(shù)據(jù)包。
步驟3、為了保證音頻和視頻同步,在JPacket(自定義流數(shù)據(jù)包)中加入時間戳,根據(jù)時間戳順序放進推流隊列尾部,隊列在傳輸過程中,為了隊列在傳輸時是有序的,此處引入了并發(fā)控制,在同一時刻讀寫不能同時進行,考慮到多線程并發(fā)因素,隊列通過信號量來實現(xiàn)讀寫并發(fā)時數(shù)據(jù)包進入的順序。
步驟4:推送終端10調(diào)用ffmpeg接口實現(xiàn)隊列傳輸,通過網(wǎng)絡(luò)到達流媒體服務(wù)器21。
當所述流媒體服務(wù)器21收到至少兩個推送終端10的推送請求時,按其所收到的推送請求的時間先后,允許時間在先的所述推送終端10進行推送,向時間在后的所述推送終端10發(fā)出“等待”信號或者暫停接收其推送信息。
本實施例的音頻視頻流播放方法,該方法包括如下步驟:
播放終端30向后臺20的業(yè)務(wù)服務(wù)器22發(fā)出數(shù)據(jù)播放請求;
業(yè)務(wù)服務(wù)器22獲取該播放終端30的身份代碼,并判斷該播放終端30是否具有播放權(quán)限,若該權(quán)限信息為“允許”,則業(yè)務(wù)服務(wù)器22將路徑信息返回給播放終端30;
播放終端30收到該路徑信息后,向流媒體服務(wù)器21發(fā)出播放請求,流媒體服務(wù)器21將該請求發(fā)送至權(quán)限服務(wù)器23,權(quán)限服務(wù)器23獲取該播放終端30的身份代碼,判斷該播放終端30是否具有播放權(quán)限,并將該權(quán)限信息返回至流媒體服務(wù)器21,流媒體服務(wù)器21將權(quán)限信息返回至該播放終端30,若該權(quán)限信息為“允許”,則該播放終端30從后臺20獲取壓縮后的音頻數(shù)據(jù)、視頻數(shù)據(jù);所述播放終端30在發(fā)出播放請求時,分別獲取相應(yīng)的音頻數(shù)據(jù)、視頻數(shù)據(jù)的時間信息;所述音頻播放單元31、視頻播放單元32在播放所述音頻數(shù)據(jù)、音頻數(shù)據(jù)時,分別按相應(yīng)的音頻數(shù)據(jù)、視頻數(shù)據(jù)所對應(yīng)的時間進行順序播放。
當所述流媒體服務(wù)器21收到至少兩個播放終端30的播放請求時,按其所 收到的播放請求的時間先后,允許時間在先的所述播放終端30進行播放,向時間在后的所述播放終端30發(fā)出“等待”信號或者暫停接收其播放信息。
當流媒體服務(wù)器21同時收到推送終端10的推送請求,以及播放終端30的播放請求時,按其所收到的請求的時間先后,允許時間在先的終端所發(fā)出的請求,向時間在后的終端發(fā)出“等待”信號或者暫停接收其請求信息。
需要說明的是:
在很多場景下,推送終端10與播放終端30可能會發(fā)生轉(zhuǎn)換,如:
在課堂上進行直播的老師,可能需要將推流的權(quán)限交給學(xué)生,在節(jié)目直播的時候,推流的任務(wù)可能會交給另外一個移動終端,那么流擁有者和推流參與者在權(quán)限方面如何進行交互,具體可以包括如下步驟:
步驟1:流擁有者向權(quán)限服務(wù)器23發(fā)送請求,授予指定參與者推送權(quán)限;
步驟2:權(quán)限服務(wù)器23對流擁有者作出響應(yīng),將操作成功與否的結(jié)果發(fā)送給流擁有者;
步驟3:參與者向權(quán)限服務(wù)器23請求校驗自己是否有推流權(quán)限,如無權(quán)限,需要等流擁有者授權(quán);如有權(quán)限,進行推流相關(guān)操作。
本實施例具有如下優(yōu)點:
1、在進行推送時,推送終端10通過自身的音頻采集單元11、視頻采集單元12分別采集音頻數(shù)據(jù)、視頻數(shù)據(jù);再對音頻數(shù)據(jù)、視頻數(shù)據(jù)進行壓縮處理,并向后臺20推送,以便其他的播放終端30進行播放,該方案可以單獨的運用移動終端進行屏幕內(nèi)容及音頻內(nèi)容的直播,該方案與現(xiàn)有屏幕共享技術(shù)的主要區(qū)別為采用的流媒體協(xié)議不同,現(xiàn)有的屏幕共享技術(shù)多采用RTSP(實時流協(xié)議),該方案采用RTMP(實時消息傳送協(xié)議)。RTMP擁有以下特點:提供高效率、低延遲的傳輸方式,允許服務(wù)器承載大量直播接收端,以及允許接收端以高兼容度的flash方式播放音頻視頻數(shù)據(jù)。采用RTMP進而使該方案滿足了大量用戶便捷地進行視頻直播的需求。
2、所述后臺20包括流媒體服務(wù)器21、業(yè)務(wù)服務(wù)器22及權(quán)限服務(wù)器23,在進行推送時,需要先判斷該推送終端10是否具有推送權(quán)限,如果具有推送權(quán)限則返回路徑信息,推送終端10再按該路徑信息進行推送存儲,這樣大大地提高了推送的安全性;同理,在播放終端30進行播放時先驗證其是否具有播放權(quán)限,如果具有播放權(quán)限則向其返回路徑信息。
3、所述視頻采集單元12在采集所述視頻數(shù)據(jù)時,在視頻數(shù)據(jù)中也加入其采集時的時間信息;在對該音頻數(shù)據(jù)、視頻數(shù)據(jù)進行保存時,分別按相應(yīng)的音頻數(shù)據(jù)、視頻數(shù)據(jù)所對應(yīng)的時間進行順序保存;由于音頻數(shù)據(jù)、視頻數(shù)據(jù)是分別進行采集、推送、存儲的,在音頻數(shù)據(jù)、視頻數(shù)據(jù)中加入時間信息,在進行播放時,再將時間信息相同的音頻數(shù)據(jù)及視頻數(shù)據(jù)按順序播放,可以保證線程并發(fā)無誤,進而可以對所采集的場影進行真實、完整的再現(xiàn)。
4、當所述流媒體服務(wù)器21收到至少兩個推送終端10的推送請求時,允許時間在先的所述推送終端10進行推送,向時間在后的所述推送終端10發(fā)出“等待”信號或者暫停接收其推送信息;即,在多個推送終端10同時進行推送時,按時間先后隊列進行推送。
以上僅為本發(fā)明的具體實施例,并不以此限定本發(fā)明的保護范圍;在不違反本發(fā)明構(gòu)思的基礎(chǔ)上所作的任何替換與改進,均屬本發(fā)明的保護范圍。