項(xiàng)目需要用循環(huán)調(diào)用接口的方法實(shí)現(xiàn)播放視頻彈幕(不要問(wèn)為什么,領(lǐng)導(dǎo)讓的),新手寫(xiě)的不太好,只是簡(jiǎn)單的實(shí)現(xiàn)總結(jié)一下。
先推薦兩個(gè)庫(kù):
開(kāi)源彈幕庫(kù):github.com/unash/BarrageRenderer
一個(gè)不錯(cuò)的開(kāi)源播放器:github.com/guowilling/SRVideoPlayer
因?yàn)轫?xiàng)目做的是直播,沒(méi)有關(guān)聯(lián)彈幕和播放時(shí)間,但要實(shí)現(xiàn)最基本的彈幕效果(比如后進(jìn)來(lái)的人看不到他進(jìn)來(lái)之前的彈幕)主要是在接口上做的處理。接口中有兩個(gè)重要參數(shù):一個(gè)是開(kāi)始播放視頻的當(dāng)前時(shí)間戳,另一個(gè)是最后一條彈幕的id,這兩個(gè)參數(shù)保證了在循環(huán)調(diào)用接口時(shí)顯示在屏幕上的彈幕的正常邏輯。
說(shuō)幾個(gè)要注意的:

播放器的初始化寫(xiě)在了按鈕的響應(yīng)事件里,傳入需要的參數(shù)和鏈接,目前為空,為了避免崩潰,彈幕用的是測(cè)試數(shù)據(jù)。

正式的是我封裝的一個(gè)請(qǐng)求方法,根據(jù)接口來(lái)做處理的:

如果是push進(jìn)去的一個(gè)播放器來(lái)播放視頻和彈幕,因?yàn)槭嵌〞r(shí)器循環(huán)調(diào)用接口,退出時(shí)如果不銷毀定時(shí)去,當(dāng)前視圖也不會(huì)dealloc,我是在前一個(gè)控制器中,把寫(xiě)成屬性的定時(shí)器銷毀:
-(void)viewDidDisappear:(BOOL)animated{
[self.player.rendererstop];
[self.player.danmuTimerinvalidate];
//測(cè)試定時(shí)器
[self.player.timerinvalidate];
}
最后附上demo鏈接:
github.com/hsshuaigit/HSRepository
忘了效果圖:
