弹幕播放器【在项目中对弹幕播放器一些零碎的整理】

项目地址:

https://github.com/Bilibili/DanmakuFlameMaster

 

 

DanmakuFlameMaster

 

android上开源弹幕解析绘制引擎项目。

 

ijkplayer,提供 Android和 iOS双平台视频播放器的解决方案。

项目地址:https://github.com/Bilibili/ijkplayer

 

这两个开源项目已被优酷土豆、ACFUN等知名app使用

 

Features

 

  • 使用多种方式(View/SurfaceView/TextureView)实现高效绘制

     

  • B站xml弹幕格式解析

     

  • 基础弹幕精确还原绘制

     

  • 支持mode7特殊弹幕

     

  • 多核机型优化,高效的预缓存机制

     

  • 支持多种显示效果选项实时切换

     

  • 实时弹幕显示支持

     

  • 换行弹幕支持/运动弹幕支持

     

  • 支持自定义字体

     

  • 支持多种弹幕参数设置

     

  • 支持多种方式的弹幕屏蔽

 

TODO:

 

  • 继续精确/稳定绘帧周期

     

  • 增加OpenGL ES绘制方式

     

  • 改进缓存策略和效率

     

     

     

    http://www.jq22.com/jquery-info2611

     

    DanmuPlayer

    这个已经有用户布过了。Danmmu Player是一个具备弹幕功能的Html5视频播放器。 具备弹幕视频播放,接受用户发送彩色弹幕,实时调解弹幕显示效果等功能。 Danmmu Player意在使开发者能便捷的在网站中实现弹幕视频播放。

    开始使用

    1.第一步引入本播放器的js和css文件,需要和jQuery一起引用。
    <link rel="stylesheet" href="assets/DanmuPlayer/css/danmuplayer.css">
        <script src="assets/js/jquery-1.11.1.min.js"></script>
    <script src="assets/DanmuPlayer/js/danmuplayer.js"></script>
    2.新建一个div,这里把id值设为danmp
    <div id="danmup"></div>
    3.初始化DanmuPlayer,利用刚才新建的div.
    $("#danmup").danmuplayer({
      src:"shsn.mp4",       //视频源
      width:800,            //视频宽度
      height:445            //视频高度
    });好了,已经可以在页面上看到播放器。试着发下弹幕,也OK。
    等等,现在用户发的弹幕貌似没有写入数据库,也就是说是一次性的,刷新页面后就没了?是这样的,但是接下来就告诉你可以怎么做。

    进阶使用

    4.在上一步中,我们用调用某jQuery对象的方法初始化了一个弹幕播放器,并传递了一些参数(src,width,height)。其实这个方法具有以下参数 (除了视频源外其余参数均可选,冒号后面的为默认值)
    
    src: "shsn.mp4",        //视频源
    height: 450,             //播放器的高度
    width: 800,             //播放器的宽度,最小宽度支持为720
    speed: 20000,           //弹幕速度,穿过视频的毫秒数 
    danmuss: {},            //默认的danmuss对象(稍后介绍)
    default_font_color: "#FFFFFF",  //默认的弹幕颜色
    font_size_small: 16,            小号弹幕的字体大小,注意此属性值只能是整数
    font_size_big:28,           //大号弹幕的字体大小 
    opacity: "1",               //默认弹幕的透明度
    top_botton_danmu_time: 6000,    //底部及顶部弹幕存留的世界
    url_to_get_danmu: "",               //用来接收弹幕信息的url  (稍后介绍)
    url_to_post_danmu: ""               //用来存储弹幕信息的url  (稍后介绍)
    
    
    5.在这一节中,向米娜桑介绍DanmuPlayer中的两种js对象,danmu对象及danmuss对象。
    danmu对象意指具体某一条弹幕及起信息,它有如下属性:
    text——弹幕文本内容。 
    color——弹幕颜色。 position——弹幕位置 “0”为滚动 “1” 为顶部 “2”为底部 
    size——弹幕文字大小。 “0”为小字 ”1”为大字
    time——弹幕所出现的时间。 单位为”分秒“(及1/10秒,100毫秒)
    isnew——当出现该属性时(属性值科委任意),会认为这是用户新发的弹幕,从而弹幕在显示的时候会有边框。
     
    举例:
     var a_danmu={ "text":"2333333" , "color":"green" ,"size":"1","position":"0","time":60}; 
    要显示边框的新弹幕:
    var a_danmu={ "text":"2333333" , "color":"green" ,"size":"1","position":"0","time":60 ,"isnew":" "}; 
    
    danmuss对象是该弹幕视频中所有danmu对象的集合,它的存在是为了提高程序的效率。
    每个DanmuPlayer只有一个duamss对象。DanmuPlayer在运行时会把每个danmu对象写入danmuss对象。
    dammuss对象每个属性的名称为弹幕所出现的时间点(分秒),属性值为该时间点所出现的所有弹幕的danmu对象(除掉time属性的)所组成的数组。
    例如:
    var danmuss={ 1:[ { "text":"hahahaha" , "color":"red" ,"size":"0","position":"0"}, 
    { "text":"233333" , "color":"red" ,"size":"0","position":"2"} ],
     3:[ { "text":"poi" , "color":"red" ,"size":"1","position":"1"}, 
    { "text":"2333" , "color":"#FFFFFF" ,"size":"0","position":"0"} ],
     50:[ { "text":"XXX真好" , "color":"#FFFFFF" ,"size":"0","position":"2"}, ] };
    
     在初始化DanmuPlayer时有个可选的参数danmuss,它的值就应该是一个合法的danmuss对象。有了这个参数,DanmuPlayer会把这个参数值中的dannuss播放于屏幕。(对于danmuss对象,如果暂时不理解可以绕过,很少用到)
    6.在这一节中,告诉米娜桑如何和后端连接将弹幕存储于数据库。DanmuPlayer提供了高度封装的和后端ajax交互的接口,你只需按照接口修改出一个或两个后端页面即可。
    
    在初始化DanmuPlayer时,两个参数url_to_get_danmu和url_to_post_danmu就是用来和后端连接的。url_to_get_danmu用来获取弹幕,url_to_post_danmu用来存储弹幕。url_to_get_danmu和url_to_post_danmu接受的参数都是url。
    
    DanmuPlayer在页面载入时,会向url_to_get_danmu所对应的页面发送Get请求,url_to_get_danmu对应页面的http响应报文的内容中应该是一个由danmu对象组成的js数组(字符串形式)。"['{danmmu对象1}','{danmu对象2}',...,'{danmu对象n}']"这样的字符串(遵循JSON格式标准)(在报文中是没有最外面的引号的)(注意:每个danmu对象都要被引号所包裹,否则会产生致命错误)。
    当用户发弹幕时,DanmuPlayer向url_to_post_danmu发送post请求,报文的内容是用户所发弹幕的danmu对象(字符串)(遵循JSON格式标准)。
    
    在demo&doc目录中有一个简单的php版的url_to_get_danmu和url_to_post_danmu所对应页面的编写示例:
    7.DanmuPlayer中有一个id为danmu的标签(这句话可以不用理,详情请参照jQuery.danmu.js项目)。可以直接复制以下代码语句去即时的操作弹幕:
    
    暂停弹幕:$('#danmu').danmu('danmu_pause'); 暂停后继续:$('#danmu').danmu('danmu_resume'); 停止弹幕:
    $('#danmu').danmu('danmu_stop');  即时增加弹幕:$('#danmu').danmu("add_danmu",新弹幕的danmu类型对象); 获取弹幕运行的当前时间(单位为分秒):$('#danmu').data("nowtime"); 设置弹幕运行的当前时间(单位为分秒):$('#danmu').data("nowtime",新时间)  更改弹幕透明度:$(#danmu).data("opacity",新透明度数值);是否处于暂停状态:$('#danmu').data("paused");

    其他方法

    8.由于DanmuPlayer基于video.js编写,故几乎所有的video.js接口都可用于DanmuPlayer。
    video.js项目及文档地址:https://github.com/videojs/video.js/
    DanmuPlayer在内部定义了一个名字叫做danmu_video的全局videojs对象,可以对danmu_video使用video.js的任何方法及相应事件处理等。
    9.注意:由于DanmuPlayer内部组件命名的规范性,它几乎可以与其他任何前端插件共存。但是,一个页面上只允许存在一个DanmuPlayer。此缺陷在后续版本或许会改进。如果你需要在一个页面中使用多个DanmuPlayer,可以使用frame标签。

    许可

    你可以随意使用本项目,只需要在您的项目中添加这么一行注释:
    DanmuPlayer (//github.com/chiruom/danmuplayer/) - Licensed under the MIT license
     

     

     

相关项目信息:

http://app.hezhibo.com:8080/Video/index.html

153531_Tflr_240535.png

http://app.hezhibo.com:8080/Video/hlsplayer/share2.html

http://192.168.1.127:8080/ShareServer/danmuplayer/share.html

https://github.com/chiruom/DanmuPlayer

http://media.isafe365.cn:8080/play/000200065690101_32010020160523140319753100eum9xj.mp4.m3u8

http://app.isafe365.cn:8000/ShareServer/pageServer?version=1.0&data=aHR0cDovL21lZGlhLmlzYWZlMzY1LmNuOjgwODAvcGxheS8wMDAyMDAwNjU2OTAxMDFfMzIwMTAwMjAxNjA1MjMxNDAzMTk3NTMxMDBldW05eGoubXA0Lm0zdTg=

 

http://media.isafe365.cn:8080/download/000200065690101_32010020160523140319753100eum9xj.mp4

http://112.4.28.209:8000/live/1000.m3u8

https://bce.baidu.com/product/lss.html

out.println("{\"img\":\"http://i1.hdslb.com/bfs/archive/7e1e76c24f94a53bea3feea09afabd8842ae719d.jpg\",\"cid\":\"http://comment.bilibili.com/7639962.xml\",\"src\":\"http://cn-zjwz5-dx.acgvideo.com/vg6/8/7b/7639962-1.mp4?expires=1464111900&ssig=tp_JaHvlYA4TD0B9LChaJw&oi=1968716518&internal=1&rate=0\"}");

{"img":"http://i1.hdslb.com/bfs/archive/7e1e76c24f94a53bea3feea09afabd8842ae719d.jpg","cid":"http://comment.bilibili.com/7639962.xml","src":"http://cn-zjwz5-dx.acgvideo.com/vg6/8/7b/7639962-1.mp4?expires=1464111900&ssig=tp_JaHvlYA4TD0B9LChaJw&oi=1968716518&internal=1&rate=0"}

http://www.bilibili.com/m/html5?aid=4709464&page=1

http://192.168.1.127:8080/m/html5?aid=4709464&page=1 

http://192.168.1.127:8080/BPC/a.html

192.168.1.241:8760/BPC/sharePageUrl?sharePageUrl=aHR0cDovLzExMi40LjI4LjIwOTo4MC92b2QvbWVkaWEyMS8yMDE1MTAyOTE3MzIwMzgyMF8xODcyay5tcDQubTN1OD90aW1lc3RhbXA9MjAxNjA2MjIxNTQzMDkmZW5jcnlwdD1hZWZjMzVhMzFiZmQ2NmZmNWViYTY2NDAzMmQyYTg0MCZzdF9zb3VyY2VpZD1uaXA5cGRpYWR0dXQxdmRzYnltaGdzc3RocG92ZngxZg==

http://192.168.1.241:8760/BPC/sharePageUrlDm?sharePageUrl=aHR0cDovLzExMi40LjI4LjIwOTo4MC92b2QvbWVkaWEyMS8yMDE1MTAyOTE3MzIwMzgyMF8xODcyay5tcDQubTN1OD90aW1lc3RhbXA9MjAxNjA2MjIxNTQzMDkmZW5jcnlwdD1hZWZjMzVhMzFiZmQ2NmZmNWViYTY2NDAzMmQyYTg0MCZzdF9zb3VyY2VpZD1uaXA5cGRpYWR0dXQxdmRzYnltaGdzc3RocG92ZngxZg==

 

转载于:https://my.oschina.net/yizhichao/blog/838485

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,这个插件并不是傻瓜式安装的,很多东西需要自己去调试,以下只给有一定基础的人,所以纯伸手党就不用看了 申明: 幕的接收和发送的最初源码来自此贴:http://www.discuz.net/thread-2499499-1-1.html 注: 下载后发现问题很多,所以我自己修改了一遍,剔除了代码的大部分不合理的地方加入了控制最大幕数的,编码GBK测试无问题,utf-8未测试(应该是不会有问题的)。 此源码为最初版,后来还重写了记录吐槽者IP、整合至视频展厅以及管理幕的简易后台,根据情况我在开放下载吧 播放器使用的是mukioplayer:http://code.google.com/p/mukioplayer/ 如果你要转载下面的内容,那么请注明原帖地址 --------------------------------------------我是分割线-------------------------------------------- 源码下载(内含v1.150mukioplayer): 2012-04-25第3次更新 1.追加简易后台管理一枚 2012-04-17第2次更新 1.修正了无法正确保存ZOOME字幕的问题 2012-04-05第1次更新 1.增加一个外置幕列表的播放器可自由选择任意一个使用 2.修改了php的引用代码和php默认不支持的函数 3.其他已知的问题 下载后需要编辑2个配置文件: 一.在config.php设置你的数据库连接和可控制的最大幕数。 注:数据库填写的信息和你安装论坛时填写的一样,如果你是独立主机那么可以建立一个专门的MYSQL用户操作幕表,加强安全性 二.在conf.xml设置播放器的接收和发送URL地址。  1.post.php为接收从传入参数的  2.xml.php为生成幕文件的 三.关于后台:  1.可以更改admin这个文件夹名字来隐藏后台路径提高安全性  2.使用前请先配置后台文件夹的admin.php后台基本设定,具体规则参见每行的注释  3.后台访问路径既:http://你的域名/bplayer/后台文件夹名称/admin.php 配置完成后把文件夹上传到根目录即可 --------------------------------------------我是分割线-------------------------------------------- 进入后台 - 站长 - 数据库 - 升级运行以下SQL语句: CREATE TABLE IF NOT EXISTS `tm_comment` ( `ID` int(12) NOT NULL auto_increment, `playerID` varchar(15) default NULL, `message` text, `color` varchar(12) default NULL, `fontsize` varchar(12) default NULL, `playtime` varchar(12) default NULL, `mode` varchar(12) default NULL, `times` datetime default NULL, KEY `ID` (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ; --------------------------------------------我是分割线-------------------------------------------- 在看到后台的界面 - 编辑器设置 - Discuz! 代码,新增一个标签,名称随意,这里我们就用iplay,添加后点击详情,在替换内容添加如下代码: <embed width='800' height='353' quality='high' allowfullscreen='true' type='application/x-shockwave-flash' src='http://你的域名/bplayer/mukioplayer.swf?type={1}&vid;={2}'='http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash'/> 复制代码 例子添加代码:[iplay={1}]{2}[/iplay] 解释:添加播放器 参数个数:2 参数提示语: 视频类型 视频的ID 镶套次数:1 允许使用的用户组根据自己论坛的情况而定即可 --------------------------------------------我是分割线-------------------------------------------- 完毕,在帖子使用 [iplay=视频类型]视频ID[/iplay] 就可以添加一个播放器测试了。 视频类型解释 : 新浪 sina或者video都可以 优酷 youku 新发现: QQ视频 qq (测试可用) 6间房 6room (未测试) 视频ID解释 : 例如一个视频地址是新浪的 http://you.video.sina.com.cn/b/25323843-1272884840.html 那么 - 前面的25323843 这个值就是这个视频的ID 优酷的话 http://v.youku.com/v_show/id_XMzIzNjA2NjE2.html 就是id_至.html间的XMzIzNjA2NjE2 --------------------------------------------我是分割线-------------------------------------------- 播放器提示评论文件加载失败或者发送失败,但是幕可以正确保存到数据库的解决方法: 打开config.php,复制全部内容(已经配置好了数据库信息的),在打开xml.php,选require 'config.php';,粘贴全部内容,保存。 某些linx服务器会出现此问题,临时用这个方法解决,暂时没有找到php生成xml不能包含其他文件的原因 --------------------------------------------我是分割线-------------------------------------------- 关于播放器侧边栏问题,压缩包里还有一个mukioplayer1.swf文件,将此文件与mukioplayer.swf替换,即可显示侧边栏 --------------------------------------------我是分割线-------------------------------------------- 总结:实现了基本的幕存储功能,但是管理很麻烦,而且安全性也有待加强,字段类型也弄的很随便,期待有强人来完善 若有问题可回帖,有时间我会回答,但不一定每个都回答(只针对本帖的内容和源码,在其他地方下的别问我) 此幕并不仅限DISCUZ论坛,PHPWIND及其他论坛也是可以整合的
AcFun.cn是国内一家仿niconico的视频网站,以其幕闻名。但网站并没有提供下载视频及幕的方法,通过浏览器以及其它的嗅探器可以得到下载地址,但是十分繁琐,且下载下来在本地很难播放,虽然有一些网友做了基于flash的本地播放器,但其效率和方便性皆不尽人意。 你还在为不能下载保存AcFun网站上的视频和幕苦恼吗?你还在为不能本地播放幕伤心吗?你还在为神字幕被破坏不能再次欣赏到而后悔吗?赶快试试AcFun视频字幕下载转换器,它是一款由网友自发编写的绿色无公害的免费软件。 功能特点: 根据提供的acfun视频网页地址,自动分析视频地址及字幕地址,并将其下载到指定位置 分析acfun幕格式,并将其转换为视觉效果基本相同的ssa字幕文件,可以由vobsub播放器插件加载 可以仅转换本地以前保存下来的acfun格式的字幕文件 所有处理过程清晰明了,有进度条显示 可以仅下载字幕,不下载视频 可以仅转换某些模式类别的幕,忽略掉没用的评论 具有下载列表,在下载过程可以随时添加新任务 可以一次转换本地保存的多个文件 v2.004 - 20100125 增加修复flv本地视频功能,可以消除由于加载h263头导致不能播放的问题,也可以去除加入在视频前面的前置黑屏 增加下载时自动修复视频功能 增加修复选项设置,与下载时是否自动修复选项设置  修改了程序窗口标题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值