使用b站開源彈幕引擎實現炫酷的彈幕效果

2021-07-27 11:42:50 字數 2933 閱讀 8092

現在各大視屏**都有了彈幕功能,但顯示效果最好的非b站莫屬了。如果你也想擁有和b站一樣炫酷的彈幕效果,那麼就跟著我來一步步實現。

首先放上位址

使用也很簡單

repositories 

dependencies

到這裡我們就將庫匯入了as了,接下來就是真正的使用。

.flame

.danmaku

.ui.widget

.danmakuview

android:id="@+id/danmaku_view"

android:layout_width="match_parent"

android:layout_height="match_parent" />

用來承載彈幕顯示的布局,有了布局就可以去實現**了,一些方法我也都標上了注釋。

//初始化彈幕層

public

void

initdanmaku()

@override

public

void

updatetimer(danmakutimer timer)

@override

public

void

danmakushown(basedanmaku danmaku)

@override

public

void

drawingfinished()

});//彈幕解析器,如不想使用使用xml格式的可以以自己定義或缺省

// mparser = new basedanmakuparser()

// };

mparser = createparser(this.getresources().openrawresource(r.raw.comments));

mdanmakuview.showfps(true);//顯示fps

mdanmakuview.enabledanmakudrawingcache(true);//顯示彈幕繪製緩衝

mdanmakuview.prepare(mparser, mdanmakucontext);}}

b站的彈幕使用的是xml格式儲存的,而a站的彈幕使用的是json格式,如果你也準備使用xml格式可以借鑑b站的解析方式,而或者這兩種格式你都不使用的話,可以使用預設的彈幕解析器。

mparser = new basedanmakuparser() 

};

接下來需要建立彈幕解析器,用來解析不同格式的彈幕,如前面所說,你的彈幕格式是xml或json就需要這一步。

//建立解析器物件,解析輸入流

private basedanmakuparser createparser(inputstream stream) };}

xml解析

json檔案格式解析

iloader loader = danmakuloade***ctory.create(danmakuloade***ctory.tag_bili);

try catch (illegaldataexception e)

basedanmakuparser parser = new bilidanmukuparser();

idatasource> datasource = loader.getdatasource();

parser.load(datasource);

return parser;

}

彈幕解析器的主要作用是接受從伺服器傳來的彈幕檔案,解析後將其一一展示出來,那麼我們發出去的彈幕則需要乙個單獨的方法來實現彈幕的傳送,在這一步你可以對傳送的彈幕進行個性化定製。

//新增彈幕

public

void

adddanmaku(boolean islive, string msg, boolean isus)

danmaku.text = msg;//彈幕內容

danmaku.padding = 5;

danmaku.priority = 1;//0 表示可能會被各種過濾器過濾並隱藏顯示 1 表示一定會顯示, 一般用於本機傳送的彈幕

danmaku.islive = islive; //是否是直播彈幕

danmaku.settime(mdanmakuview.getcurrenttime() + 1200); //顯示時間

danmaku.textsize = 18f * (mparser.getdisplayer().getdensity() - 0.6f); //字型大小

danmaku.textcolor = color.white;

danmaku.textshadowcolor = color.parsecolor("#333333");// 陰影顏色,可防止白色字型在白色背景下不可見

if (isus)

danmaku.bordercolor = color.yellow; //對於自己傳送的彈幕可以加框顯示,0表示無邊框

mdanmakuview.adddanmaku(danmaku);

}

有了傳送彈幕的方法,那我們當然也得有接收彈幕的布局,在這裡我是用popupwindow來實現,你可以去使用你習慣的方式。來看看我們要實現的布局

B站開源ijkplayer 等多個專案

danmakuflamemaster danmakuflamemaster,android 上開源彈幕解析繪製引擎專案,實現的特性有 移除 ffmpeg 中不常用的特性以減小體積。支援安卓 api 9 22 和 ios 5.1.1 8.3.x 使用各種平台原生的渲染方式進行優化 技術上,ijkpla...

python實現b站直播自動傳送彈幕功能

python 3.6 pycharm import requests import time from tkinter import import random 首先你要登陸b站賬號,然後隨便點選乙個直播間,這裡建議先選擇人氣少的,彈幕少的,這樣方便檢視效果 如上圖所示先開啟開發者工具,定位到xhr...

開源網遊引擎kbengine的使用

從還沒參加工作,我就對遊戲的製作很有興趣,到參加工作,和我師兄通宵蟲很投緣,我們都想製作出一款帶大型的網路遊戲,但由於我們工作平台的限制,無法如願,不過還是做出了幾個單擊遊戲的作品。其實回想起來,我們想製作的不是遊戲,而是乙個世界,更是乙個現實無法給與我們的憧憬。由於我們這方面的積累空白,我打算從開...