greensea / ytplayer

ytplayer 是一个基于 Flash 的弹幕播放器

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ytplayer 是一个弹幕播放器,创建于 bilibili 建站前期,但是和 bilibili 没有任何关系(bilibili 似乎是用了和 ytplayer 同一个时期出现的 Yet Another XXX Player (我忘记 XXX 是什么了)来作为播放器的)。当年 AcFun 上面出现了大量质量低劣的广告,于是我就想着另建一个弹幕网站,接着就有了这个东西。

后来 bilibili 出现了,并且当时表现不错,然后这东西就搁置了。最近突然有人问我要代码,于是就从以前的 SVN 仓库里面扒出代码,传到 GitHub 来了。

演示站点: http://ytp.bbxy.net <-- 此站点会不定期抽风,如果页面显示 HTTP 503 错误,说明服务器又抽风了,请过半天左右以后再尝试访问。

部署说明请看 INSTALL.md 文件

== Flash 播放器如何获取和发送弹幕? ==

=== 发送弹幕 ===

Flash 播放器会将弹幕以 HTTP GET 方式发送给 savecomment.php 页面,各参数意义如下

content:经过 URL 编码的弹幕内容

fontsize:弹幕字号

color:弹幕字体颜色,以十进制表示的十六进制颜色值。比如,若颜色为蓝色(#0000ff),那么这里的值就应该为 255

mode:弹幕模式,0=底部弹幕,2=顶部弹幕,3=飞行弹幕,4=字幕菌

playtime:弹幕对应的影片播放时间,以毫秒为单位

id:弹幕对应的影片编号

完整的请求应该和下面的例子类似:

savecomment.php?content=%E6%B5%8B%E8%AF%95&fontsize=22&color=16777215&mode=3&playtime=199697&id=52

这个例子将会发送一个内容为“测试”,颜色白色,字号为 22,对应 52 号影片,并在影片播放到 199.697s 时出现的飞行弹幕。

=== 获取弹幕 ===

Flash 播放器在加载的时候会通过 playinfo.php 以 HTTP GET 方式读取对应影片的信息以及弹幕,参数如下:

id:影片编号

完整的请求应该和下面的例子类似:

playinfo.php?id=56

playinfo.php 会以 XML 格式返回影片信息及弹幕,格式如下:

<ytPlayer>
    <video>
        <flvID>1</flvID>
        <flvURL>http://v61.v.iask.com/f/1/4de79ddcc3fc25fe3fe2237d8499f01316750450.flv</flvURL>
        <playTimes>424</playTimes>
        <title>新华里同人歌曲新专辑5in1 - 10月号「大容量」</title>
      </video>
      <onlineCount>1</onlineCount>
      <commentCount>3</commentCount>
      <comments>
        <comment id="11907" fontSize="22" flySpeed="3000" fontColor="ffcccc" flyType="fly" isSubtitle="0" playTime="0.000" commentTime="1226642291">结束之后的弹幕测试</comment>
        <comment id="11849" fontSize="22" flySpeed="3000" fontColor="ffffff" flyType="fly" isSubtitle="0" playTime="0.000" commentTime="1226600750">就归结为Flash的技术问题吧</comment>
        <comment id="11848" fontSize="22" flySpeed="3000" fontColor="ffffff" flyType="fly" isSubtitle="0" playTime="0.000" commentTime="1226600740">其实理论上来说只要缓冲够了应该是可以定位到任意帧的嘛</comment>
      </comments>
<ytPlayer>

各元素意义如下:

flvID:影片编号

flvURL:视频下载地址,如果视频被分段,则各段地址将以换行符 '\n' 进行分隔

playTimes:视频总时长,单位为秒

title:视频标题

onlineCount:当前在线人数

commentCount:弹幕总数

<commnet> 元素的值为弹幕内容,各属性的意义如下:

id:弹幕编号

fontSize:弹幕大小

flySpeed:弹幕显示时间,即从弹幕出现到弹幕消失的时间总和

fontColor:弹幕文字颜色

flyType:弹幕类型,可选值为 [fly|top|bottom]

isSubtitle:是否为弹幕菌的弹幕,1=是,0=否

playTime:弹幕出现时的影片时间,单位为秒,精确到小数点后 3 位

commentTime:弹幕发表的时间,单位为 UNIX 时间戳

About

ytplayer 是一个基于 Flash 的弹幕播放器

License:GNU General Public License v3.0


Languages

Language:ActionScript 64.1%Language:PHP 32.3%Language:Perl 3.3%Language:CSS 0.3%