视频H5 video最佳实践

video的属性
<video
  id="video" 
  src="video.mp4" 
  controls = "true"
  poster="images.jpg"  // 视频封面
  preload="auto" 
  webkit-playsinline="true" /* 这个属性是ios 10中设置可以让视频在小窗内播放,也就是不是全屏播放*/  
  playsinline="true"  // IOS微信浏览器支持小窗内播放
  x-webkit-airplay="allow" 
  x5-video-player-type="h5"  // 启用H5播放器,是wechat安卓版特性
  x5-video-player-fullscreen="true" // 全屏设置,设置为 true 是防止横屏
  x5-video-orientation="portraint" // 播放器的方向, landscape横屏,portraint竖屏,默认值为竖屏
  style="object-fit:fill">
</video>
src: 视频的地址
controls: 加上这个属性,Gecko 会提供用户控制,允许用户控制视频的播放,包括音量,跨帧,暂停/恢复播放。
poster: 属性规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像。如果未设置该属性,则使用视频的第一帧来代替。
preload: 属性规定在页面加载后载入视频。
webkit-playsinline和playsinline: 视频播放时局域播放,不脱离文档流 。但是这个属性比较特别, 需要嵌入网页的APP比如WeChat中UIwebview 的allowsInlineMediaPlayback = YES webview.allowsInlineMediaPlayback = YES,才能生效。换句话说,如果APP不设置,你页面中加了这标签也无效,这也就是为什么安卓手机WeChat 播放视频总是全屏,因为APP不支持playsinline,而ISO的WeChat却支持。
这里就要补充下,如果是想做全屏直播或者全屏H5体验的用户,IOS需要设置删除 webkit-playsinline 标签,因为你设置 false 是不支持的 ,安卓则不需要,因为默认全屏。但这时候全屏是有播放控件的,无论你有没有设置control。 做直播的可能用得着播放控件,但是全屏H5是不需要的,那么去除全屏播放时候的控件,需要以下设置:同层播放
x-webkit-airplay="allow" : 这个属性应该是使此视频支持ios的AirPlay功能。使用AirPlay可以直接从使用iOS的设备上的不同位置播放视频、音乐还有照片文件,也就是说通过AirPlay功能可以实现影音文件的无线播放,当然前提是播放的终端设备也要支持相应的功能
x5-video-player-type: 启用同层H5播放器,就是在视频全屏的时候,div可以呈现在视频层上,也是WeChat安卓版特有的属性。同层播放别名也叫做沉浸式播放,播放的时候看似全屏,但是已经除去了control和微信的导航栏,只留下"X"和"<"两键。目前的同层播放器只在Android(包括微信)上生效,暂时不支持iOS。至于为什么同层播放只对安卓开放,是因为安卓不能像ISO一样局域播放,默认的全屏会使得一些界面操作被阻拦,如果是全屏H5还好,但是做直播的话,诸如弹幕那样的功能就无法实现了,所以这时候同层播放的概念就解决了这个问题。不过在测试的过程中发现,不同版本的IOS和安卓效果略有不同
x5-video-orientation: 声明播放器支持的方向,可选值landscape 横屏, portraint竖屏。默认值portraint。无论是直播还是全屏H5一般都是竖屏播放,但是这个属性需要x5-video-player-type开启H5模式
x5­-video­-player­-fullscreen:全屏设置。它又两个属性值,ture和false,true支持全屏播放,false不支持全屏播放。其实,IOS 微信浏览器是Chrome的内核,相关的属性都支持,也是为什么X5同层播放不支持的原因。安卓微信浏览器是X5内核,一些属性标签比如playsinline就不支持,所以始终全屏。
全屏处理
ios
ios加playsinline属性,之前只带webkit前缀的在ios10以后,会吊起系统自带播放器,两个属性都加上基本ios端都可以保证内敛到浏览器webview里面了。如果仍有个别版本的ios会吊起播放器,还可以引用一个库iphone-inline-video(具体用法很简单看它github,这里不介绍了,只需加js一句话,css加点),github地址加上playsinline webkit-playsinline这两个属性和这个库基本可以保证ios端没有问题了(不过亲测,只加这两个属性不引入库好像也是ok的,至今没有在ios端微信没有出现问题,如果你要兼容uc或者qq的浏览器建议带上这个库).
android
x5-video-player-type="h5"属性,腾讯x5内核系的android微信和手Q内置浏览器用的浏览器webview的内核,使用这个属性在微信中视频会有不同的表现,会呈现全屏状态,貌似播放控件剥去了,至少加了这个属性后视频上层可以有其他dom元素出现了(非腾讯白名单机制的一种处理措施)。
<video id="video" src="xx.mp4" playsinline webkit-playsinline></video>

