項(xiàng)目需要用循環(huán)調(diào)用接口的方法實(shí)現(xiàn)播放視頻彈幕(不要問為什么,領(lǐng)導(dǎo)讓的)腥泥,新手寫的不太好,只是簡單的實(shí)現(xiàn)總結(jié)一下。
先推薦兩個(gè)庫:
開源彈幕庫:github.com/unash/BarrageRenderer
一個(gè)不錯(cuò)的開源播放器:github.com/guowilling/SRVideoPlayer
因?yàn)轫?xiàng)目做的是直播情连,沒有關(guān)聯(lián)彈幕和播放時(shí)間,但要實(shí)現(xiàn)最基本的彈幕效果(比如后進(jìn)來的人看不到他進(jìn)來之前的彈幕)主要是在接口上做的處理览效。接口中有兩個(gè)重要參數(shù):一個(gè)是開始播放視頻的當(dāng)前時(shí)間戳却舀,另一個(gè)是最后一條彈幕的id,這兩個(gè)參數(shù)保證了在循環(huán)調(diào)用接口時(shí)顯示在屏幕上的彈幕的正常邏輯锤灿。
說幾個(gè)要注意的:
播放器的初始化寫在了按鈕的響應(yīng)事件里挽拔,傳入需要的參數(shù)和鏈接,目前為空但校,為了避免崩潰螃诅,彈幕用的是測試數(shù)據(jù)。
正式的是我封裝的一個(gè)請(qǐng)求方法,根據(jù)接口來做處理的:
如果是push進(jìn)去的一個(gè)播放器來播放視頻和彈幕术裸,因?yàn)槭嵌〞r(shí)器循環(huán)調(diào)用接口倘是,退出時(shí)如果不銷毀定時(shí)去,當(dāng)前視圖也不會(huì)dealloc穗椅,我是在前一個(gè)控制器中辨绊,把寫成屬性的定時(shí)器銷毀:
-(void)viewDidDisappear:(BOOL)animated{
[self.player.rendererstop];
[self.player.danmuTimerinvalidate];
//測試定時(shí)器
[self.player.timerinvalidate];
}
最后附上demo鏈接:
github.com/hsshuaigit/HSRepository
忘了效果圖: