Android直播播放器+彈幕使用總結(jié)

https://github.com/Hemumu/HLiveDemo/tree/master
http://www.10tiao.com/html/227/201702/2650238607/1.html

現(xiàn)在有很多的開源播放器,首選肯定是B站的

ijkplayer
https://github.com/Bilibili/ijkplayer

本文所選的是基于 ijkplayer 封裝的開源播放器

JieCaoVideoPlayer
https://github.com/lipangit/JieCaoVideoPlayer

彈幕使用的也是B站的開源項(xiàng)目

https://github.com/Bilibili/DanmakuFlameMaster

JieCaoVideoPlayer 默認(rèn)提供了基本的UI界面,但是肯定滿足不了每個(gè)人的界面要求,所以我們就需要在 JieCaoVideoPlayer 上簡(jiǎn)單的封裝一下。首先新建一個(gè) HVideoPlayer類 繼承 JCVideoPlayerStandard:

JCVideoPlayerStandard 對(duì)一些基本的界面操作以及頁(yè)面邏輯做了封裝,我們只需要繼承這個(gè)類,然后自定義自己的布局。如果有你不需要的控件就隱藏,刪除可能會(huì)報(bào)錯(cuò)。重寫 init方法 初始化一些你自定義的控件和按鈕的點(diǎn)擊事件。

JieCaoVideoPlayer 是通過(guò) setUp方法 來(lái)初始化播放器參數(shù),所以我們也需要來(lái)重寫這個(gè)方法來(lái)初始化我們自己的一些參數(shù)

需要注意一點(diǎn)的就是播放器器全屏,這里修改了 FULLSCREEN_ORIENTATION 參數(shù)為 ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE 使播放器點(diǎn)擊全屏后強(qiáng)制全屏并且是橫屏的,默認(rèn)情況點(diǎn)擊全屏后是豎屏的,并且根據(jù)重力感應(yīng)調(diào)整屏幕方向。需要注意的是使用播放器的Activity需要設(shè)置為豎屏

android:screenOrientation="portrait"
否則調(diào)用橫屏后整個(gè) Activity 會(huì)整個(gè)橫屏。

需要注意播放器橫屏后會(huì)創(chuàng)建一個(gè)新的播放器實(shí)例和當(dāng)前的播放器不是同一個(gè)實(shí)例,也就是說(shuō)點(diǎn)擊全屏后會(huì)重新初始化當(dāng)前類,并重新調(diào)用 setUp方法。那怎么拿到前面小屏模式下一些必須的參數(shù)呢?查看下 JCVideoPlayer 全屏的源碼

可以看到在全屏的時(shí)候重新創(chuàng)建了 JCVideoPlayer 的實(shí)例,并且調(diào)用了 setUp方法 傳入了 url 以及全屏,后面這個(gè) objects 是干嘛的呢?查看源碼:

默認(rèn)的 objects 的第一個(gè)參數(shù)是標(biāo)題,后面就可以傳遞自己的一些字段,比如我們?cè)谌翆?shí)例中需要回調(diào)一些方法,就要將這些接口傳到全屏播放器示例中,否則在全屏中使用這些字段會(huì)報(bào)空指針。

在 setUp 中如果當(dāng)前是全屏那么我們需要去加載彈幕,currentScreen 字段是當(dāng)前的狀態(tài),如果是全屏就顯示彈幕否則就隱藏彈幕相關(guān)的東西。關(guān)于彈幕庫(kù)的使用可以參考郭神的文章:

http://blog.csdn.net/guolin_blog/article/details/51933728

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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