自动播放
android始终不能自动播放,不多说。值得一提的是经测现在ios10后版本的safari和微信都不让视频自动播放了(顺带音频也不能自动播放了),但微信提供了一个事件WeixinJSBridgeReady,在微信嵌入webview全局的这个事件触发后,视频仍可以自动播放,这个应该是现在在ios端微信的视频自动播放的比较靠谱的方式,其他如手q或者其他浏览器,建议就引导用户出发触屏的行为操作出发比较好。

document.addEventListener("WeixinJSBridgeReady", function (){ 
    video.play();
    video.pause();
}, false)
ios10以后对于video出了新策 感兴趣可以了解一波 https://webkit.org/blog/6784/new-video-policies-for-ios/

播放控制
对于video或者audio等媒体元素,有一些方法,常用的有play(),pause();也有一些事件,如loadstart,canplay,canplaythrough,ended,timeupdate....等等。
在移动端有一些坑需要注意,不要轻易使用媒体元素的除ended,timeupdate以外event事件,在不同的机子上可能有不同的情况产生,例如:ios下监听canplay和canplaythrough(是否已缓冲了足够的数据可以流畅播放),当加载时是不会触发的,即使preload="auto"也没用,但在pc的chrome调试器下和android下,是会在加载阶段就触发。ios需要播放后才会触发。总之就是现在的视频标准还不尽完善,有很多坑要注意,要使用前最好自己亲测一遍。就是当第一次播放视频的时候ios端,如果网络慢,视频从开始播到能展现画面会有短暂的黑屏(处理视频源数据的时间),为了避免这个黑屏,可以在视频上加个div浮层(可以一个假的视频第一帧),然后用timeupdate方法监听,视屏播放及有画面的时候再移除浮层。

video.addEventListener('timeupdate',function (){
    //当视频的currentTime大于0.1时表示黑屏时间已过,已有视频画面,可以移除浮层(.pagestart的div元素)
    if ( !video.isPlayed && this.currentTime>0.1 ){
        $('.pagestart').fadeOut(500);
        video.isPlayed = !0;
    }
})
隐藏播放控件
据说腾讯的android团队的x5内核团队放开了视频播放的限制,视频不一定调用它们那个备受诟病的视频播放器了,x5-video-player-type="h5"属性这个属性好像就有点那个意思,虽然体验还是有点...(导航栏也会清理)但至少播放器控件没有了,上层可以浮div或者其他元素了,这个还是值得一提。还有一点值得说的是,带播放器控件的隐藏.

<div class="videobox" ontouchmove="return false;">
    <video id="mainvideo" src="test.mp4" x5-video-player-type="h5" playsinline webkit-playsinline></video>
</div>

比如这个videobox在android下隐藏,只用display:none貌似还是不行的,但加个z-index:-1,设置成-1就可以达到隐藏播放器控件的目的了。

参考文章
html5--移动端视频video的android兼容,去除播放控件、全屏等
MDN-Video
视频H5のVideo标签在微信里的坑和技巧
移动端HTML5视频播放优化实践
微信端视频播放问题
————————————————
版权声明:本文为CSDN博主「IT博客技术分享」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41646249/article/details/90547733

