个人弹幕站

这是弹幕播放器个人版的说明页面

本版本由于存在太多垃圾代码,并且机制有一定缺陷,已废弃,源码保留于1.0Tag,请移步功能较为相近的简易弹幕站

一般来说想用它做大型站点的都可以放弃了,这是它的结构决定的,支撑不起大型站点(但是可以参考哦)。

在这里还要再三强调,这是个人弹幕站,不要妄图让我加上什么账号系统。一般用处就是个人摆自己视频用的。不对其他用途提供技术支持。

安装

你的环境需要符合以下条件:

  • PHP版本>=5.4    (不符合会无法加载视频和弹幕)

不支持.htaccess文件的服禁搭,否则会有严重后果。 请给backup文件夹设置620权限或保证此文件夹不会被他人访问到。

获取

你可以随时从上面版本说明中的两个Github地址(谁敢用第二个)获取最新的站点代码。 通过点击旁边的“下载zip”按钮可以下载到完整的源码,然后上传到你的服务器部署好。 或者直接使用git clone 命令把源码克隆到服务器上,如果你有能力的话,还可以直接用git命令来更新站点。(反正我是没这能力,不管怎么样都会冲突)

配置

安顿好所有文件以后就可以开始配置了,你需要在安顿站点的目录(目前已经支持放在网站子目录里了)创建一个config.php,内容像下面这样

<?php
	define("user","用来管理的用户名");//不要使用什么奇怪的字符,我不保证那样可以正常使用
	define("pass","密码");//同上
	define("sqlUser","数据库用户");
	define("sqlPass","数据库密码");//请定义成字符串
	define("sqlAddress","数据库地址");//如"localhost"
	define("dbname","数据库名");
?>

这是最基本的配置,目前还可以加入以下配置来实现特殊功能
	define("domainname","此站点的域名(或ip)");//这是用来阻止从其他站点直接向这里发起的请求,删除此行表示不阻止
	define("ErrorLog",true);//开启错误记录,把错误记录到文件
	define("WarnLog",true);//开启警告记录,警告通常是不会影响程序外观但实际运行不会获得正确结果时产生的

 

使用

管理

由于博主不想花太多时间来做UI,所以后台就花了半小时做了个命令界面作为管理界面,这也正好利用了命令框架使用命令的特点。如果你从来没使用过任何平台的命令,这个站点可能不适合你,或者你需要花点时间来了解命令的组成。 要进入管理界面,你需要一个浏览器,然后在地址栏输入

你的弹幕站在网络的访问位置/admin/
如我的http://danmaku.luojia.me/admin/

进入以后你就可以看到我说的命令界面,它分为两部分,上面很大一块是命令和结果显示区,下面一条输入框是命令输入框。输入命令以后按回车发送命令,如果你没有回车,那就。。。。。别用了。。。

命令简介

由于我自己也不是非常了解各平台的命令,所以我是按照自己喜好做的命令格式,感觉和大部分地方的命令相差也不大,下面简单说一下这里命令的组成。

命令 参数 [参数 参数 ...]//命令和参数
命令 -参数名 被前面命名的参数//带有名字的参数
命令 --标记//会立flag的标记
命令 -参数名 被前面命名的参数 一个独立的参数 --标记//各种混搭

我这的命令大概就上面这样简单的格式,除了普通参数以外在参数前面加个-参数名可以给他起个名字,这样后台好处理一点,到了后台会被以键=>值的形式存到args数组。 前面是–的参数会被识别成flag,并存入flags数组,具体服务器接到了什么命令可见teststr 命令. 大部分命令我都已经写了help,只要输入命令 --help就可以查看帮助(不过都很简短。。) 首次使用前请仔细阅读help命令里的号使用说明,即使现在号的意义已经被减弱了。 在这里特别提醒一下,如果参数里有空格或者&符号,就需要给这一个参数围上 %60; 符号用来转义,这样到服务器才能正确识别(建议只要参数不是纯英文就加上)。

登录

使用命令前你需要先登录登录方法如下

login -u 用户名 -p 你的密码

login命令默认不会返回任何东西,如果你想知道登录是否成功,可以在最后加上--return 标记,或者登录后发个help 命令看看会不会显示帮助文档。

初始化

在使用之前你必须要运行一遍初始化命令,它会创建用来存放视频信息和弹幕的数据表

initdb

如果你看到了三个绿色的成功,那就可以接着做下一步了。 如果出现了红色的失败,那你可以再试一次或者找我。

命令列表

控制台内置命令

echo

echo 要输出的内容

echo命令用来输出后面跟着的内容,当然这完全没意义。主要作用是用来输出转义结果(发送到服务器的命令都是经过转义的,否则会有很多问题),比如下面这么用
echo findvideo {{EJS6}}

把想发送的命令跟在echo后面,命令不会发送出去,而是在控制台里显示它会被转义成什么样子 实例:

echo转义演示
echo转义演示

 

clear

clear

当你控制台里东西过多的时候可以用这个命令清空。

服务器端命令

添加弹幕

adddanmu 视频id 弹幕类型 内容 所在时间 颜色 大小 播放器获取的id

这个命令是给播放器用的,不过在这里也可以用,不过不建议在这里使用,因为你写的可能不是播放器能识别的格式。

添加视频

addvideo -t 视频标题 -url 视频地址

#建议这么写
addvideo -t {{EJS7}} -url {{EJS8}} -des {{EJS9}} -cv {{EJS10}}

实例:

addvideo演示
addvideo演示

