php+js实现弹幕,基于HTML5的有弹幕功能的视频播放器

如何使用

Danmmu Player需要依赖jQuery,因此首先需要加入相关css和js文件。

接下来,在body中需要放置播放器的位置加入如下代码:

最后,关键的部分,配置参数,调用插件。

$("#danmup").DanmuPlayer({

src: "abc.mp4", //视频源

height: "480px", //区域的高度

width: "800px", //区域的宽度

urlToGetDanmu:"getData.php", //从后端获取弹幕数据

urlToPostDanmu:"sendData.php" //发送弹幕数据给后端保存入库

});

好了,现在可以运行你的弹幕播放器了,当然,如果不用与后端交互,则可以不使用urlToGetDanmu和urlToPostDanmu两个参数,直接在页面中加入初始数据,如:

$("#danmup .danmu-div").danmu("addDanmu",[

{ "text":"这是滚动弹幕" ,color:"white",size:1,position:0,time:2},

{ "text":"我是帽子绿" ,color:"green",size:1,position:0,time:3},

{ "text":"哈哈哈啊哈" ,color:"#f30",size:1,position:0,time:10},

{ "text":"大家好,我是打不死的小强" ,color:"orange",size:1,position:0,time:23}

]);

Danmmu Player的addDanmu方法是将弹幕内容追加到屏幕中,看清楚了,这是一串json格式的数据,其中:

text——弹幕文本内容

color——弹幕颜色。

position——弹幕位置 0为滚动 1 为顶部 2为底部

size——弹幕文字大小。 0为小字 1为大字

time——弹幕所出现的时间。 单位为分秒(十分之一秒)

isnew——当出现该属性时(属性值可为任意),会认为这是用户新发的弹幕,从而弹幕在显示的时候会有边框。

在实例中,我简化了操作界面,去掉了文本颜色、大小、位置等参数的设置,以及透明度等设置,只留下几个主要功能按钮。

与后端交互

实际项目应用时,我们会将前端操作与后端对接,将发送的弹幕内容不仅要显示在屏幕上,还要存储到后台数据库中。当然数据库类型可以根据项目需求确定。你可以使用MySQL,甚至也可以使用文本文件来保存数据。本文实例中后端采用PHP+MySQL来实现弹幕内容的读取和保存。

getData.php是用来从后端获取弹幕数据的。我们知道,在用户打开播放视频的时候,已经有人发表过弹幕内容了,这些内容是已经存在数据库中的了,我们需要将这些数据读取并显示在视频播放器屏幕上。

include_once('connect.php'); //连接数据库

$json = '[';

$query = mysql_query("select * from danmu");

while($row=mysql_fetch_array($query)){

$json .= $row['content'].',';

}

$json = substr($json,0,-1);

$json .= ']';

echo $json;

数据表danmu的字段结构以及连接数据库文件connect.php请大家下载源码包可以查看。

sendData.php用来接收前端post过来的弹幕内容数据,并将数据保存到数据表中。

include_once('connect.php'); //连接数据库

$danmu=strip_tags($_POST['danmu']);

$addtime = time();

$sql="INSERT INTO `danmu`(`id`,`content`,`addtime`) VALUES (null,'$danmu','$addtime')"; $query=mysql_query($sql); mysql_close();

其实你也可以将post上来的数据进行拆分,将数据表多设几个字段用来保存不同的属性,如内容、颜色、字体大小等,然后在getData.php读取的时候就比较灵活了,直接json_encode()就可以输出数据了。

首先,这个插件并不是傻瓜式安装的,很多东西需要自己去调试,以下只给有一定基础的人,所以纯伸手党就不用看了 申明: 弹幕的接收和发送的最初源码来自此贴: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及其他论坛也是可以整合的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值