一、问题

这个问题其实一度困扰我很久了,类似小米浏览器、魅族浏览器等等手机的默认浏览器上,video标签的样式修改会无效,且一旦播放就会全屏,层级提升到最前,并且有不可修改的控制条,对前端做美化极其的不友好。

在解决这个问题的路上,尝试过很多方案,比如转换成mpeg,用canvas渲染,或者修改成序列帧,但是不是画质太低,就是有性能开销大。也尝试过使用videojs之类的播放器,但是很可惜 一旦开启autoplay属性 就会被浏览器劫持video组件。

在之后,偶然间研究B站的flv.js的时候,发现了意外的惊喜,video居然没有被浏览器劫持,之后经过仔细研究,最终得出结论,如果video的src绑定的是blob对象,也就是视频流的话,安卓默认浏览器因为认不出数据格式,就不会劫持video标签的渲染。

在这之后,事情就简单多了,只需要把需要播放的文件转换成流,喂入video就完事了,不过微信端由于软件的设置,必须有交互动作才可以播放视频,这点需要注意。

二、解决

我们项目是vue写的,原生js或者react理论上同理,部分代码如下:

<template><div class="home-page"><video x5-video-player-type="h5":src="videoData":poster="require('@/assets/video/poster.jpg')"autoplaymuted="muted"ref="loopVideo"loopwebkit-playsinline=""playsinline=""preload="metadata"v-if="videoData!==null"></video></div>
</template><script>
export default {name: 'HomePage',components: {},data() {return {videoData:null,}},props: {},watch: {},methods: {init(){let xhr = new XMLHttpRequest();let _this = this;/*通过get请求获取项目中的mp4文件流,因为axios修改responseType稍微有点麻烦,所以干脆写原生xhr请求了 */xhr.open('GET', require('@/assets/video/loopVideo.mp4'), true);//设置请求结果类型为blobxhr.responseType = 'blob';//回调xhr.onload = function(e) {if (this.status == 200) {//创建blob对象,并把值赋给video的src_this.videoData = URL.createObjectURL(this.response);}};xhr.send();}},computed: {},created() {},mounted() {this.init()}
}

希望这篇文章可以帮助苦于部分安卓默认浏览器兼容的人。

解决video标签在部分安卓默认浏览器上的播放样式问题相关推荐

  1. (已解决)video标签在ios端默认全屏播放(h5开发)

    Video在ios全屏播放 这两天一直在做h5开发,项目马上完结,就是到最后项目上线之后,在ios上面测试,突然发现原来的视频默认全屏播放,这样就有很大的限制,很不利于开发,我这边是已经解决这个问题了 ...

  2. HTML5中关于解决video标签禁止右键和下载视频的办法

    近期做了一个关于在线文件管理的项目,类似网盘,基本功能包含用户.消息.项目.分享.文件提取.收藏.回收站等主要功能,领挖还有一些office.压缩包.图片.文本.音频和视频的预览功能. 音频我使用的是 ...

  3. 小程序video标签在(华为手机)无法播放.mp4长视频(ios上正常)

    问题场景 后台上传了有一个大小为700+M的视频文件,结果在小程序播放页面加载一会就会黑屏,并且视频时长也没有解析成功,但是视频路径在浏览器访问是没有问题的.(当时是在小米手机出现该bug) 分析问题 ...

  4. 关于使用video标签插入视频时,视频无法播放的问题

    写代码遇到一个问题:使用video标签插入视频时,在chrome中无法播放,只显示了一个封面图片,在ie却可以播放. video的使用是看别人的: 由于照搬别人的代码,我写的代码如下: <vid ...

  5. 解决H5项目微信浏览器安卓系统无法自动播放背景音乐的问题

    背景 制作的H5项目,使用vedio标签,利用wx.getNetworkType来自动播放背景音乐. 但是安卓的vedio自动播放被微信浏览器限制了. 解决方案 采用web vedio api 细节解 ...

  6. 多个video标签,控制最多只能一个同时播放

    添加一个事件: @play="handlePlay(index)" <divv-for="(item, index) in videoUrlList":k ...

  7. 微信内置浏览器在使用video标签时(安卓)默认全屏的原因及解决办法

    根据X5论坛得到的答案是:设计如此. 腾讯真是越来越嚣张了,一家独大后用户体验都不注重了(不给程序员留活路). 听说有个申请加入vdeo白名单的,域名验证后就可以解决默认全屏(反正我是没见过申请入口, ...

  8. uniapp video 标签,点击进入全屏播放,退出全屏,停止播放,暂停播放

    <video :src="url" controls id="videoId" @play="play"@fullscreenchan ...

  9. 安卓和前段交互——视频播放video标签横竖屏

    第一和前段交互做视频的播放记录一下.需求:前段播放视频 可以全屏点击,点击全屏按钮原生横屏,点击取消横屏原生竖屏. 问题:一开始做的时候因为对webview的WebChromeClient里面的方法了 ...

最新文章

  1. @ImportResource-SpringBoot使用xml配置Bean
  2. HijackThis日志细解【简明教程增强版】(五)
  3. Python基础第三课
  4. SQLite学习手册(C/C++接口简介)
  5. Hadoop 06_MapReduce2.0(YARN)
  6. java 进程同步代码_java 实现进程间的同步(源代码)
  7. 苏泊尔搭载华为鸿蒙系统,华为鸿蒙打算在一年内跨过生死线,拿下16%的市场份额...
  8. java 正则匹配括号是否成对_十分钟学会正则表达式
  9. 系统架构师学习笔记-操作系统(三)
  10. 如何给namedtuple添加docstring
  11. HDU1556 Color the ball【差分数组+线段树】
  12. clickhouse代理Chproxy
  13. 中华优秀传统文化教育的有效渗透
  14. JSP+MySQL基于SSM的高校毕业生就业管理系统
  15. 【环境】NVIDIA驱动安装+cuda11.0(ubuntu16.04)
  16. 交通运输词汇(zt)
  17. Linux链路捆绑的两种方法
  18. Java程序员面试笔记pdf,JqGrid完整例子
  19. NOIP2011 聪明的质检员 题解
  20. 如何实现人机界面与多台plc之间无线通讯?

热门文章

  1. ACPC2015 K 树的直径
  2. 计算机单元格选项,如何在excel单元格里设置下拉选项
  3. 更精进,更超能 | 一起开启 AI+X 微软认证未来创变者计划
  4. 使用stream流进行集合排序取最大值,根据集合中的bigdemal属性排序(正序反序)并取最大值
  5. linux 缩小硬盘镜像,缩小qcow2格式kvm虚拟镜像磁盘大小[转]
  6. 游戏中BUFF的实现
  7. MAC上Chrome浏览器没有声音
  8. 托福高频真词List17 // 附托福TPO阅读真题
  9. i7 11800h参数
  10. 深圳垃圾分类告诉你这些都是什么垃圾 不仅要会分还要分的准确才行