ABPlayer (KnLiveCommentary)

KnLiveCommentary将被新的项目 ABPlayer 以及ABPlayerHTML5取代。新的播放器将使用更加先进的引擎和更加完善的控制机制,并且对复杂的弹幕形式提高了兼容性。你可以在https://github.com/jabbany/ABPlayerhttps://github.com/jabbany/ABPlayerHTML5 Checkout或者Fork这个项目。非常欢迎任何愿意加入项目的人积极参与(提交代码、补丁、BUG报告等等)!

KnLiveCommentary是一个面向简单架设的弹幕视频播放器。播放器内部不设置视频地址解析而依赖PHP进行地址解析,这样可以降低因视频站点加密方式变化而需重新编译播放器的问题。同时支持自定义的动能,可以很有效的进行扩展。

目前还在开发初期,虽然大部分功能可用,不过还是期待有参与者~

项目地址:http://sourceforge.net/projects/knlc欲加入,请在下方回复~
KnLiveCommentary已经停止开发,转为ABPlayer。

143 Comments

    1. 可以~只要挂上MIT LICENSE的话就可以用任何部分。新版有把时间管理模块拆出来了一个新的间接层可以不用依赖Comment实现(这个参考dev-new-loader分支)这样单独拿出时间管理模块CommentManager就比较容易了。。。

      回复

    1. 做ABPlayer的时候没有专门考虑过直播。。。不过因为是Flash的Stream应该是有原生支持直播的。不过目测可能需要改一些代码。。。

      回复

  1. 想做一个在微信里也能弹幕的HTML5。
    测试发现 iOS 如果使用 webkit-playsinline 可以实现。
    但安卓现在反而不能实现,原因是微信都用x5内核,腾讯用一个内置的播放器,来播放video标签。并且强制放在了最上层。

    这个问题有解么?
    有人提过用 canvas,网上找了一个,结果黑屏。就没再深入研究。

    回复

    1. x5内核什么的我不知道,但是安卓webview是可以支持CCL/ABPlayerHTML5的。如果要是有东西接管了video那确实没办法。canvas的话感觉更难支持。。。

      回复

    1. 欢迎啊!我倒是没有QQ,不过欢迎在Github上提交PR或者开Ticket探讨ASS实现。
      当然个人感觉ASS实现好像有个现成的JS库,不过不太确定。

      回复

  2. [The basic player does not provide any comment sending abilities. To send comments you should hook onto the inst.txtText text input and capture keypresses to send comments.]

    So how can I send comments please?
    and is there any guide to use ABPlayerHTML5?

    回复

    1. Long story short: The simple way is to add a keyboard event listener (keydown etc.) to listen for a special key like [Enter], this listener can be bound to the inst.txtText object since that’s a text input DOM element. Then, when the key is pressed, you can perform an AJAX post to some backend endpoint and pass the inst.txtText‘s text (along with anything you’d like). You’ll need to have a dynamic application backend (something that reads and writes to a database) to handle the AJAX request and save its contents into the database.

      As for a guide, the most current guide is here: http://jabbany.me/ABPlayerHTML5/build/
      This explains how to reference the player library and instantiate a player on an existing video element. You’ll need to design your own backend to save the comments and to request for the comments on an existing video.

      回复

    1. 是指Flash还是HTML5版?Flash版编译方法参考 http://www.261day.com/abplayer%E7%9A%84%E6%AD%A3%E7%A1%AE%E7%BC%96%E8%AF%91%E5%A7%BF%E5%8A%BF/ 。那个Flex的IDE会自带调试功能的就能运行。
      如果是指HTML5版本,参考 http://jabbany.me/ABPlayerHTML5/build/ 和 https://github.com/jabbany/CommentCoreLibrary/tree/master/docs 的文档。

      另外,这个站点是由Wordpress驱动的(虽然Hexo也是不错的)。

      回复

  3. 你好正好在找人弄弹幕播放器,无奈找了很久没人能弄,今天下载了你这个使用上遇到问题,能付费帮忙解决解决么我qq10760473

    回复

      1. UC浏览器是手机浏览器么?ABPlayer是Flash的播放器,一般情况手机上应该是不支持Flash的吧?
        如果是指HTML5版本的话,本来播放器没有接后端就没法发弹幕(本站和repo说明的demo里面的都没有后端)。发送弹幕功能要根据站点需求自己设计后端,这个在文档里面有介绍。

        回复

  4. 你好,我想咨询下,以后你的大部分精力会放在ABplayerHTML5的开发上吗?我在之前你的评论,ABplayer仅仅用来测试用的。谢谢!

    回复

    1. 应该是如此,Adobe已经不打算继续支持 Flex平台了,Linux下Flash更新也停止了(只有安全相关更新)。。。感觉在Flash平台下的软件在未来被支持的前景比较不妙。。。

      回复

  5. 你好,我准备学习一下你的abplayer,但是基础不是很好,以前只用flash做点小游戏,请问github上面的aplayer项目如何让调试,改改界面什么的

    回复

    1. 编译的话可以参考 http://www.261day.com/abplayer%E7%9A%84%E6%AD%A3%E7%A1%AE%E7%BC%96%E8%AF%91%E5%A7%BF%E5%8A%BF/

      我也好就没有动Flash版了= =感觉帮不上多少忙

      回复

            1. 哦,你是指Flash版么?Flash版一直都是试验性的,后来Flash移动端不支持+Adobe自己也不努力把ActionScript开放给HTML5编译,最后一直没有机会正规化。
              如果想做二次开发的话,代码应该并不难读懂。如果是想直接架设Flash版,目测ABPlayer目前还是不够成熟的+现在视频源解析都挂了只剩裸URL支持了,而裸URL不支持分段视频或者HLS,RTMP的话因为没有服务器从来没试过。

              回复

              1. 没测试过。。。有可能可以,没有rtmp服务器没测试过。视频端用的NetStream似乎是支持的,不过有可能需要一些代码改动,参考 org.kanoha.video.* 里面的实现。

    1. 现在在用CommentCoreLibrary 的send 方法来发送实时弹幕
      然后通过AJAX的吧弹幕内容提交到服务器上,修改XML文件
      看了下xml文件里的弹幕是这样的格式
      试色
      这些参数看不懂 不知道如何修改xml文件
      求帮助 求联系方式 _(:з」∠)_

      回复

      1. 有关具体B站XML文件格式请参考Github上的文档,有比较详细的介绍。如果采取XML格式传输的话,一般是服务器生成XML而非更改,当然XML并不是必需的,任何传输格式都可以。

        回复

      2. [268,248,”1-1″,1.1,”飞 散 崩 毀”,2,30,268,248,500,0,true,”黑体”,1]

        最初的位置x,最初的位置y,不清楚,不清楚,显示的文字,三维的显示z轴,三维的显示y轴,第二次显示的位置x,第二次显示的位置y,。。。。。

        回复

    2. 我知道那些参数的意思
      [268,248,”1-1″,1.1,”飞 散 崩 毀”,2,30,268,248,500,0,true,”黑体”,1]
      第一个是时间,模式(有模式1和7,例子是7),字的大小,字的颜色,后面的不清楚

      回复

  6. 我是一个动漫视频网站的站长,不知道能否与你们合作,网站一直再找弹幕播放器,一直没有合适的。。。。。
    又或者,我们可以进行深度合作,希望可以谈谈,邮箱私我哦(ฅ>ω<*ฅ)。(我们网站才建半年,现在没有什么人气,但能否一起谈谈( •̀∀•́ )

    回复

    1. 目前播放器已经是开源的,如果在架设上有问题可以参考文档内的介绍(尤其是后端的设计)。同时欢迎在Issues里面提问。至于建站方面恐怕我的经验有限,没法帮上什么忙的。。。

      回复

      1. 不是需要建站,就是,我想,如果可以,网站就会一直使用你们的播放器,后期网站稍微好些了,我需要定制服务器的,能否在前期进行合作呢?拜托了。

        回复

  7. 我是一定动漫视频网站的站长,不知道能否与你们合作,网站一直再找弹幕播放器,一直没有合适的。。。。。
    又或者,我们可以进行深度合作,希望可以谈谈,邮箱私我哦(ฅ>ω<*ฅ)。(我们网站才建半年,现在没有什么人气,但能否一起谈谈( •̀∀•́ )

    回复

  8. 我是一个动漫视频网站的站长,能否互相合作一下呢,希望给网站加入弹幕播放器 一直没有找到合适的。
    又或者,说不定,可以进行深度的合作,邮箱留给你们了,能不能谈谈呢(ฅ>ω<*ฅ)

    回复

    1. Flash版的只有之前的几篇文章和源代码。如果想学习设计思路可参考HTML5版的,那个文档相对详细很多,而且整体思路是一样的。

      回复

    1. 话说有研究出来怎么搞SINA的高清MP4源吗?
      现在ipad_vid接口还能用(参考:http://kanoha.org/2012/03/22/abplayerhtml5-commentcorelibrary-and-more/)不过一直都是低清晰度的MP4。。。

      回复

  9. 报告一个Bug
    1、就是在字幕载入的时候貌似会卡住(包括在切换选项卡的时候)
    2、在播放的时候如果按右键字幕和画面都会卡住

    回复

  10. – -还是没解决
    描述 资源 路径 位置 类型
    无法将 s:DataGrid 解析为组件执行。 ABPlayer.mxml /ABPlayer/src 第 490 行 Flex 问题

    回复

  11. 你好,想向你请教一下,我用php curl 采集youku的地址,怎么直接跳转到优酷的404页面,请问优酷对php curl做加密了哈?请问你有什么好的解决办法么多谢 我的QQ1300477789,请问你如何联系哈

    回复

    1. 采集Youku地址是指Youku的视频链接还是视频的绝对地址?视频的绝对地址需要进行很多解密操作,或者调用几个移动终端用的API。而且视频地址是动态生成的,大约半小时/一小时后就过期了。

      回复

        1. 不太理解用Curl爬是什么意思?是指的有个网页上有若干Youku地址,想收集这些地址,还是想收集某个视频地址页面内部的信息(比如视频介绍什么的?)?

          回复

    1. 顺便问问这是什么回事,我用flex3。2编译出现这个错误
      描述 资源 路径 位置 类型
      Could not resolve to a component implementation. ABPlayer.mxml /ABPlayer/src 第 7 行 Flex 问题

      回复

            1. – -好吧,重新下载了源码包,那个问题解决了,但是出现新的问题
              描述 资源 路径 位置 类型
              无法将“”解析为组件执行。 ABPlayer.mxml /ABPlayer/src 第 490 行 Flex 问题

              改行代码是 <s:DataGrid id="CommentListGrid" left="0" right="0" top="0" bottom="0"

              回复

  12. 额……还有一个问题……
    Youku的视频地址取到之后是这样的:
    http://f.youku.com/player/getFlvPath/sid/135121987951597_01/st/mp4/fileid/0300080F00504ADDB7C86C01D5830C211AFA7F-43C4-9265-4DAA-EDA3C3ACC1A3?K=370355a707d1c7a324112e80&hd=1
    如果我直接把这个地址复制到地址栏是可以看的,但是直接丢进video标签就挂……是他跳转的方式问题吗,如果是的话,本地用ajax不能跨站访问,如果在服务器进行解析怕这个地址涉及到cdn加速,有什么办法吗?

    回复

    1. 这个貌似跟referer有关系(印象里之前没有的啊。。。)就是 Video会导致“链入网页”变成非空,然后就看不了了。可以考虑把服务器搞成HTTPS的这样就能掩盖Referer信息了。。。。

      回复

    1. 不是漏洞啦。弹幕保存需要服务器有接收端(来记录弹幕),目前没有。音量滚动条太难做,于是没有了。视频跳转这个东西,貌似跟视频切分有关系。至于设置会卡,确实是个在解决的BUG。。。目前还没搞明白为什么,应该是绘图顺序太低。

      回复

  13. 我的网站是用WordPress做的视频博客,最近优酷的链接全部无法访问,所以急需一个可以直接解析的播放器,于是看到了这个ABPlayer,当时激动的心情你懂得。。如果有WordPress版本,可以的话,我愿协同测试,博主好人,一生平安。

    回复

    1. 最近Youku改算法(加上了那个友情提示请避免屏蔽广告),于是解码比较费劲了。。。加上现在偶不在国内了。。。于是Youku视频各种连不上没法调试QAQ。。。。果然还是建议用 Tudou + Sina

      回复

  14. 有木有想过走国际范。。
    可以像WP搞个gettext的lib再学TortoiseSVN那样放到Transifex上让网友翻译。。
    很喜欢你的作品,不过我做的主要是音乐播放器类,你的文章对我多少也有些帮助,希望能认识一下,交个朋友

    回复

    1. ~主要是最近事情太多了(终于到美国来了,还没安定下来呢QAQ各种麻烦),以及电脑主板又有问题送修还没拿到在用一个**很差**的机器(性能估计在现在的中端智能手机水平),开发环境打不开都。

      不过最近比较欣慰的是,貌似B站新播放器借过去了几个小功能。=w=

      回复

  15. ABPlayer 导入到了工作空间后,准备尝试启动结果发现
    new CommentSender(“http://127.0.0.1/wp3/wp-admin/admin-ajax.php”);
    以及
    new CommentLoader(“comment.xml”);
    一个是链接服务器的啥PHP,一个配置文件.这两个我找了包内没有任何相关的说明能请指点一下么不胜感激

    回复

    1. comment.xml是弹幕文件,应该是动态生成的,包含全部弹幕信息。CommentSender的URL是一个接收器URL,当发送弹幕时,弹幕会被POST到该URL下。

      回复

        1. comment sender里面的弹幕文件是一个B站格式的文件,URL通过添加Flash的运行时变量。在初始化CommentLoader的时候可以随便给一个URL,之后会被 loadVideo 里面的覆盖。
          弹幕地址是的具体位置通过一个参数(FlashVar)传入到播放器里面,这样播放器载入的时候就可加载视频和弹幕。这个地址是直接提供给播放器的。

          比如要载入新浪文件A,则在嵌入HTML时的FlashVars里添加 mode=sina&vid=[新浪的ID]&comments=[一个指向弹幕信息的URL] 。由于HTML是动态生成的(应该是这样的!),所以这个comments的值就是会根据运行而变化的,于是就能对应弹幕和视频了。

          回复

  16. 我现在也想做一个视频相关的(看了站点你就懂的类型),请问HTML5版本怎么配置呢?
    卡在CommentLoader(“” + vidObj.vid,cm,cbfunc);这里了.前一个参数怎么配置啊.
    还有貌似B站视频来源是sina啊,怎么做到的呢?

    回复

    1. CommentLoader只是一个加载容器。这里vidObj是B站返回的新浪VID,参数是 CommentLoader(弹幕文件地址,弹幕播放器对象,回调函数)。

      回复

  17. 对LZ开发的弹幕播放器非常感兴趣,自己也有做这方面的研究,希望能够把自己的网站与LZ的弹幕播放器相结合,以后长久合作。就目前的浏览器支持来看,大部分浏览器尚不支持新颖的html5技术,估计2~3年内,还是以flash开发的ABplayer适应更广。

    回复

    1. 嗯。现在的Flash愈发不稳定了,而且大部分浏览器都已经支持HTML5了。两到三年,按照研发周期讲,已经没有什么空间了。不过ABPlayer的Flash版本还是会继续开发的,只是目前要准备重构,所以准备工作较多。

      回复

      1. 能加下我的QQ吗?我很喜欢弹幕播放器,我跟朋友可以提供资金,实验网站等各方面的支持,帮助你完成你想要的弹幕播放器。我的QQ号,就是电子邮件地址。

        回复

    1. 其实是一直在开发HTML5版本的啊= =已经达到了很高的还原度….什么的……
      Flash版的由于现在Flash的支持性在降低,于是各种被推迟。还有HTML5版本的很多地方优化比要Flash好的。
      建议去看看 https://github.com/jabbany/ABPlayerHTML5 和里面的 /interface 部分。

      回复

  18. 有意思加入咋家论坛么
    我们是做MIKU演唱会同步中国大陆免费转播的
    想通过FMS+ABPLAYER进行2012大感谢祭的同步转播
    咋家论坛地址是:http//bbs.2m.hk
    去年初音新加坡演唱会的同步转播地址:http://www.ishudu.com/YanChang/7513.html
    希望大大能够一起加入 因为我们一直都是一个有爱的团队

    回复

    1. 我觉得搞转播的话服务器压力会很大啊,同步转播的话弹幕的实用效果也有限了(因为如果评论过长,由于没法暂停转播来输入内容,会导致出现人们评论延时等等不够好的效果)。
      不过呢,看了看,论坛架设的界面连贯性不错,而且访问速度、流畅度也很好(HK的缘故吧)。就这点在国内已经非常不错了。

      FMS的话总觉得需要自己的服务器吧(不便宜?),虽然不太了解。

      至于,ABPlayer的发展方向是逐步脱离Flash,现在弹幕引擎已经纯JS化了不久视频组件出来了(目前还需要通过这个兼容FLV),估计就能基本实现评论功能了。
      现在呢,我主要是在研发一个新型的视频/弹幕评论社区,因为目前见到的都是要不Discuz论坛,要不就是Ac/Bili这样比较传统的。想写个社区型强的视频转播分享站。

      对你们的项目很好奇,只是我觉得V家的东西网络化的话发挥潜力应该不止是视频转播。潜力很大,感觉还有空间挖掘(似乎?)。
      (PS:顺便表示,我很好奇没有版权问题么。。。)

      回复

      1. 转播的时候可以从朋友那边借到一些服务器做分流(全部带宽加起来可能有300MB的带宽吧),而且现在小组在自己制作VPN的加速,如果能够在39之前赶做出来,加速用在评论上应该不会卡的。
        FMS转播是少数人看的,其他大部分的会利用sop来转播。
        版权问题暂时纠结,因为我们根据天朝法律,没有利用转播进行任何商业活动都不算违法的,(*^__^*) 这种叫分享。
        而且演唱会同步转播从2011年就开始做了(一共有4场),且日本官方也没有联系我们要版权什么的。
        大大是想开发类似这种分享项目吗?
        http://bbs.2m.hk/acgtu/

        现在就是卡在弹幕播放器与FMS的结合上了,非常的郁闷
        所以想请大大一起开发,关于V家 发展潜力应该不止这些的,应该还有更多模式有待摸索

        回复

        1. 诶——好高级。现在看起来越来越有意思了。
          当然FMS本人了解有限,我怕帮不上忙啊<_>看你们的项目倒是很感兴趣啊。特别是看到你们有这么多的资源利用,用户群也不小。挺有发展潜力的。

          (题外话了,顺便说下,SOP这个看不了,我不用IE。。。)

          回复

          1. 现在的转播设想是这样的
            首先服务器抓取NICO数据到本地
            其次需要用fms来进行广播
            然后用ABPLAYER接受RTMT的数据进行播放
            ABPLAYER的直播弹幕数据库单独放在一个数据库上(其中弹幕发送的文字,不知道能不能利用cnd加速)
            且直播流没有结束时间,不知道abplayer的弹幕算法按照什么计算。
            其中还要用到防盗链(实现单独域名限制与直接请求的限制)
            所以 希望大大一起来建设。毕竟ABPLAYER是大大孩子,正研究无力ing

            回复

            1. 我觉得Nico不是实况转播吧。。。如果真是,那表示能抓到流然后重新导向很困难(是吧)。
              RTMP对访问者网速要求很高,优势就是自带防盗链。至于实现实时弹幕的话,还需要服务器开类似聊天的一个端口来实时广播弹幕(否则所有人的视频上弹幕都会是空的,因为实况转播需要在A时刻让X的弹幕达到所有的计算机,如果保存在服务器上等着播放器刷新[AB站是这么做的]由于网速延迟会导致每次弹幕都出现在现在时刻之后,也就没有弹幕可滚动了)。
              至于弹幕数据完全可以不开数据库存储(因为实实时的存储也没有价值)。话说回来了,这样也会导致网络条件略差的用户由于延迟完全看不到弹幕。

              ABP弹幕滚动是等时滚动(非等速)所以可以流没有结束时间。当然了,最大的问题还是如何让弹幕到达所有的计算机而不延时。
              要实现的话,预计需要首先实现P2P的聊天室类似功能来派发弹幕(实现实时滚动),然后再实现FMS的视频派发。这些东西实现的话,嗯,目测。。。要好几个月到半年之久吧。。。
              (虽然Nico这点似乎还算成熟?)

              当然也有其余的方案,比如增量刷新等等,但是这些都会有副作用的(最明显的就会是弹幕时间错位)。不知道你么有何这方面的考虑= =?

              回复

    1. 这个工程是Flex 3.2工程,不能用SDK 4编译,在导入工程时要选择Flex 3.2 SDK才能编译。还有,此工程已经换为更新的版本:https://github.com/jabbany/ABPlayer。(也是Flex 3.2)。后者实现功能更加完善。

      回复

      1. 我刚下下载了你的ABPlayer 编译时提示出错误。

        Encountered errors or warnings while building project ABPlayer.mxml.
        ABPlayer.mxml: unable to open ‘C:\Users\Administrator\Documents\Flex Builder 3\ABPlayer\libs’

        请问是什么原因。

        回复

        1. 可以啊,正好目前新的弹幕播放器还没有地方实际投入使用的地方…(其实KnLiveCommentary是旧版本了)
          感兴趣的话可以看看首页的开发日志,播放器的效果之类的
          你们的站点是Discuz的论坛吧^_^还没开发过Discuz的插件呢,这可能得研究下…

          (PS,我很感兴趣你怎么找到这里的…小站才两个月新…:kaka|18:)

          回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注