DanmakuFlameMaster无缝续播弹幕的实现
来源:互联网 发布:marjakurki知乎 编辑:程序博客网 时间:2024/04/27 05:05
问题描述:
我现在的弹幕文件每五分钟一个xml文件,当播放完当前的弹幕时,播放下一个需要重新加载数据并且解析,然后呈现。这个过程大概需要5-7秒,这样给用户的感觉是弹幕断了。
现在的需求是弹幕切换的时候,无缝续播,让用户感觉不到我再切换弹幕文件,这样该如何做呢,目前毫无头绪。
解决方法:
首先,mDanmakuView是个单例的模式,如果弹幕正在播放的时候,我调用prepare()去加载新的弹幕内容时,会造成当前播放弹幕的暂停和卡顿,这个和需求是不一致的。
所以需要再工作线程开启数据的解析和配置,具体代码如下:
mDanmakuView.setCallback(new DrawHandler.Callback() { @Override public void updateTimer(DanmakuTimer timer) {
//在mDanmakuView的回调方法处,调用异步任务的解析任务,这样不会阻塞主线程。 if (timer.currMillisecond >= 290000 && timer.currMillisecond <= 291000 && flag == 0) { createParser(); flag = 1; thread.start(); } } @Override public void drawingFinished() { Log.e("DFM", "drawingFinished 第一个CallBack"); } @Override public void danmakuShown(BaseDanmaku danmaku) { } @Override public void prepared() { Toast.makeText(MainActivity.this, "弹幕准备完成", Toast.LENGTH_SHORT).show();// mDanmakuView.start(); } });
//这个是为了将parser的数据指定为新的弹幕数据源。
public void createParser() { parserParam = createParser(this.getResources().openRawResource(R.raw.danmu5_10));}//这个是为了在工作线程中配置弹幕数据,首先构建一个加载了新的弹幕内容的Danmakus实例,然后遍历该实体并且依次取出其中的弹幕数据,通过addDanmaku()方法依次添加弹幕到mDanmakuView里面,注意,这里会在某个瞬间执行遍历方法,所以放到工作线程比较合适,不然会阻塞主线程。Thread thread = new Thread(new Runnable() { @Override public void run() { Danmakus danmakus = (Danmakus) parserParam. setConfig(mContext). setDisplayer(((DrawTask) ((DanmakuSurfaceView) mDanmakuView).getHandler().getDrawTask()).getmDisp()). setTimer(((DrawTask) ((DanmakuSurfaceView) mDanmakuView).getHandler().getDrawTask()).getmTimer()).getDanmakus(); if (danmakus != null && danmakus.items != null) { Iterator<BaseDanmaku> iterator = danmakus.items.iterator(); while (iterator.hasNext()) { mDanmakuView.addDanmaku(iterator.next()); } } }});这样就可以实现弹幕的无缝续播。
0 0
- DanmakuFlameMaster无缝续播弹幕的实现
- Android 弹幕的实现DanmakuFlameMaster
- 弹幕的开发(DanmakuFlameMaster)
- 使用DanmakuFlameMaster实现弹幕效果
- jquery实现轮播图的无缝轮播
- 利用 CSS3 实现的无缝轮播
- 实现无缝轮播
- 最强大的视频弹幕引擎——烈焰弹幕使(DanmakuFlameMaster)使用指南
- 一个样式看起来比较丰富的弹幕demo。使用了DanmakuFlameMaster弹幕引擎
- js 无缝轮播实现
- H5C3实现无缝轮播
- jq 实现无缝轮播
- jquery实现无缝轮播
- js实现无缝轮播
- 无缝广告轮播的制作有哪些技术实现
- jQuery+CSS3实现图片的无缝轮播
- js实现图片的无缝轮播滚动
- react-native实现的无缝轮播demo
- Glide 使用
- Redis Cluster集群的搭建与实践
- 简易线程池实现
- UIButton之 setBackgroundImage 和setImage区别 跟UIButton的文字却不显示
- 浅谈垂直居中
- DanmakuFlameMaster无缝续播弹幕的实现
- 跨域请求解决方案之--JSONP
- UIView转换成UIView
- GFOJ problem 470: [HbFS-]Red is good 解题报告
- WPF UserControl弹出子窗口切换界面时消失
- js基本类型 引用类型 简单赋值 对象引用
- SAP HR Schema 详解(一)Payroll schema基础
- JAVA RPC:从上手到爱不释手
- 记录2