在andriod手机上video视频播放时自动置顶自动全屏的问题

问题:h5开发人员在做直播的时候,会发现视频在播放的时候会置顶,文字什么的根本加不上去

查了很多资料,有人说用样式层级方法,有人说用canvas画布来实现,反正我是没实现
也查看了各大视频APP分享到微信中的视频,比如:爱奇艺,优酷,腾讯、抖音等
     只有腾讯的视频最正常
     原来由于现在微信内置浏览器采用腾讯X5内核,而这个坑爹的X5对web标准有很多刻意为之的不遵循,video强制全屏就是其一。
     X5内核以增强用户体验为名,给video套上了自己的UI并强制全屏,这个全屏不接受DOM层面的任何约束,视频播放完毕后还会出现QQ自己的视频推荐,这就给很多video应用开发者套上了枷锁,我们的项目也成了受害者。
     在腾讯论坛中有一篇公告,显示腾讯承认X5内核对播放器做了覆盖。在腾讯浏览服务平台有技术问答,也针对这个问题进行了探讨提问。但不知道为什么,现在全都消失了。一直说会更新解决,至今仍然没有消息。。。
     并且曾开放过白名单,加入白名单的域名可以不受此影响(包括腾讯集团的各个网站)。但如今白名单已经关闭申请。。。

注意:
  1. 确认webkit-playsinline在安卓上无效,但此属性在iOS上兼容不错,建议保留
  2. 试用canvas的drawImage命令把整个视频放入canvas上,无奈实在太卡,而且声音也不好控制
  3. 既然video的ended事件正常执行,尝试了在ended事件把整个video删除,或者增加其他元素的z-index。
    然而都无效,这个全屏层显然是系统级的,不再只页面上的一个元素,各种页面层DOM操作都对他产生不了任何影响。
  4. 有说在腾讯自己的服务器上放视频不会有此问题。我尝试把视频上传到腾讯视频平台,视频被打上了腾讯视频的水印我忍了,但还是发现最新版本的腾讯视频平台已经关闭了视频源文件地址,只给了一个swf地址,无法在手机浏览器直接播放。通过各种手段勉强获取到了一部分真实视频地址,但发现获取到的视频只有15秒,无法使用。看来腾讯已经把这条路堵死了。

由于这些坑爹的原因,在做h5的直播视频播放及加播广告上,费了很大的功夫。。。
最后,是在这段代码的基础上,来制作直播相关的视频播放滴

//在andriod手机上,添加video的一些属性
$('video').attr('x5-video-player-type', 'h5');
$('video').attr('x-webkit-airplay', true);
$('video').attr('x5-video-player-fullscreen', true);
$('video').attr('x5-video-ignore-metadata', true);
$('video').attr('object-fit', 'fill');
$('video').attr('object-position', 'center center');

这样,播放视频的时候,页面强制全屏,视频和文字全部置于顶层,再进行一系列的需求处理

你可能感兴趣的:(视频播放器)