iOS端彈幕相關(guān)調(diào)研

目前主流的視頻網(wǎng)站均支持了彈幕功能,調(diào)研了一下移動端彈幕實現(xiàn)的主要方向,B站貌似提供了DanmakuFlame框架,但不知道為什么我在Github上沒有找到對應的iOS版本。
我在Github上查看到的最全面的框架是:BarrageRenderer
我在開發(fā)自己的彈幕框架時有些標準參考了這個框架,最終進行性能對比的測試也是與這個框架進行了對比。雖然這個框架的完成度已經(jīng)比較高了,但我認為還有一些值得優(yōu)化的點。

框架的主要構(gòu)成

  • 目前主流的實現(xiàn)一般采用 播放器->軌道->彈幕 這樣的三層結(jié)構(gòu)劃分彈幕框架,使用時將彈幕信息傳入播放器,播放器分配軌道,軌道播放彈幕。

  • 在我自己的實現(xiàn)中增加了幾個部件,這個結(jié)構(gòu)變成了:播放器->軌道組->分發(fā)器->軌道控制器->軌道->彈幕。

  • 新增了軌道組、分發(fā)器、軌道控制器三個角色來提供更多樣豐富的功能。

技術(shù)選擇

根據(jù)我的調(diào)研結(jié)果,iOS端目前實現(xiàn)彈幕的動畫手段有UIViewAnimation和CADisplayLink兩種,根據(jù)我個人的主觀意志對比一下優(yōu)劣:

A.UIViewAnimation:
優(yōu)點:
1.調(diào)用簡單,直接規(guī)定初末狀態(tài)就可以實現(xiàn)。
2.據(jù)說CoreAnimation執(zhí)行的效率比直接使用CADisplayLink要好(我自己沒有證實過)。
缺點:
1.無法規(guī)定彈幕軌跡,對彈幕運動的細節(jié)缺少控制,因此這種實現(xiàn)方式能實現(xiàn)的彈幕形態(tài)比較單一。
2.貌似只有UIView會有animatedWith接口,不能使用CALayer,這可能會導致它的性能瓶頸比CADisplayLink略低一些(這個與優(yōu)點的2不沖突,優(yōu)點2的對比條件應該是兩種都使用UIView做動畫)。
3.如果你希望視頻暫停是彈幕停在屏幕中不動,UIViewAnimation可能做不到。

B.CADisplayLink
優(yōu)點:
1.可以定義彈幕動畫的任意一處細節(jié),同樣是從A點移動到B點,CADisplayLink可以定義曲線,而UIViewAnimation只能定義直線(也可能有方法我不知道)。
2.CADisplayLink不依賴UI組件,所以彈幕的變化可以不局限于UI變化,甚至可以在變化中不斷更換Model或者文案。
缺點:
1.實現(xiàn)起來確實沒有UIAnimationView容易。

總之,UIViewAnimation是一套快捷簡便的方案,但支持的彈幕種類、彈幕控制方面有一定局限;CADisplayLink則必定伴隨一套大而全的彈幕機制,其提供的回報也是豐富的,我們可以精準控制到彈幕播放中的每一處細節(jié)。
結(jié)論:不論使用哪種方式,表現(xiàn)給使用者的便捷性和拓展性都應當是一致的,所擇CAdisplayLink來實現(xiàn)能提供能豐富的功能,至于實現(xiàn)復雜性,F(xiàn)rame就是為了解決這些復雜性存在的。

附上自身實現(xiàn)的一個彈幕組件:
LNDanmakuMaster

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

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

  • 用到的組件 1、通過CocoaPods安裝 2、第三方類庫安裝 3、第三方服務 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 15,206評論 1 180
  • 版本記錄 前言 在我們做直播等視頻類app的時候,總是有顯示和發(fā)送彈幕的要求,彈幕可以方便用戶進行溝通和互動,增加...
    刀客傳奇閱讀 5,486評論 8 16
  • LNDanmakuMaster是一個輕量的彈幕播放器,通過:創(chuàng)建播放器->創(chuàng)建軌道->添加彈幕的方式進行彈幕播放,...
    BangRaJun閱讀 3,217評論 2 9
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學鈴聲...
    飄雪兒5閱讀 7,868評論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    余生動聽閱讀 10,918評論 0 11

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