ABPlayer开发日志(二)

我发现命名撞车是件好可怕的事情= =这和所谓的“爱播搞清播放器”之类的没关系哈——ABP是纯Flash的弹幕播放器。

好吧,废话说到这里,ABPlayer基础构架貌似差不多了,目前能比较流畅的运行弹幕了,而且有了第一套Javascript接口功能。有感兴趣看看下面吧~

赵本山卖拐(误很大)

浏览器内全屏幕


可惜的播放器目前仅仅支持sina源 + 高级弹幕会显示Advanced Not Supported,不过可以先预览下现在的进度^_^。

要是懒得找地址,可以试试下面几个:
http://www.bilibili.tv/video/av112905/
http://www.bilibili.tv/video/av314/
http://www.bilibili.tv/video/av114047/

30 Comments

    1. 能,不过比较beta,打算优化下再考虑开放使用。。。现在需要调很多参数才能比较好的跟WP主题融合(其实也不是很好)

      回复

    1. 不是这样的,是指XML格式为Bili格式,至于放在哪里,你只要给地址,哪里都可以,本地也行。当然本地必须开一个Apache调试服务器(才比较好)。

      回复

      1. 如何存成本地XML 求方法。。 Apache本地的我已经搭建好环境了。 就是不知道方法。 能不能加我QQ 详细谈一下。。邮箱就是我的qq..

        回复

    1. 服务器端没做(怕被刷),所以弹幕不会被提交的= =
      毕竟这只是功能预览而已,高级弹幕、过滤器什么的还不被支持呢:kaka|15:

      回复

    1. 恩,这个播放器其实是为一个后期计划服务的,C站(暂定),允许用户建立小组弹幕池(组员可以添加删除[自己的]池中内容),还将允许建立“屏蔽组”,分享过滤器,比如“剧透屏蔽组”之类的,成员们向组内分享屏蔽设置…

      现在播放器还在开发阶段= =站点就更慢了,域名railgun.in(暂定)

      回复

  1. 呃,是直接抓包的B站的弹幕?
    貌似是JS掉AS方法的演示……没看到核心功能啊!

    表示我进度慢了……全部精力都放在了高级弹幕的接口上去了。

    我一直在想一个问题,假设播放器放置在了某个站点页面,这个时候,要是“只有该站点访问权限的普通用户”想利用这些JS接口为播放器实现某些插件,该用哪种方式能够即时为播放器接入这些插件并在刷新页面后,播放器就可立即得以体现?上传JS文件(各种不现实……)?
    有没有啥好点的实现方法呢?求解。

    另外,建议播放器仅仅提供一个JS调用的接口就好,而这个接口需要两个参数,即播放器的方法名,和播放器内,该方法所需参数的数组。(如果楼主已经想到了,请无视……当然,如果有更好的方式,还请提出,学习学习……:kaka|26:)

    回复

    1. 其实是直接抓的文件,AB站都没有做什么高级的隐藏,正好播放器做的时候让格式兼容了。

      至于动态载入Plugin和主题,我这里的设想是这样想的:在启动的时候给FlashVars某种参数,让播放器可以引用外部SWF,这个实现大插件的引入(就是能增加功能的),同时也允许JS调接口,然后动态载入。比如没登陆的,可以保存Cookie,然后根据Cookie加载。至于登陆的,那么直接在载入页面的 HTML 里面附上相应的FlashVars就能载入了。类似快载和慢载。

      接口我觉得一个不太够吧:kaka|06:,对于基础功能打算开接口,高级些的就统一一个吧,比如play(), stop(), pause(), seek(time), load(source,id,dm), loadPlugin(pluginUrl), toggle(state)这些涉及比较大幅度的变化的或者作用于于播放器的,剩下的就统一call(functionName,paramArray),这样通过JS调用一个后载入的插件的功能也能行了。

      仅仅设想而已:kaka|17:有不完善的,还是希望能多多交流= =

      回复

      1. 我所说的插件,不是关于类似于皮肤、主题、页面设置等一些配置性的东西,而是用户通过自己开放的接口,使用JS实现的某些复杂算法(主要还是针对高级弹幕),而这一JS复杂算法,对于一个特定的站点该如何永久并即时性的保存,并可以真正像一个插件一样,可以提供给其他用户,选择是否安装,这是问题之一:kaka|38:。

        还有一个更大点的问题:kaka|37:。假如用户利用接口,使用JS实现的某个高级弹幕被加载至播放器并成功调用,发送了一条弹幕,那么,播放器暂停时,当如何来暂停该弹幕?弹幕控制器无法获取到这条弹幕的动态pause方法,目前我所想的是通过工厂类,创建一个专门针对于JS插件的弹幕对象,他的生命周期、暂停/播放的实现都是通过AS调用JS方法,所以用户自定义高级弹幕应具备一些接口实现,不知你有何高见?:kaka|03:
        接口那个,其实我就那意思。:kaka|03:

        回复

        1. 哦哦,我大体明白意思了。不过Flash和页面上JS交互比较那啥,但是理论上行得通。比如开放接口 addEffect(effectName,effectId,externalFunctionName),然后用户可以发送 effectId的弹幕,这个则会在flash里面调用页面的externalFunctionName(x,y,alpha,rotation,timeNow,timeAll),函数返回同样的信息(包裹在数组里),这样可以定义外部函数来计算弹幕的位置和显示信息…比如每 0.1s调用一次这个函数?

          这样暂停的话就简单了,只要弹幕监测到Manager已经停了,就停止呼叫函数,自然也就不动了。

          回复

          1. 你大体,还是没有明白……你所说的,还是不是我问的……:kaka|20:
            你说的是插件弹幕发送弹幕后,所产生的信息的具体存储方式,我所说的,是插件本身的”存在”方式……算了,不纠结这个了。:kaka|02:
            至于暂停,我觉得,JS弹幕应当包含了一个完整的弹幕运算,包括弹幕跑动轨迹、间隔时间以及其计时器、消亡条件(effect)等等,而AS只通过play这个方法调用JS弹幕,不参与其任何轨迹算法,之后调用JS所创建的对象的addchild或removechild方法。因为AS不知道该多久触发一次JS方法比较合理,如果限定了一个时间,那么JS插件的自定义的自由度就比较低……
            我的想法是为每种弹幕分别创建一个“弹道”类(即effect),这些弹道类都实现了一个interface,并包含一些接口方法,比如play、pause等。
            当播放器进度滚动的时候,controller将应当播放的弹幕通通转载进array,而播放器暂停/继续的时候,则遍历这个array,一次将每个弹幕暂停/继续。而JS的弹道类,由AS的工厂方法来提供动态创造。:kaka|19:

            回复

            1. 我觉得这和现在B站的高级弹幕很类似啊,无非就是高级弹幕那个用的是直接写ActionScript…这种弹幕控制的话,B站的也成问题,比如有的效果视频暂停了还会继续循环播放。不过给出那么大的自由度,基本不需要插件了吧(= =)

              B站高级弹幕语法很凶残…类似
              var comment=new Comment(参数);
              $.addComment(comment);//添加到舞台
              comment.addEffect….
              comment.play….
              这样的 …. 我觉得这基本到了自定义弹幕的顶峰…你说的插件是不是一套effect可以 addEffect进去呢?

              回复

          2. “你说的插件是不是一套effect可以 addEffect进去呢?”
            差不多就是这个意思。
            对于B站的高级弹幕,我还没有体验过。是不是自定义的顶峰,我说不上,但是,我不希望让用户直接使用AS来产生一条弹幕。这样的存在是很让普通用户费解的。
            之所以希望做JS插件,其实就是让高级用户(即技术宅)帮助播放器实现本身没有实现的effect,从而以更为直观的方式,让普通用户也能使用,让高级弹幕更为平民化,大众化,也更为多样化,并且对于播放器来说,也能持久化。

            (WP的回复树让人蛋疼……)

            回复

            1. 建议看看B站的“高级弹幕测试”,挺完善的,不过个人觉得有点过头了…交互弹幕什么的…

              弹幕播放器大众化是个很值得支持的项目,ABPlayer也是这个目的制作的,所以目前的主体是让弹幕对于大众看着不阻碍视线,过滤掉一些无意义的、遮挡的信息还有就是减少 CPU 压力。等这几个大头结束了弹幕播放器才有推广的可能。

              AB站的播放器不方便在各种社交网站分享视频使用,主要是界面太复杂,载入慢,没有分享模式(B站的有)…之类的。

              高级弹幕平民化这个其实有设计,我想让ABPlayer能让用户能创造动作序列,可以按次序拼接Move,rotate,fade,delay,colorTransition,textModify…拼接成一个效果序列,插件可以增加这些效果,但必须实现mx的Effect类(有play,pause,stop,duration…)这样能解决暂停,同时又能增加扩展性…(我觉得)

              回复

          3. B站的高级弹幕,我还是看过相关的测试弹幕,我也觉得交互弹幕的确有些过头了。他们忘了弹幕的本质是“吐槽”这一关键点了,标新立异用错了点。
            现在的互联网交互,越来越趋于简单化,高效化,集中化。从blog到facebook,facebook再到twitter,再到现在的tumblr,每一次焦点的转变无不体现着这一中心。

            至于CPU优化,我认为这是一项光荣而艰巨的任务。AS本身的效率就是一个大问题。这个我觉得应该不要做为前期开发的重点,应该是项目完成后,后期打磨的工作。

            effect的接口自己定义就好,没有必要去用mx.effect的接口,里面有很多东西是我们用不到的。

            回复

            1. 对了,我想问问flex 4(flash builder 4)怎么下载啊?我申请了免费序列号(而且批下来了),但是官网下载说必须安装他们的下载器,装了,可是不知道怎么下载…

              问下你那里怎么样,我还在用很落后的flex 3….想升级,压力很大啊

              回复

          4. 不需要什么下载器啊
            https://www.adobe.com/cfusion/tdrc/index.cfm?product=flash_builder&loc=cn
            这个页面,打开,点了下载之后会提示登录,登录后会弹出一个下载对话框,里面有两个下载连接,其中有一个是解压工具,都下吧。
            (这是中文版的,如果因为很好的话,建议用英文版的,中文版的看着伤眼睛……)

            对了,免费序列号,怎么申请?嘎嘎……

            回复

            1. Adobe给三种人开放了免费无限期Flash Builder 4.5正版序列号,说是推动Flash发展(估计受到HTML5刺激了):学生、教育者或者“因经济危机打击下没有工作的程序员(好坑嗲)”。学生要给什么学生证明,太复杂我就选了最后一个。

              你可以到官网Search一下,我也忘了链接,似乎特好找(我是从这个界面进下载的)freeriatools.adobe.com上面找…

              回复

          5. 好了,申请了失业者,做为一个大学生表示压力很大!这是对自己活生生的诅咒啊!!

            不过,再也不想用盗版了!!“道德素质提高了!”
            嗯嗯,就是这样。

            回复

发表回复

您的电子邮箱地址不会被公开。