Coder Social home page Coder Social logo

jabbany / abplayerhtml5 Goto Github PK

View Code? Open in Web Editor NEW
876.0 59.0 215.0 647 KB

Video Player for danmaku comments. ABPlayer in HTML5. ABPlayer核心构件以动态HTML编写的版本。向HTML5进发!HTML5弹幕播放器

Home Page: https://kanoha.org/tags/ABPlayerHTML5/

CoffeeScript 4.58% CSS 13.92% JavaScript 81.50%
html bilibili acfun player video-player danmaku-comments javascript danmu

abplayerhtml5's People

Contributors

dependabot[bot] avatar jabbany avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

abplayerhtml5's Issues

滚动弹幕碰撞算法有望改进

滚动弹幕碰撞算法有望改进。

B站当前的碰撞算法是这样的,1、从上到下搜索第一处能放下弹幕的地方(跟字号有关),2、如果放不下,从上到下找空间最大的地方。这个规则可以在密度不超过限度的时候保证没有弹幕在整个生命周期中发生碰撞。

ABPlayerHTML5 当前的碰撞算法是这样的,尽量保证弹幕开始时不发生碰撞,没有考虑到运行过程中发生碰撞。缺点在大量超长弹幕出现的时候尤为明显。

我在 Danmaku2ASS 里写了一个参考算法 m13253:danmaku2ass/danmaku2ass.py@f6a7601#L520

给出算法详细定义:
“能放下弹幕的地方”:新来的弹幕整个生命周期都不会和之前的弹幕碰撞。
“跟字号有关”:即使屏幕上有大量小字体的弹幕,也能够铺满屏幕。
“空间最大的地方”:定义1:若某横行最后一次使用的弹幕的时间轴是所有横行中最小的,该横行是空间最大的地方;定义2:若某横行所有弹幕的右端横坐标的最大值是所有横行中最小的,该横行是空间最大的地方。(Danmaku2ASS 用的是定义1。)

现在这样的判断效率在所有弹幕都能找到放得下的地方的时候是很赞的,但是如果弹幕非常非常密集(如 av124748),效率就会拖后腿。如果能用数学方法减少搜索的比较次数,就可能大大提高效率。

DOM operations lag with a difficult DOM table

In webkit based browsers, the scrolling comments lag when the comment list is displayed, this is due to several thousand elements in the dom making it hard for the JS to manipulate a portition of it.

We should consider switching to Canvas but that currently does not support CSS3 3D effects. Another approach would be to limit DOM operations by using CSS3 Transitions and a timer to follow the movements and stop actions. Translating movements to CSS3 would be difficult though

在元素较多的页面上ABPlayerHTML5会卡。这是因为在webkit和类似渲染器下DOM处理效率会被多余的不被操作元素也减慢。

几个解决方案包括采用Canvas(但是不支持3D变化了)或者限制DOM操作改用CSS3效果同时采用一个计时器来标志弹幕的位置,不过把复杂的定位弹幕转化为CSS3会比较蛋疼。

怎么用ABplayerHTML5发送弹幕?

我把它以播放器接口的方式搭建在了校园内网~好多人说希望可以发送弹幕,可是我不知道怎么做,即使本地建立数据库也可以的= =主要是我想知道怎么做,谢谢

关于使用全屏API实现真正全屏

现在的全屏是网页全屏。

关于真正全屏,我做了下尝试:

function launchFullscreen(element) {
  if(element.requestFullscreen) {
    element.requestFullscreen();
  } else if(element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if(element.webkitRequestFullscreen) {
    element.webkitRequestFullscreen();
  } else if(element.msRequestFullscreen) {
    element.msRequestFullscreen();
  }
}

function exitFullscreen() {
  if(document.exitFullscreen) {
    document.exitFullscreen();
  } else if(document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if(document.webkitExitFullscreen) {
    document.webkitExitFullscreen();
  }
}

然后,player.js 466:

            ABPInst.btnFull.addEventListener("click", function(){
                ABPInst.state.fullscreen = Boolean(document.webkitIsFullScreen||document.mozFullScreen);
                if(!ABPInst.state.fullscreen){
                    launchFullscreen(document.documentElement); 
                    //launchFullscreen(document.getElementsByClassName("ABP-Unit"));
                    //addClass(playerUnit, "ABP-FullScreen");
                }else{
                    //removeClass(playerUnit, "ABP-FullScreen");
                    exitFullscreen();
                }

这样就可以实现整个全屏。

但是不知道为什么,我无论如何不可能实现单个元素全屏,没有任何例程可以在我的任何浏览器上运行。。。。一切办法都直接报错。估计还是我打开方法不对。。。。

Alternative for video source

I'm impressed that there is an active open source danmaku project here. This is awesome and great.

While I'm playing with your code, I felt like it is impractical to crawl video source directly from MP4 or any video media files as it often involving copyright issues and video providers aren't providing this format publicly.

I have made an example (Youtube) of using some libraries to display video as iframe element.

Hope it helps. Cheers.

https://github.com/chayoka/videojs-danmaku-player

怎么播放分段视频

比如说服务器有一个视频video,它被分成了几段,video_1.mp4, video_2.mp4, video_3.mp4等等, 怎么无缝切换分段?支持吗?

this doesnt work yet?

I am trying to clone your HTML5 player because I think it is fun. Am i going crazy or does this not yet work? I tried to start this on my local php server but no video shows up. Can you please help me with this.

为什么弹幕加载不进来呢?

最近正在学习这个项目,不过代码下到本地之后为什么没有弹幕,只有视频在播放?
大家有没有遇到过这个问题?

一直报错 TypeError: Failed to fetch

<script> var inst = ABP.create(document.getElementById('load-player'), { 'src': 'https://vip.okokbo.com/20171220/xf6ducsR/800kb/hls/index.m3u8', 'width': 800, 'height': 600 }); (new CommentLoader(inst.cmManager)).setParser('BilibiliParser').load('GET', 'https://api.bilibili.com/x/v1/dm/list.so?oid=57224830'); </script>

支持Acfun的json

从抓包来看,还是libxml.js导入了弹幕文件。

这肯定是不能用JSON了。

但是从CommentCore来看应该是可以用JSON的。

希望啥时候写一个JSON的例子。。。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.