H5中video使用

Stella981
• 阅读 612

`

属性介绍:
1)src:视频地址

2)controls:Gecoko会提供用户控制,允许用户控制视频的播放,包括音量,跨帧,暂停/恢复播放;  

3)poster:规定视频下载时显示的图像,或者在用户点击播放按钮前显示的图像。如果未能设置该属性,则使用视频的第一帧来代替;  

4)preload:属性规定在页面加载后载入视频;  

5)webkit-playsinline和playsinline:视频播放时局域播放,不脱离文档流。但是这个属性比较特别,需要嵌入的APP比如webchat中  

webview.allowsInlineMediaPlayback = YES,才能生效。换句话说,如果APP不设置,你页面中加了这标签也无效,这也就为什么安卓手机
wechat视频播放总是全屏,因为APP不支持playsinline,而IOS的wechat支持;
这里就要补充下,如果是想做全屏直播或者全屏H5体验的用户,IOS需要设置删除 webkit-playsinline 标签,因为你设置 false 是不支持的 ,
安卓则不需要,因为默认全屏。但这时候全屏是有播放控件的,无论你有没有设置control。 做直播的可能用得着播放控件,但是全屏H5是不需要的,
那么去除全屏播放时候的控件,需要以下设置:同层播放

6)x-webkit-airplay="allow";这个属性应该是此视频支持IOS的AirPlay功能。使用AirPlay可以直接从使用IOS的设备上的不同位置播放视频  

音乐还有照片文件。也就是说通过AirPlay功能可以实现影音文件的无线播放,当然前提是播放的终端设备也要支持相应的功能;

7)x5-video-player-type:启用同层H5播放器,就是视频全屏的时候,div可以呈现在视频层上,也就是wechat安卓特有的属性。  

同层播放别名也叫做沉浸式播放,播放的时候看似全屏,但是已经除去了control和微信的导航栏,只留下“X”和“<”。目前的同层播放只能在
Android(包括微信)上生效,暂时不支持IOS。

8)x5-video-orientation:声明播放器支持的方向,可选值为landscape横盘,portaint竖屏(默认值)。无论是直播还是全屏H5一般都是竖屏播放,  

但是这个属性需要x5-video-player-type开启H5模式;

9)x5-video-player-fullscreen:全屏设置,它有两个属性: true 和 false;  

全屏处理
ios:
ios加playsinline属性,之前加webkit前缀的在ios10以后,会吊起系统自动播放器,两个属性都加上基本ios端都可以保证内敛到浏览器webview中。
如果仍有个别版本的ios会吊起播放器,还可以引用iphone-line-video。
android:
x5-video-player-type="h5"属性,腾讯X5内核系的android微信和手Q内置浏览器用的浏览器webview内核,使用这个属性在微信中适配会有不同的表现,
会呈现全屏状态,貌似播放控件剥去了,至少加上这个属性后视频上层可以由其他DOM元素出现。

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

播放控制
对于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时,表示黑屏时间已过,已有视频画面,可以移除浮层
if(!video.isPlayed && this.currentTime>0.1){
$('.pagestart').fadeOut(500);
video.isPlayed = !0;
}
})

隐藏播放控件
据说腾讯的安卓团队的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就可以达到隐藏播放器控件的目的了。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
LayaAir使用原生Video视频播放以及Video监听事件
1.原生Video的基本属性src:视频的属性,url地址poster:视频封面,没有播放时显示的图片preload:预加载|none|metadata(部分预加载)|auto。默认为autoautoplay:自动播放loop:循环播放controls:浏览器自带的控制条width:视频宽度height:视频高
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这