视频H5 video最佳实践相关推荐

  1. 从云原生到智能化,深度解读行业首个「视频直播技术最佳实践图谱」

    在2022阿里云直播峰会上,多位直播产业领域技术专家与行业先行者,共同探讨超视频化时代视频直播技术的演进趋势与未来发展.会上,阿里云重磅发布了行业首个「视频直播技术最佳实践图谱」,将直播技术归纳总结为 ...

  2. 全球多媒体视频内容保护最佳实践

    随着后疫情时代教育全面转向线上.短视频和影视剧市场需求增加,音视频平台对于内容保护的重视更是前所未有.国内,5G的加持下,视频的消费蓬勃发展,用户付费习惯养成,如何增加和保护收益,成为各视频平台和在线 ...

  3. 阿里云发布行业首个「视频直播技术最佳实践图」!

    2022阿里云直播峰会于7月8日落下帷幕,多位直播产业领域技术专家与行业先行者,共同探讨超视频化时代直播技术的演进趋势与未来发展. 此次大会,重磅发布了行业首个「视频直播技术最佳实践图」,将直播技术归 ...

  4. 【线上分享】全球多媒体视频内容保护最佳实践

    随着后疫情时代教育全面转向线上.短视频和影视剧市场需求增加,音视频平台对于内容保护的重视更是前所未有.国内,5G的加持下,视频的消费蓬勃发展,用户付费习惯养成,如何增加和保护收益,成为各视频平台和在线 ...

  5. html5 video标签不能播放视频,h5 video 视频不能正常播放

    在页面中用video标签嵌入了一个视频: 其中 video 的 poster 属性的值和 source 的 src 的值都是存在 json 数组里动态获取的. 这个页面用ios自带的浏览器和qq直接打 ...

  6. 15年双11手淘 H5性能最佳实践

    2015年是全面『无线化』的一年,在BAT(财报)几家公司都已经超过50%的流量来自移动端,这次 双11 更是占到了68.67%无线交易 (天猫微博). 手淘中大量的业务采用H5的方式开发,H5体验好 ...

  7. 15年双11手淘前端技术巡演 - H5性能最佳实践(转载,好文)

    转载:原文链接 前言 2015年是全面『无线化』的一年,在BAT(财报)几家公司都已经超过50%的流量来自移动端,这次 双11 更是占到了68.67%无线交易 (天猫微博). 手淘中大量的业务采用H5 ...

  8. 视频直播 > 最佳实践 > 如何降低延时

    如何降低延时? 更新时间:2020-09-17 18:51:14 本页目录 GOP 帧设置 服务器缓存设置 确认使用的播放协议 按正常情况,RTMP 推流 + FLV 播放的正常延迟在 2-3s 左右 ...

  9. 资源放送丨《基于IB网络的Oracle Extend RAC最佳实践》PPT视频

    点击上方"蓝字" 关注我们,享更多干货! 前段时间,墨天轮邀请资深专家 桑凯 老师分享了<基于IB网络的Oracle Extend RAC最佳实践>,在这里我们将课件P ...

最新文章

  1. 计算机组成算术流水线,计算机组成系统结构试题整理.doc
  2. Scala入门与进阶(五)- Scala数组
  3. 软件测试理论之测试用例设计六把刀
  4. some of the strides of a given numpy array are negative
  5. nb信号和4g信号_手机信号很强但是4G网络却很卡?学会这三招,立马恢复网速
  6. 编译原理(三)之语义分析
  7. 破除“论文至上”!两部委发文规范SCI指标使用
  8. Terraform 开发指南
  9. 移动端照片上传、头像裁剪完整功能,兼容iphone,android (一)
  10. html css 时钟,css3时钟
  11. C语言16进制字符串转数字
  12. Windows Azure AppFabric Caching入门简介
  13. 怎样将exe打包成服务运行
  14. xp系统如何更改计算机用户名,xp用administrator_XP系统修改administrator的用户名_xpadministrator...
  15. 15、作用域public、private、protected 以及不写时的区别
  16. Pointer Network指针网络
  17. Coloring Contention
  18. b、B、kb、kB单位
  19. SPI都不知道?还敢说懂Dubbo?面试官怼的我哑口无言啊!!!
  20. 【论文阅读】Heterogeneous Graph Attention Network

热门文章

  1. Mac外接4k显示器文字变小
  2. Ubuntu 16.04 下 旋转显示器屏幕 竖屏显示
  3. 24点游戏的递归解法和Python实现
  4. 算法训练 24点游戏
  5. 有关HTML的学习笔记
  6. CentOS命令行改色。
  7. php开发自己的composer包
  8. 福利啊,精品资源大放送
  9. HPET(High Precision Event Timer)简要说明
  10. 计算机c盘能备份数据吗,Win10不进系统就能备份C盘文件的方法,你知道吗?