微信 安卓 H5 video视频播放自动全屏

本文是为了自己防止忘记了在此记录,如果不足之处还望指出一起学习
腾讯微信X5内核浏览器文档地址:https://x5.tencent.com/tbs/guide/web/x5-video.html

1.(安卓手机)微信中禁止点击视频自动全屏

最近在做到一个项目是要求微信(企业微信)中打开视频播放,但是微信在安卓手机上播放视频时会自动全屏,解决办法:( 2020-04-29测试有效,华为,小米,苹果 )

				<video id="my-video"
                       class="video-js"
                       style="object-fit: fill"
                       controls="true"
                       x-webkit-airplay="true"
                       x5-playsinline="true"
                       playsinline="true"
                       webkit-playsinline="true"
                       x5-video-orientation="portraint"
                       preload="auto"
                       width="960" height="500" poster="/static/home/images/1.jpg">

2.禁止显示进度条

但是这里有个问题就是,视频右下角会有系统自带全屏观看,进入全屏时就没有办法了

<video id="my-video1"
class="video-js vjs-big-play-centered"
style="object-fit: contain"
controls=""
x5-playsinline="true"
playsinline="true"
webkit-playsinline="true"
x5-video-player-type="h5"
x5-video-player-fullscreen="true"
x-webkit-airplay="allow"
x5-video-player-fullscreen=""
x5-video-orientation="portraint"
preload="auto"
width="960" height="500" poster="/static/home/images/2.jpg">

<think>首先,用户的问题是需要解决微信H5视频无法自动播放的问题。基于提供的引用,我需要整合信息并给出清晰的步骤。 关键点: - 微信H5视频自动播放受限于浏览器策略,需要用户交互才能播放。 - 解决方案涉及多个方面:设置属性、监听事件、页面结构优化。 整理引用中的解决方案: 1. **引用[1]**:启用同层播放器,设置 `x5-video-player-type="h5"`。 2. **引用[2]**:确保播放器组件在同一个页面内,避免页面跳转;通过用户点击触发播放。 3. **引用[3]**:使用 `WeixinJSBridgeReady` 事件和 `setTimeout` 来触发播放。 4. **引用[4]**:针对不同视频格式(如m3u8)和iOS/Android的兼容处理,包括使用Hls.js和WeixinJSBridge。 回答结构: 1. **引言**:解释问题原因(微信限制)。 2. **解决方案**:分步骤列出有效方法。 3. **代码示例**:提供关键部分的代码。 4. **注意事项**:提到平台差异和最佳实践。 5. **相关问题**:生成相关问题。 确保使用正确格式: - 行内数学表达式:不需要,因为主题是视频播放。 - 独立公式:不需要。 - 中文回答。 - 引用标识:在引用末尾添加,如[^1]。 最终回答大纲: 1. 问题原因:微信浏览器的安全策略。 2. 解决方案: - 方法1:设置x5-video-player-type。 - 方法2:在同一个页面内处理播放器,避免路由跳转。 - 方法3:使用WeixinJSBridgeReady事件触发播放。 - 方法4:处理m3u8视频格式。 3. 代码示例:整合引用中的代码。 4. 注意事项:测试不同设备和格式。 5. 相关问题:生成2-3个相关问题。 </think> ### 微信H5视频无法自动播放的解决方案 微信H5视频无法自动播放是由于微信浏览器的安全策略限制:**必须通过用户主动交互(如点击)才能触发视频播放**。以下是已验证的解决方案,整合自实际开发经验[^1][^2][^3][^4]: --- ### 一、核心解决方法 1. **启用同层播放器(关键步骤)** 在 `<video>` 标签添加 `x5-video-player-type="h5"` 属性,启用微信H5同层播放器: ```html <video src="video.mp4" x5-video-player-type="h5" playsinline webkit-playsinline ></video> ``` - `playsinline` 和 `webkit-playsinline` 确保视频在页面内播放(非全屏)。 2. **通过用户交互触发播放** - **避免页面跳转**:播放器组件必须与触发按钮在**同一页面**(例如通过 `v-if` 切换显示,而非路由跳转)。 - **示例代码**(点击按钮后显示并播放视频): ```javascript // 点击事件处理函数 function handlePlay() { const video = document.getElementById('myVideo'); video.style.display = 'block'; // 显示视频组件 video.play(); // 触发播放 } ``` 3. **监听微信事件自动播放** 使用 `WeixinJSBridgeReady` 事件绕过限制(兼容iOS/Android): ```javascript document.addEventListener("WeixinJSBridgeReady", () => { const video = document.querySelector('video'); // 延迟500ms确保组件加载 setTimeout(() => { video.play().catch(e => console.error("播放失败:", e)); }, 500); }, false); ``` - 注意:此方法需与用户点击结合(如点击后执行上述代码)[^3]。 4. **处理特殊格式(如m3u8)** 使用 `hls.js` 解析流媒体,并集成微信事件: ```javascript if (Hls.isSupported()) { const hls = new Hls(); hls.loadSource('video.m3u8'); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED, () => { // 微信环境下触发播放 if (window.WeixinJSBridge) { WeixinJSBridge.invoke('getNetworkType', {}, () => video.play()); } }); } ``` --- ### 二、注意事项 - **平台差异**: - iOS 更严格,必须通过点击事件触发播放。 - Android 部分机型需 `x5-video-player-type="h5"` 避免全屏问题。 - **最佳实践**: - 首次加载时静音播放(`muted` 属性),提升成功率。 - 测试覆盖微信版本:iOS 微信 8.0+,Android 微信 7.0+。 --- ### 三、完整示例代码 ```html <!DOCTYPE html> <html> <body> <button onclick="initVideo()">点击播放视频</button> <video id="myVideo" controls x5-video-player-type="h5" playsinline style="display:none;" ></video> <script> function initVideo() { const video = document.getElementById('myVideo'); video.src = 'video.mp4'; video.style.display = 'block'; // 微信环境自动播放 if (typeof WeixinJSBridge !== 'undefined') { WeixinJSBridge.invoke('getNetworkType', {}, () => video.play()); } else { document.addEventListener('WeixinJSBridgeReady', () => { WeixinJSBridge.invoke('getNetworkType', {}, () => video.play()); }, false); } } </script> </body> </html> ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值