随着抖音、快手这类的视频类app的火爆,移动端h5视频类应用也随之兴起,使用video播放的场景也越来越多,本篇文章主要例举了移动端视频播放的一些场景和个人在开发过程中遇到的一些问题,希望在看过这篇文章后,能对开发者在移动端使用video播放时快速开发减少踩坑

全屏播放

视频的全屏播放是移动端一个很常见的场景,因此我们需要对video设置全屏播放,全屏播放用到的方法是requestFullscreen(),再加上考虑浏览器的兼容性问题,需要加上兼容代码:

let ele = document.getElementById('video')

if (ele.requestFullscreen) {

ele.requestFullscreen()

} else if (ele.mozRequestFullScreen) {

ele.mozRequestFullScreen()

} else if (ele.webkitRequestFullScreen) {

ele.webkitRequestFullScreen()

}

ele.play()

获取video元素节点,然后判断不同浏览器的requestFullscreen属性,调用不同的请求全屏的方法,这样就能保证视频的全屏播放

微信浏览器全屏播放

为什么要单独提及微信浏览器下的视频全屏播放能?因为在微信下你可以选择使用原生浏览器内核渲染video还是启用腾讯的x5内核渲染,有什么区别呢?如果使用原生渲染,那就和在普通浏览器渲染一样,但是如果启用腾讯x5内核渲染,当视频播放时,x5内核会强制视频全屏播放,但是目前并不支持ios,接下来就一起来看微信中x5内核全屏播放表现

x5内核同层播放

通过给video标签添加x5-video-player-type="h5"属性启用x5内核,启用x5内核渲染video虽然会全屏播放视频,但是这样也提供了更好的用户体验,同时x5内核渲染还有一个优点就是支持同层渲染,video播放时层级不再是最高级,可以有元素浮在video上方,大概效果如下图:

WechatIMG310.jpeg

如上图所示,这是全屏播放的视频,同时在这个视频上面层叠了一个透明的浮层,但是会明显发现视频播放时有黑边,那是因为没有声明x5-video-player-fullscreen,如果不申明此属性,页面得到视口区域为原始视口大小(视频未播放前),比如在微信里,会有一个常驻的标题栏,如果不声明此属性,这个标题栏高度不会给页面,播放时会平均分为两块(上下黑块),设置了属性效果图如下:

WechatIMG312.jpeg

会明显看到视频上顶到标题栏,黑边消失,如果此时视频的宽高使用的并不是动态计算的单位,你还需要重新赋值视频宽高:

window.onresize = function(){

test_video.style.width = window.innerWidth + "px";

test_video.style.height = window.innerHeight + "px";

}

playsinline

当在微信浏览器下想用x5内核渲染,但是又不想强制全屏播放怎么办呢?这个时候就要playsinline属性了,这个属性也能解决一些其他的移动端浏览器强制全屏播放的问题,只需要设置playsinline="true",webkit-playsinline="true"声明,就可以了,但是在x5下渲染,也就是说在android下如果要用x5渲染一定会全屏播放

事件差异

loadedmetadata

此事件表示媒体的元数据已经加载完毕,现在所有的属性包含了它们应有的有效信息,常用的信息有duration,获取视频的时长,但是这个属性在android和ios下有点差别,在android中,在加载完视频后就会触发,获取到相应视频信息,但是在ios下,微信浏览器中此事件视频加载完成后并不会触发,点击播放后才会触发,但是在safari浏览器中视频加载完成后就会触发

canplay

此事件表示在媒体数据已经有足够的数据(至少播放数帧)可供播放时触发,此事件在android下视频加载的时候就会触发,但是在ios中要视频播放后才会触发

自动播放

在android中autoplay属性只有chrome浏览器中同时设置autoplay和muted(禁音)才能自动播放,其他浏览器均不支持让视频自动播放,并且在android微信浏览器中同时设置autoplay和poster属性,poster属性也会失效,视频封面展示不出来,在ios移动端中autoplay并不能直接自动播放,但是mac safari中在video中设置autoplay和muted属性可以自动播放,这和在网上看到的文章有点出入,在MDN上有一个video属性支持表:

总结

随着移动流量时代的到来,移动端的上网体验的优化,更多的视频播放场景和需求都会承载到移动端上,但是移动端的视频播放由于浏览器内核、系统等限制性导致视频在播放时表现不一,需要开发人员花时间精力去处理此类问题,希望这篇文章能对大家在移动端使用video标签时有帮助。如果有错误或不严谨的地方,欢迎批评指正,如果喜欢,欢迎点赞。

