加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

html5 移动端视频video的android兼容(去除播放控件、全屏)

发布时间:2020-03-28 23:34:08 所属栏目:编程 来源:站长网
导读:副问题#e# android下html5的视频播放一向是前端兼容的重灾区,各类体验差,被诟病已久。但之前的故宫穿越H5,和吴亦凡入伍H5,操作的视频技能,貌似又给人一种新面孔。 前段时刻做某项目,刚好也是一个相同视频全屏的,下面跟各人分享下经验的坑和填坑的办
副问题[/!--empirenews.page--]

android下html5的视频播放一向是前端兼容的重灾区,各类体验差,被诟病已久。但之前的故宫穿越H5,和吴亦凡入伍H5,操作的视频技能,貌似又给人一种新面孔。

前段时刻做某项目,刚好也是一个相同视频全屏的,下面跟各人分享下经验的坑和填坑的步伐。

ios端题目着实没什么,根基都在android端,根基每一个带有视频的项目城市碰着的,虽然有非凡需求的发生的环境另说了就,题目首要有几个方面:

全屏处理赏罚;

自动播放;

播放节制;

潜匿播放控件;

video全屏的处理赏罚

这个着实不难,只需在video标签加个webkit-playsinline属性即可,这个属性根基上在基于webkit内核的移动端都是没题目的,此全屏非彼全屏,它是在赏识器视窗内的全屏,并不是占居整个手机的全屏,虽然我们做web端必要的就是在document的body内的视窗范畴的全屏。

<video id="myvideo" src=http://www.jb51.net/html5/"test.mp4" webkit-playsinline="true"></video>

在ios下,视频被嵌入后,媒体的元数据加载完成后,会以全屏的情势表现出来,可能加个poster,可以看到画面。但在android下,大都机子是不表现视频画面的,要不就是表现一个玄色的还不是全屏的播放控件,纵然及加个poster封面也不济于是。由于poster在android兼容的并欠好,不如在视频上层加个div虚耗图片,这个较量好的处理赏罚方法应该是:视频上加一层div做封面,因为android不应承视频上层有对象,以是起首将视频设为的width:1px,当播放后,上层的封面remove掉,同时width:100%可能你想要的宽度。

video的自动播放

这个的话就不多说了,信托各人跟我一样,试图探求android下,页面加载完毕就可以自动播放,但实际是残忍的,android下是不应承自动播放的,纵然你用了video.play(),也是不可的。必需有效户的主动触发,好比触摸了屏幕,有click或touch变乱发生。不知往后android会不会改造,但至少今朝来看是不可的。较量的好的步伐是,引导用户触发,滑屏或touch的举动,然后挪用video.play()播放,给用户一个自动播放的错觉。

video播放的节制

对付video可能audio等媒体元素,有一些要领,常用的有play(),pause();也有一些变乱,如'loadstart','canplay','canplaythrough','ended','timeupdate'.....等等。

在移动端有一些坑必要留意,不要等闲行使媒体元素的除'ended','timeupdate'以外event变乱,在差异的机子上也许有差异的环境发生,譬喻:
ios下监听'canplay'和'canplaythrough'(是否已缓冲了足够的数据可以流通播放),当加载时是不会触发的,纵然preload="auto"也没用,但在pc的chrome调试器下和android下,是会在加载阶段就触发。ios必要播放后才会触发。
总之就是此刻的视频尺度还不尽完美,有许多坑要留意,要行使前最好本身亲测一遍。

关于节制的题目还想说一点就是android在播放视频时会有个控件初始化的进程,在全屏视频想伪装成非视频时,是我们很不想看到的,我的办理思绪是这样:
在我们必要播放时提前初始化它,即必要播放的时刻前先设width:1px;然后play()一下,使视频已经播放初始化。然后再必要播放的时辰再次play()时就不会发生,控件拉伸的环境了。

“去除”android下的播放控件条

重头戏来了,信托这个这个题目已困扰无数的前端开拓职员,再征采这个题目的办理要领时,险些全部的文章都是汇报你android下,播放器的控件是去不了的。着实好像确实是这样的,但你看了故宫穿越H5,和吴一凡谁人H5后,会发明,在android下,也是没有节制条的。最初看到那些H5视频我起首并没有去看他们的内容何等新奇,撒播量何等广,我是第一时刻测试了android下的兼容题目,发明并没有呈现节制条。在我研究半天未果时,在一篇技能帖中看到说:因是腾讯本身的项目,微信是腾讯本身的,他们在赏识器里做了一些设置,对旗下出品的H5有所“厚待”,才气确保视频的顺遂“乔装”。

上面的说法我并没有真正核实过,但仿佛是这么回事,很是有幸我做的谁人视频项目也是腾讯的,着实是有机遇可以向他们证实一下以上说法的,但纵然是这样的,也只有腾讯的项目有这样的办理步伐,对付宽大的开拓者来说好像并太不公正,我试图找到一种办理去除播放控件的办理方案,下面是我花了许多心思找到的一种办理步伐,看似很简朴也不那么高峻尚,但确实办理了题目,跟各人分享:

我这里只看android的环境,ios根基没什么题目,就忽略啦。
测试机android版本:5.1
起首我们将谁人H5视频地点嵌入本身的页面,你会发明晰实播放器呈现了。如下

怎么办呢,不是腾讯本身的项目就没步伐了嘛?再我搜了N多资料未果后,发明白一个细节,节制条始终是最下方的,可不行以让视频的尺寸放大些,将节制条顶到赏识窗口表面,就看不到了嘛,于是我将视频宽高放大到120%-----控件条神奇的‘消散’了(着实是顶到视窗表面了),惊喜万分啊。

详细思绪和实现如下:

html中将video标签外包一层,

<div class="videobox"> <video id="mainvideo" webkit-playsinline="true" src=http://www.jb51.net/html5/"http:/7xvl2z.com1.z0.glb.clouddn.com/nigg2.mp4"></video> </div>

初始样式表如下:

html,body { padding: 0; margin: 0; width: 100%; height: 100%; -webkit-user-select: none; user-select: none; overflow: hidden; } .videobox { width: 100%; height: 100%; position: absolute; left: 0; top: 0; overflow: hidden; } video {width: 1px;display: blcok;} /* 注:html,body里的overflow:hidden,很是重要,不能省。 由于微信android的播放器是离开DOM布局的,也不会相应click、touch等变乱。 假如视频尺寸大了,会发生转动条,必需在html和body加overflow:hidden, 在videobox加没用的。 */

当视频要播放时改变video的宽度(高度会等比缩放,纵然自界说高度也是没用的,会被忽略)

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读