本發(fā)明專利技術(shù)公開一種Android平臺跨進程音視頻加載方法,包括如下步驟:視圖進程創(chuàng)建SurfaceView,并獲取用于進行OpenGL渲染的Surface引用;綁定后臺進程的AIDL服務(wù);通過AIDL服務(wù)把視圖進程的Surface應(yīng)用傳遞到后臺進程;后臺進程收到AIDL發(fā)送過來的Surface應(yīng)用以后初始化OpenGL環(huán)境;視圖進程通過AIDL服務(wù)通知后臺進程開始加載媒體資源;后臺進程收到加載資源通知以后開始讀取媒體資源,并對讀取到的媒體數(shù)據(jù)進行解碼;解碼完第一幀數(shù)據(jù)以后發(fā)送消息通知視圖進程播放成功。本發(fā)明專利技術(shù)解決前臺進程想要加載后臺進程媒體數(shù)據(jù)的應(yīng)用場景。景。景。
【技術(shù)實現(xiàn)步驟摘要】
一種Android平臺跨進程音視頻加載方法
[0001]本專利技術(shù)涉及Android平臺
,特別涉及一種Android平臺跨進程音視頻加載方法。
技術(shù)介紹
[0002]Android(安卓)操作系統(tǒng)主要用于移動設(shè)備,如智能手機和平臺電腦等。全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達到10億臺。Android系統(tǒng)已經(jīng)成為智能手機領(lǐng)域占有量最高的系統(tǒng),Android應(yīng)用的開發(fā)也隨之蓬勃發(fā)展。
[0003]Android Interface Definition Language(AIDL)是一種用于在Android應(yīng)用程序中進行跨進程通信的接口定義語言。AIDL允許不同的應(yīng)用程序在不同的進程中進行通信,以便共享數(shù)據(jù)和調(diào)用遠程服務(wù)。
[0004]使用AIDL,您可以定義接口和方法,然后在不同的應(yīng)用程序之間進行遠程調(diào)用。AIDL文件定義了接口的方法、參數(shù)和返回類型,并生成對應(yīng)的Java接口文件和相關(guān)的代理類。這些代理類實現(xiàn)了IPC(Inter
?
Process Communication)機制,使得應(yīng)用程序可以跨進程進行通信。
[0005]AIDL提供了一種方便的方式來定義跨進程通信的接口,并自動生成相應(yīng)的代碼,簡化了開發(fā)者在處理IPC時的工作。在使用AIDL進行跨進程通信時,通常會涉及到客戶端和服務(wù)端兩個組件,客戶端通過綁定遠程服務(wù)來獲得遠程對象的引用,并通過接口進行方法調(diào)用和數(shù)據(jù)交換。
[0006]然而在Android平臺不同的進程中是不能互相訪問對方的內(nèi)存資源,這意味著前臺進程創(chuàng)建聲明的一塊內(nèi)存地址只能在前臺進程內(nèi)部訪問使用,如果后臺進程想要直接訪問前臺進程這塊內(nèi)存是沒有訪問權(quán)限的,本技術(shù)因此而研發(fā)。
技術(shù)實現(xiàn)思路
[0007]針對現(xiàn)有技術(shù)存在的問題,本專利技術(shù)提供一種Android平臺跨進程音視頻加載方法,解決前臺進程想要加載后臺進程媒體數(shù)據(jù)的應(yīng)用場景;在這個應(yīng)用場景中,前臺進程提供音視頻渲染需要的Surface,后臺進程負責(zé)將音視頻數(shù)據(jù)解碼成原始數(shù)據(jù)并渲染到前臺進程的Surface上,實現(xiàn)業(yè)務(wù)和視圖顯示邏輯進行分離,最終達到的效果就是前臺進程可以正常顯示后臺進程的音視頻數(shù)據(jù),同時前臺進程可以控制后臺進程加載音視頻數(shù)據(jù)的狀態(tài),比如開始加載、暫停加載、恢復(fù)加載、釋放加載資源,另外后臺進程也可以將資源加載狀態(tài)通過AIDL方式告知前臺進程,實現(xiàn)前臺進程能“清楚感知”到后臺進程的實時狀態(tài)。
[0008]為了實現(xiàn)上述目的,本專利技術(shù)提供一種Android平臺跨進程音視頻加載方法,包括如下步驟:
[0009]步驟S1:視圖進程創(chuàng)建SurfaceView,并獲取用于進行OpenGL渲染的Surface引用;
[0010]步驟S2:綁定后臺進程的AIDL服務(wù);
[0011]步驟S3:通過AIDL服務(wù)把視圖進程的Surface應(yīng)用傳遞到后臺進程;
[0012]步驟S4:后臺進程收到AIDL發(fā)送過來的Surface應(yīng)用以后初始化OpenGL環(huán)境;
[0013]步驟S5:視圖進程通過AIDL服務(wù)通知后臺進程開始加載媒體資源;
[0014]步驟S6:后臺進程收到加載資源通知以后開始讀取媒體資源,并對讀取到的媒體數(shù)據(jù)進行解碼;
[0015]步驟S7:解碼完第一幀數(shù)據(jù)以后發(fā)送消息通知視圖進程播放成功;
[0016]步驟S8:后臺進程把解碼完成的第一幀數(shù)據(jù)渲染到Surface上,或,進行播放;
[0017]步驟S9:后臺進程加載播放完媒體數(shù)據(jù)以后通過AIDL服務(wù)通知視圖進程播放結(jié)束;
[0018]步驟S10:視圖進程解綁AIDL服務(wù),并且回收渲染SurfaceView和Surface。
[0019]優(yōu)選的,所述步驟S2中的綁定后臺進程的AIDL服務(wù)是通過AIDL協(xié)議進行綁定。
[0020]優(yōu)選的,所述步驟S5中的媒體資源為本地的mp4文件。
[0021]優(yōu)選的,所述步驟S5的后臺進程將媒體資源已經(jīng)開始加載的信息通過AIDL服務(wù)傳遞給視圖進程進行保存。
[0022]優(yōu)選的,所述步驟S6的媒體數(shù)據(jù)包括視頻數(shù)據(jù)、音頻數(shù)據(jù)。
[0023]優(yōu)選的,所述步驟S7中的第一幀數(shù)據(jù)包括YUV數(shù)據(jù)、PCM數(shù)據(jù),其中,YUV數(shù)據(jù)是通過將視頻數(shù)據(jù)解碼而獲得,PCM數(shù)據(jù)是通過將音頻數(shù)據(jù)解碼而獲得。
[0024]優(yōu)選的,所述步驟S8中具體過程為:后臺進程把解碼完成的YUV數(shù)據(jù)使用OpenGL渲染到Surface上,把解碼完成的PCM數(shù)據(jù)使用系統(tǒng)音頻播放器進行播放。
[0025]采用本專利技術(shù)的技術(shù)方案,具有以下有益效果:
[0026]1、本專利技術(shù)極大的簡化了跨進程實現(xiàn)音視頻資源的加載,幾乎可以做到和單進程加載資源沒有差異,更簡潔、高效、安全的實現(xiàn)跨進程加載媒體資源,視圖進程只需要提供渲染需要的Surface,而不用關(guān)心媒體數(shù)據(jù)的來源以及數(shù)據(jù)是怎么加載解析以及渲染的;對于后臺進程來說,它只需要負責(zé)媒體數(shù)據(jù)的加載、解析以及渲染,從安全的角度來說也更安全,因為視圖進程只是提供了一個渲染“容器”而沒有途徑拿到渲染的真實數(shù)據(jù);
[0027]2、本專利技術(shù)技術(shù)進程間通信方式采用的是Android原生支持的AIDL技術(shù),通過AIDL方式實現(xiàn)多個進程之前消息交互以及數(shù)據(jù)傳遞,AIDL在Android中廣泛應(yīng)用于多進程通信、遠程服務(wù)、跨應(yīng)用數(shù)據(jù)共享等場景,它提供了一種可靠、高效的方式來實現(xiàn)應(yīng)用程序之間的通信,并且具有良好的安全性和穩(wěn)定性;
[0028]3、本專利技術(shù)解決前臺進程想要加載后臺進程媒體數(shù)據(jù)的應(yīng)用場景;在這個應(yīng)用場景中,前臺進程提供音視頻渲染需要的Surface,后臺進程負責(zé)將音視頻數(shù)據(jù)解碼成原始數(shù)據(jù)并渲染到前臺進程的Surface上,實現(xiàn)業(yè)務(wù)和視圖顯示邏輯進行分離,最終達到的效果就是前臺進程可以正常顯示后臺進程的音視頻數(shù)據(jù),同時前臺進程可以控制后臺進程加載音視頻數(shù)據(jù)的狀態(tài),比如開始加載、暫停加載、恢復(fù)加載、釋放加載資源,另外后臺進程也可以將資源加載狀態(tài)通過AIDL方式告知前臺進程,實現(xiàn)前臺進程能“清楚感知”到后臺進程的實時狀態(tài)。
附圖說明
[0029]圖1為本專利技術(shù)工作流程框圖;
[0030]圖2為本專利技術(shù)時序圖。
具體實施方式
[0031]以下結(jié)合附圖和具體實施例,對本專利技術(shù)進一步說明。
[0032]參照圖1
?
2,本專利技術(shù)提供一種Android平臺跨進程音視頻加載方法,包括如下步驟:
[0033]步驟S1:前臺進程的視圖進程創(chuàng)建好用于渲染的View,并獲取到可以用于進行OpenGL渲染的Surface引用,其中前臺進程,提供后臺進程渲染視頻幀需要的渲染視圖;后臺進程,負責(zé)音視頻數(shù)據(jù)的加載、解碼以及渲染;Surface:用于接收畫面渲染的“容器”;
[0034]步驟S2:通過AIDL協(xié)議綁定后臺進程的AIDL服務(wù);
[0035]步驟S3:通過AIDL服務(wù)把視圖進程的Surface應(yīng)用傳遞到后臺進程;
[0036]步驟S本文檔來自技高網(wǎng)...
【技術(shù)保護點】
【技術(shù)特征摘要】
1.一種Android平臺跨進程音視頻加載方法,其特征在于,包括如下步驟:步驟S1:視圖進程創(chuàng)建SurfaceView,并獲取用于進行OpenGL渲染的Surface引用;步驟S2:綁定后臺進程的AIDL服務(wù);步驟S3:通過AIDL服務(wù)把視圖進程的Surface應(yīng)用傳遞到后臺進程;步驟S4:后臺進程收到AIDL發(fā)送過來的Surface應(yīng)用以后初始化OpenGL環(huán)境;步驟S5:視圖進程通過AIDL服務(wù)通知后臺進程開始加載媒體資源;步驟S6:后臺進程收到加載資源通知以后開始讀取媒體資源,并對讀取到的媒體數(shù)據(jù)進行解碼;步驟S7:解碼完第一幀數(shù)據(jù)以后發(fā)送消息通知視圖進程播放成功;步驟S8:后臺進程把解碼完成的第一幀數(shù)據(jù)渲染到Surface上,或,進行播放;步驟S9:后臺進程加載播放完媒體數(shù)據(jù)以后通過AIDL服務(wù)通知視圖進程播放結(jié)束;步驟S10:視圖進程解綁AIDL服務(wù),并且回收渲染SurfaceView和Surface。2.根據(jù)權(quán)利要求1所述的Android平臺跨進程音視頻加載方法,其特征在于,所述步驟S2...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:劉康,章永新,陳文浩,
申請(專利權(quán))人:深圳技威時代科技有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。