video标签的问题汇总

video标签的问题汇总

参考链接

如何修改原生controls的样式
video属性
序列图片替代video
记一次实现音频(Audio)自动播放,视频同理
自定义video标签
40条移动端H5坑位指南

目录

video标签是网页常见元素,我们需要再不同的设备上适配时往往不太方便,本文给出我在适配时遇到的问题和解决方案,这里不一定有用可以看看参考链接中的文章

常见的内核有

  • IE、Firefox、GoogleChrome、Safari、Opera
  • 腾讯X5浏览器
  • 微信小程序

常见的适配需求有

  • 自动播放 和 声音
  • 修改controls样式
  • 自定义controls控件

兼容属性

一般都加上,具体意义可以自行百度

<video
        id="video"
        preload="auto" --何时加载视频--
        autobufer="true" --自动缓存--
        webkit-playsinline playsinline --局域播放--
        x5-video-player-type="h5" --同层播放器--
        x5-video-orientation="portraint" --方向--
        x5-video-player-fullscreen="true" --比例--
        x-webkit-airplay="allow" --不知道干啥用的--
        style="object-fit:fill;position: absolute; width: 70%; height: 70%; top: 15%; left: 15%;"
        src=".."    --地址--
        poster=".." --封面-- 
        >
</video>

自动播放 和 声音

自动播放必须在视频没有声音的前提下!除非用户和网页发生了交互行为
PC端自动播放只需要加 autoplaymuted属性即可
移动端必须触发一下touch或者click属性才能自动播放( 只要交互后就可以有声音 )

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <video width="300px" src="./introduce.mp4" autoplay muted controls></video>
    <script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
    <script>
        // 让移动端视频点一下有声音
        function playAndNoice() {
            let vid = document.querySelector('video');
            vid.muted = false; //true则不会有声音
            vid.play();
        }
		
		// 这里的思路有很多我选择最暴力简单的一次性事件
        document.addEventListener('click', playAndNoice, { once: true });
        document.addEventListener("WeixinjsBridgeReady", playAndNoice, { once: true });
        document.addEventListener('touchstart', playAndNoice, { once: true });
    </script>
</body>

</html>

修改controls样式

浏览器自带的控制栏样式可以通过伪类修改,但是每个浏览器又不一样,这里给个思路

首先打开 开发者工具 => Settings => Elements => Show user agent shadow DOM
在这里插入图片描述

鼠标放到想要检查的控件上=>右键=>检查,就能找到类名

在这里插入图片描述

自定义controls

自定义controls的方式有很多,这里推荐一个插件他能使你的controls在大部分浏览器保持一致
下面是网址和简单示例
无法兼容的浏览器主要是 安卓手机尝试用的 腾讯X5内核,微信小程序,Safar( 未测试 )

video.js官网 地址

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="http://vjs.zencdn.net/8.0.4/video-js.css" rel="stylesheet" />
    <link href="https://unpkg.com/@videojs/themes@1/dist/forest/index.css" rel="stylesheet">
</head>

<body>
    <video id="my-video" class="video-js vjs-theme-forest" controls preload="auto" width="320"  poster="" data-setup="{}">
        <source src="../introduce.mp4" type="video/mp4" />
    </video>
    <script src="http://vjs.zencdn.net/8.0.4/video.min.js"></script>
</body>

</html>

主题效果如下

在这里插入图片描述

腾讯X5内核对video的影响

值得注意的是 国内很多手机自带的浏览器或者QQ浏览器,微信他们用的是一种叫做腾讯X5内核的技术
因为内核变了原来的API和方法都会失效,因为video标签已经被替换掉了( 被劫持了 )可能还会给你加段广告 (ˉ▽ˉ;)…
总之以上的方法都是建立在常见内核下的,X5内核和则微信小程序可能不支持

腾讯X5官网

解决方案:代码解决只能治标不治本,只能浏览器厂商添加域名白名单。如 uc ios 白名单的域名有 *.v.qq.com *.taobao.com
你可以去看看类似于B站这种大网站是不会被劫持的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值