最快速度開(kāi)啟視頻播放的策略(秒開(kāi)策略)

前一段時(shí)間項(xiàng)目開(kāi)發(fā)遇到一個(gè)需求,以最快的速度開(kāi)啟視頻播放。

如何做到這一點(diǎn)呢,需要對(duì)項(xiàng)目中播放相關(guān)的邏輯做整體規(guī)劃,所有與播放相關(guān)的邏輯都要以最快速度開(kāi)啟播放為目標(biāo)而努力。

措施一:在我們的項(xiàng)目中,播放可能發(fā)生在列表中,也可能發(fā)生在單個(gè)專(zhuān)門(mén)為播放所做的頁(yè)面中,要分情況對(duì)待:

在列表中的視頻,往往只有視頻信息,而沒(méi)有播放地址,因此,需要在本地對(duì)列表播放地址做提前加載,也就是在拉取列表數(shù)據(jù)之后,還要再拉取各條目的播放地址,當(dāng)然,為了節(jié)省處理性能及網(wǎng)絡(luò)帶寬,多條數(shù)據(jù)要合并到一個(gè)請(qǐng)求中。專(zhuān)門(mén)的播放頁(yè)就簡(jiǎn)單多了,先拿播放地址,播起來(lái)之后再取視頻信息即可。

措施二:部分播放地址可能存在有效期的情況,針對(duì)該情況,需要在本地做有效期策略,設(shè)兩個(gè)門(mén)榏:以有效期的一半時(shí)間為觸發(fā)取新門(mén)榏,即有效期超過(guò)一半時(shí)間,但未達(dá)到另一個(gè)門(mén)榏時(shí),可以使用該地址進(jìn)行播放,但在播放進(jìn)行中,要在后臺(tái)對(duì)該地址進(jìn)行更新。第二個(gè)門(mén)榏為失效門(mén)榏,以有效期的90%時(shí)間限定,超過(guò)該時(shí)間限,則認(rèn)為播放地址失效,必須先取播放地址,才可進(jìn)行播放。

措施三:精確定制界面的UI框架,壓縮界面層集,在我們的項(xiàng)目實(shí)踐中,發(fā)現(xiàn)RelativeLayout的性能在各容器中是較差的,它的繪制運(yùn)算onMeasure要執(zhí)行兩次,這樣,如果是多層RelativeLayout的話(huà),就會(huì)出現(xiàn)指數(shù)的增長(zhǎng),五層RelativeLayout會(huì)有64次調(diào)用,優(yōu)化方案為少用或不用RelativeLayout,經(jīng)分析,只需要一個(gè)該控件即可達(dá)到目的。以此類(lèi)推,其他界面元素的優(yōu)化不一一指出,精確控制各界面元素的使用,壓縮界面層集可以起到非常好的作用。

措施四:巧用ViewStub進(jìn)行懶加載,感興趣的同學(xué)可以研究下ViewStub的原理,在此不再展開(kāi)。合理的理用ViewStub,可以精確定制各界面元素的創(chuàng)建時(shí)間,而不是傳統(tǒng)的,一窩蜂的堆在onCreate附近,節(jié)省下界面初始化時(shí)間,用于盡快打開(kāi)播放,在我們的項(xiàng)目中,除播放的VideoView,其他控件一律在播放之后才繪制,比如:暫停按鈕。

? ? 措施五:延后網(wǎng)絡(luò)請(qǐng)求,以列表播放為例,在列表中,我們已經(jīng)預(yù)加載了播放地址,理論上,我們?cè)诓シ胖爸恍枰獌刹剑?/p>

1.裝載最基本的界面元素:Activity或Fragment容器及VideoView

2.將播放地址交給VideoView開(kāi)始播放

期間不應(yīng)該有網(wǎng)絡(luò)請(qǐng)求,有一些統(tǒng)計(jì)行為也要延后執(zhí)行。

措施六:有一部分頁(yè)面用到了ViewPager類(lèi)的容器盛放播放控件,也要進(jìn)行策略改進(jìn),先加載播放控件,然后再掛載ViewPager,將播放控件放入ViewPager中。

經(jīng)過(guò)上述六項(xiàng)措施,播放開(kāi)啟速度有了質(zhì)的提升,歸納一下,不外乎兩點(diǎn):

1.不是最必要的,就延后到播放開(kāi)啟后執(zhí)行

? ? 2.最必要的,比如VideoView,要做到效率最優(yōu)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容