关闭

视频全屏弹幕实现

时间: 2019-04-07阅读: 2020标签: 视频

问?视频全屏后如何加弹幕
答:了解一下 screenfull; pointer-events: none;(如果你没有领会我的意思,我可以手摸手带你撸一遍)  


视频全屏遇到的问题

最近在搞给视频加个花边的东西用的 Flash,在全屏的时候浏览器会把视频层级提高(H5也有同样的问题),(重点是 Flash 并不草理你的DOM,大家玩玩就懂我的意思了。)导致全屏后通过position定位的花边位于了视频下方,简单的说花边在视频全屏的时候不展示


处理问题的过程

最开始用的是非常常规的想法,如何在视频全屏的时候降低视频的层级,使我需要的div块位于视频上方。然后尝试了各种方法,结果被制裁的服服帖帖的,大家可以去搞搞。其实仔细思考我要做的就是类似于弹幕的东西,咦~~B站怎么实现的。


别人家的弹幕

B站肯定是拿不到源码的啦,缕他控制台的资源,element,style。人家确实全屏的时候实现了,弹幕 

写的DOM结构,和css样式并不复杂,全屏无外乎全屏的时候给DOM加了一个样式而已。我也照着试了不行。


错在了哪里  

这个问题如果思路错了就是个死胡同。所以我在找问题的时候趟了很多坑。思路错在我不应该使用视频的全屏,敲黑板!划重点啦!不要使用视频的全屏!(解决了问题的时候才幡然醒悟),然后发现了个贼有意思的东西。[screenfull][3]。不知道B站他们怎么玩的,但是我用这个实现了。这个东西做了一个事情让你浏览器的DOM铺满全屏。欧?~~~


实现它  

DOM

<div class='player' id='vb'>
    <video id='vd' playsinline webkit-playsinline="true" controls style='object-fit: contain;'>
      <source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" type="video/mp4" />
    </video> 
    <div class='video-status' id='log'>
      <img src="http://wx4.sinaimg.cn/large/006ARE9vgy1fs9w9ukwjhj30g40afaap.jpg" alt="">
    </div>
  </div>

Script

<script src="https://cdn.bootcss.com/screenfull.js/4.1.0/screenfull.js"></script>
<script>
  const log = document.getElementById('log')
  const videoBox = document.getElementById('vb')
  log.onclick = _=> {
    const fullFlag = videoBox.className.indexOf('full-screen')
    if (fullFlag === -1) {
      videoBox.setAttribute('class', 'player full-screen')
    } else {
      videoBox.setAttribute('class', 'player')
    }
    screenfull.toggle()
  }
</script>

CSS

<style>
/* reset */
html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,form,fieldset,legend,input,button,textarea,menu{margin:0;padding:0;}
header,footer,section,article,aside,nav,hgroup,address,figure,figcaption,menu,details{display:block;}
table{border-collapse:collapse;border-spacing:0;}
caption,th{text-align:left;font-weight:normal;}
html,body,fieldset,img,iframe,abbr{border:0;}
i,cite,em,var,address,dfn{font-style:normal;}
[hidefocus],summary{outline:0;}
li{list-style:none;}
h1,h2,h3,h4,h5,h6,small{font-size:100%;}
sup,sub{font-size:83%;}
pre,code,kbd,samp{font-family:inherit;}
q:before,q:after{content:none;}
textarea{overflow:auto;resize:none;}
label,summary{cursor:default;}
a,button{cursor:pointer;}
h1,h2,h3,h4,h5,h6,em,strong,b{font-weight:bold;}
del,ins,u,s,a,a:hover{text-decoration:none;}
body,textarea,input,button,select,keygen,legend{font:12px/1.14 arial,\5b8b\4f53;color:#333;outline:0;}
body{background:#fff;}
a,a:hover{color:#333;}

.player {
  width: 800px;
  height: auto;
  margin: 0 auto;
  position: relative;
  background-color: black;
}
.player video{
  width: 100%;
  height: 100%;
}
.video-status {
  position: absolute;
  right: 100px;
  top: 40px;
}
.video-status img {
  width: 100px;
}
.full-screen {
  position: fixed;
  width: 100%;
  height: 100%;
}
</style>

去我的代码里找你需要的东西吧。


pointer-events是啥?弹幕呢?

pointer-events 是一个CSS属性做点透的时候用的,如果你有一个弹幕层在Video上边你会需要到她的。弹幕呢,没有。好多人都已经实现了好不好,这个你还是去问问[百度][5]或者[必应][6]吧。  

GitHub 地址 https://github.com/Gao-Fan/vi

来自:https://segmentfault.com/a/1190000018775038



站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/2745

关闭

Web视频格式

网络视频一直都很火。虽然在页面上嵌入 Instagram 和 Youtube 视频非常简单,但是有越来越多的需求 —— 比如许多电子商务的场景 —— 要求定制的视频传输方法。

h5页面自动播放视频、音频_关于媒体文件自动全屏播放的实现方式

在移动端(ios和android)播放视频的时候,我们即使定义了autoplay属性,仍然不能自动播放。这是由于手机浏览器为了防止浪费用户的网络流量,在默认情况下是不允许媒体文件自动播放的,除非用户自己对浏览器进行设置才能支持autoplay。

Bideo.js实现全屏视频背景

想在你的网页首页中全屏播放一段视频吗?而这段视频是作为网页的背景,不影响网页内容的正常浏览。那么我告诉你有一款Javascript库正合你意,它就是Bideo.js。

jsmpeg.js_h5移动端视频自动播放

在移动端使用h5自动的video标签播放视频,设置autoplay属性,在android端部分不支持,全屏播放还存在层级问题,ios10以上版本支持视频自动播放,以下版本不支视频自动播放

video.js切换视频源问题

什么要再重新load一下什么替换一下src,没有啥作用,简单粗暴又有效的方法,video的问题,单单替换source的src是不行的,简单明了重新替换整个video标签,将video用js重新替换一遍,更改src

Web端直接播放 .ts 视频

最近项目中需要前端播放 .ts 格式视频,捣鼓了几天学习到很多知识,也发掘了一种优秀的解决方案,项目中已存储的 .ts 切片数量众多,已经占用了NAS服务器绝大部分的资源,生成的 .m3u8 索引虽然非常小

价值2580元廖雪峰前端视频,终终终于免费啦!

vue是国内最常用的前端框架,作者是尤雨溪大佬中文资料多,而且上手快,生态繁荣,是新手入门的首选框架。即将更新到3.0版本,追赶技术浪潮 进大厂就靠它啦

web视频播放

毫无疑问,现在是短视频、直播的时代。视频内容逐渐代替图文形式成为网友们获取新鲜事物以及展现自我的一大媒介。随着5G的到来,2020年属于直播短视频爆发式增长的一年,电商平台也都涌入直播营销的大风口

JS判断视频Video的播放、暂停、结束完成及获取长度事件监听处理

在日常应用场景中,可能会遇到这么一个情况,需要判断用户是否完整的观看完了一部视频,在这个场景中,和视频相关的事件大体涉及到几个部分,获取视频长度,视频开始播放,暂停播放和播放结束

基于 WebRTC 的 RTSP 视频实时预览

由于项目需要,需要使用摄像头预览功能,设备型号为海康威视。目前已存在的基于 FFmpeg 的方案延迟都太高,所以项目最终选择基于此方案。方案选用为基于 WebRTC 的视频即时通讯,它原生支持对 RTP 协议的解码

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!