html5中插入视频无效原,h5视频播放踩坑记录相关推荐

  1. html5中插入视频无效原,来自wmv的h264剪辑在iPad上的HTML5视频中无效(黑屏)

    我需要在iPad上的视频标签中播放.wmv文件.使用Handbrake我已经在Chrome中播放了视频,所以我知道我的语法很好.我甚至还有另一个网站的mp4在iPad上播放没有任何问题. 这就是ffm ...

  2. vue2路由中router-view不显示的原因及踩坑记录

    由于平常都不太注意命名细节,对于变量的命名并没有太大的规范,在加上看官方文档并没与什么说明变量名必须为routes,我给写成了routers所以出现了这个原因,不多说上代码 在代码中const声明的变 ...

  3. html插入视频时不自动播放,html5中嵌入视频自动播放的问题解决

    在h5页面中嵌入视频的情况是比较多件的,有时候会碰到需要自动播放的情况,之前根本觉得这不是问题,但是自己的项目中需要视频的时候就有点sb了,达不到老板的要求,那个急呀~~~ 各种查资料,找到一个方法, ...

  4. html5中加视频的代码,向HTML中插入视频并兼容所有浏览器的方法

    向HTML中插入视频有两种方法,一种是古老的object标签,一种是html5中的video标签,前者兼容性相对好些,后者兼容性让人头疼 最常用的向HTML中插入视频的方法有两种,一种是古老的标签,一 ...

  5. html5代码转换为视频,HTML5中的视频代码详解

    摘要 腾兴网为您分享:HTML5中的视频代码详解,智学网,云闪付,易推广,小红书等软件知识,以及360win10,流量魔盒,fitbit,上港商城,安卓2.3.7,全民惠,五年级下册英语单词表图片,t ...

  6. html中插人视频教程,HTML中插入视频并兼容所有浏览器

    向HTML中插入视频有两种方法,一种是古老的object标签,一种是html5中的video标签,前者兼容性相对好些,后者兼容性让人头疼 最常用的向HTML中插入视频的方法有两种,一种是古老的标签,一 ...

  7. java html中引入视频的格式_怎么在HTML网页中插入视频

    展开全部 向HTML中插入视频有两种方法e68a8462616964757a686964616f31333366306433,一种是古老的object标签,一种是html5中的video标签. 前者兼 ...

  8. html 网页中插入视频没有画面只有声音的问题

    在html中插入视频,没有画面只有声音. <video width="100%" height="100%" controls="control ...

  9. gis插入的文本怎么搞成两行_word文档编辑:如何在文档中插入视频?

    编按:Word是常用的办公软件,在制作Word文档的过程中,可能会用到视频演示,特别是在教学的时候,用视频播放短片,会非常形象直观,通俗易懂,那么,在Word中怎么插入视频呢?今天将为大家分享在Wor ...

最新文章

  1. python【数据结构与算法】最小生成树之Kruskal算法
  2. 机器学习入门需要多久
  3. 1111 Online Map (30 分)【难度: 一般 / 知识点: Dijkstra最短路】
  4. [BZOJ1860][ZJOI2006]Mahjong(DP)
  5. java学习(四)static静态变量 和this
  6. php tableau,Tableau函数
  7. win10应用商店linux_win10应用商店中有哪些推荐的应用?
  8. 易语言dd驱动模拟按键模块_DD驱动 虚拟键盘 虚拟鼠标
  9. 解决 iOS 13 定位权限弹框自动消失
  10. 如何加速android模拟器,Android模拟器运行慢怎么办 Android模拟器如何加速【加速方法】...
  11. 以管理员身份运行闪退怎么解决_win7右击获得管理员权限时窗口闪退
  12. h5/5+APP消息推送神器:Goeasy.js
  13. 2022-2027年(新版)中国大米行业营销战略与供应情况预测报告
  14. C程序设计(谭浩强)的几处错误
  15. 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第四篇 新版kernel(L4.1.15-r)移植
  16. 蝴蝶键盘 Linux,Macbook蝴蝶键盘与普通键盘有什么不一样? 蝶式结构键盘解析
  17. events.js:174,throw er; //Unhandled ‘error‘ event
  18. 【五一创作】Matlab 绘制风速、风向统计玫瑰花图【优化】
  19. unity怪物攻击玩家减血_Unity3D 战斗系统中的怪物简单AI(简单AOI)
  20. 给右键菜单加入CMD命令行快速通道(适合win7)

热门文章

  1. 通过ccb(CocosBuilder)文件生成cocos2dx代码
  2. mac利用vnc远程连接服务器ubuntu16出现灰屏和鼠标变黑色x的解决方法
  3. 2023nethunter+nexus6p刷机笔记
  4. JavaScript-0902-ajax
  5. linux下usleep nanosleep select的比较经历
  6. 《深入理解Java虚拟机:JVM高级特性与最佳实践》书评
  7. 金融信息破局刍议【5】平台陷阱
  8. 疫情反复下,5个营销动作让日化线下门店销量平稳微增
  9. 如何用U盘安装GHOST版XP系统
  10. mysql 文件签名校验失败怎么办_刷机失败显示“更新文件签名验证失败”怎么办?...