添加视频成功后会获得视频id,id在各种调用视频和弹幕的场合会用到。 视频说明:由于目前浏览器的解码限制,建议使用H264编码的mp4视频做视频源,视频可以是自己上传到自己服务器的,也可以是从视频网站盗链的(如果你可以的话)(当然欢迎提供盗链源码。。。) 盗链视频

刷新插件缓存

cacheplugins

这个命令用来把插件文件夹里的js都合并到一个缓存文件(./player/plugins.cache.js)里去,删除文件再访问同样会自动生成缓存文件。 此命令是弹幕播放器主体专用的

清零某视频的播放数

clearplaycount 视频id

虽然我觉得这个命令没什么实际用处,不过我还是做出来了。。。

清空某视频的弹幕

cleardanmu 视频id

这个命令会把指定id的视频的所有弹幕都删掉 ,谨慎使用。

删除指定id的弹幕

deldanmu 弹幕id

删除多弹幕↓
deldanmu 弹幕id 弹幕id 弹幕id 弹幕id .....

专治问题弹幕,加上 -v 视频id可以限制搜索指定视频的弹幕

删除指定id视频

delvideo 视频id

删除视频的同时也会删除视频所有的弹幕(其实我复制了cleardanmu的代码23333),所以三思后行。

修改视频信息

editvideo -id 视频id [-t 视频标题] [-url 视频地址]

t参数和url参数至少要有一个,或者两个都有,用来修改手滑写错信息的视频。 例:
editvideo -id 12 -t {{EJS12}}
editvideo -id 12 -url {{EJS13}}
editvideo -id 12 -t {{EJS14}} -url {{EJS15}}

 

使用正则按标题查找视频

findvideo 正则表达式

说是正则表达式但如果你不知道是什么的话可以直接用标题,或者标题的一部分。 常用方法演示
findvideo {{EJS16}}                       #列出所有视频(视频必须有标题)
findvideo {{EJS17}}                 #列出所有【osu】开头的视频
findvideo {{EJS18}}         #直接使用标题找视频
findvideo {{EJS19}}               #找包含这段字的视频

 

列出全部视频例子
列出全部视频例子

 

使用正则按弹幕内容查找弹幕

finddanmu 正则表达式

常用方法
finddanmu {{EJS20}}                          #列出所有弹幕(弹幕很多时慎用)
finddanmu {{EJS21}}              #找出完全符合的弹幕
finddanmu {{EJS22}}                    #找到包含此内容的弹幕
finddanmu {{EJS23}}                        #找到包含233...3(大于等于2个3)的弹幕

例:

查找所有233
查找所有233

 

播放器获取弹幕列表

getDanmu 视频id

这个命令是给播放器用的。

播放器获取视频信息

getVideoAddress 视频id

播放器用,此命令返回一个包含视频地址、视频播放数的json

查看帮助

help

 

初始化数据库

initdb

见上面的安装部分

登录

login -u 用户名 -p 密码

如果在后面加个--return服务器会返回登录状态,完全形态:
login -u 用户名 -p 密码 --return

每次调用此命令都会把日志记录到log/login.log文件中,此目录已被.htaccess保护,不能直接访问。

获取视频信息框架iframe

vinfoframe 视频id

获取视频iframe用于嵌入页面
>> vinfoframe 4
<iframe src="http://localhost/videoinfo.php?id=4" style="height:650px;width:700px;" allowfullscreen></iframe>

然后就可以把这个iframe贴到要放播放器的地方啦。 如果你不需要显示视频信息页面而是直接加载播放器,就把videoinfo.php替换成miniplayer/player.phpplayer/,这也就是点了加载按钮以后跳转到的页面。

测试参数

teststr 各种参数

把你要发送的命令换成teststr 可以知道服务器最终解析出来的参数序列是什么(其实是给我开发用的。。。) 例:
#原本
login -u {{EJS29}} -p 123456 --return
#用teststr测试
teststr -u {{EJS30}} -p 123456 --return

结果:
参数表Array
(
    [0] => -u
    [1] => 用户名
    [2] => -p
    [3] => 123456
    [4] => --return
)
命名参数Array
(
    [u] => 用户名
    [p] => 123456
)
标记Array
(
    [0] => return
)

 

更新数据库

updateDB

用于某些更新增加需要的数据表

视频相关

约定的视频地址格式

视频地址(addvideo 命令里-t 的参数)的内容目前包括:源名称,段地址 数据库中的视频地址可分行,每一行会被识别成一个源 其中每一个源的格式可如下其一

地址							//直接就是一个地址
分段1;分段2						//分号分隔同一视频的不同段
"源名称":分段1;分段2				//给视频源命名

注:分段视频还需要不少时间来实现,目前的分段视频会只加载第一段。 注2:源名称将来可能会用在自选源时用来显示,没有命名的话会被命名成默认名 如何输入分行命令:找个支持utf8的编辑器把命令打好了复制到命令框即可输入分行命令

视频解析地址规则↓

如果写入的视频需要解析再输出给浏览器,请写成以下格式

解析识别名:地址

需要自行添加解析的话可以在outlinkresolve文件夹里增加(前提是你的会php)(最好推荐给我咯,我会官方推的) 解析文件只需满足下列条件: 1.以解析前缀为标题(如youku:XNnio2u4HXBIWUk2j3n的youku.php) 2.解析步骤会调用文件里的resolveVideo 函数,并从之获取返回的结果 3.返回的地址格式可如下

返回格式:array
(
	源1注释:[分段1,分段2....]
	源2注释:[同上]
)
或
地址

 

大龄单身狗的日常