去除/屏蔽 安卓/Android手机的 qq浏览器 微信H5使用video标签播放视频,结束后的视频广告

本文介绍了如何解决安卓手机QQ浏览器及微信H5页面中使用video标签播放视频结束后出现的广告问题。尝试了自动循环播放、js监听视频结束等方式,最后通过启用X5内核H5播放器并设置相关属性成功屏蔽了广告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天是个好日子  老干妈炖大鹅的好日子  

X5内核是腾讯基于优秀开源Webkit深度“优化并加工”的浏览器渲染引擎   微信和手机qq都是  还有一些就不细说了

x5内核会监管video标签播放的视频 无论是暂停或结束都会推送一些广告 且是最高级 
所以 通过JS或Video标签控制播放暂停  没啥用   

网上找了 看了 也试了 几种方式

一 自动循环播放  手动关  看不见等于没有 

(微信和许多浏览器都不让自动播放  须先触发事件  即便循环几遍 也会强制结束 依旧弹广告    放弃吧 没用的 ) 

二 js监视视频播放结束后,先执行播放视频的方法,再暂停视频

 let isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
 let videoContext = document.getElementById('video');
 videoContext.addEventListener('ended', () => {
    if (!isiOS) {
        videoContext.play();
        setTimeout(() => {
            videoContext.pause();
        }, 100)
    }
  })

 

微信监控video是在最底层  意味着优先级最高  这一次不弹 下次还会再来   不够完美

三  打败不了

<think>首先,用户的问题是:“我想解决微信小程序中video组件在webview环境下无法播放视频的问题 请问微信小程序 video 组件在 webview 环境下无法播放视频 但能显示首帧 解决方案” 根据系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题,保证真实可靠。 用户的问题是关于微信小程序中video组件在webview环境下无法播放视频但能显示首帧的解决方案。我需要参考提供的引用内容。 提供的引用: - 引用[1]: 提到原生组件会浮于其他组件之上,使用cover-view和cover-image解决层级问题。 - 引用[2]: 提到小程序使用web-view跳转到H5,因为视频审核严。 - 引用[3]: 详细说明canvas组件在小程序中的问题,包括层级、大小、性能等,并提到video组件在webview中的限制。 - 引用[4]: 提到组件的算法优势,但不太相关。 从引用[3]中,关键部分:"canvas 在微信小程序、百度小程序、QQ小程序中为原生组件,层级高于前端组件... 解决 canvas 层级过高无法覆盖,参考 native-component。其他小程序端的 canvas 仍然为 webview 中的 canvas。app-vue 中的 canvas 仍然是 webview 的 canvas。... 注意,app-vue下若想流畅的绘制canvas动画,需要使用renderjs技术..." 但用户的问题是关于video组件,不是canvas。引用[3]提到video组件:"小程序、app-nvue,因为通信阻塞,难以绘制非常流畅的canvas动画。h5和app-vue不存在此问题。" 但这不是直接针对video。 在微信小程序文档中,video组件是原生组件,和canvas类似,在webview中可能有层级和播放问题。 常见原因: - 在webview环境下,video组件可能由于安全策略或兼容性问题无法播放视频。 - 能显示首帧说明视频加载正常,但播放时出现问题。 解决方案: 1. **使用cover-view或cover-image**:如果问题是由于层级问题导致其他元素覆盖,但用户说能显示首帧,所以可能不是层级问题。 2. **检查视频源和格式**:确保视频源是有效的,并且格式被支持(如MP4)。 3. **使用web-view组件跳转到H5页面**:引用[2]提到,由于审核问题,使用web-view跳转到H5页面播放视频H5页面可以使用标准HTML5 video标签,可能更兼容。 4. **检查小程序设置**:确保小程序的域名设置正确,视频源在白名单中。 5. **更新小程序基础库**:确保使用最新版本的小程序基础库。 6. **使用其他组件或方法**:如使用live-player或其他第三方组件。 基于引用[2],直接解决方案是使用web-view组件跳转到H5页面来播放视频,因为H5环境可能没有相同的限制。 步骤: 1. 在微信小程序中使用web-view组件。 2. 设置web-view的src属性指向一个H5页面,该页面包含视频播放器。 3. 在H5页面中使用HTML5 video标签播放视频。 例如: ```html <!-- H5页面 --> <video src="https://example.com/video.mp4" controls></video> ``` 在微信小程序中: ```html <web-view src="https://your-h5-page.com/video-player.html"></web-view> ``` 这样,视频播放就在H5环境中进行,避免了原生video组件的限制。 另外,引用[3]提到性能问题,但针对video,类似问题可能存在。使用H5方案可以绕过。 回答结构: - 逐步解释问题原因。 - 提供解决方案。 - 给出示例代码。 - 自然添加引用标识。 生成相关问题:在回答末尾添加相关问题。 确保语言中文。</think>### 微信小程序 video 组件在 webview 环境下无法播放视频的解决方案 在微信小程序中,video 组件是一个原生组件,当它在 webview 环境下运行时(例如在 web-view 组件内嵌的 H5 页面中),可能会出现无法播放视频但能显示首帧的问题。这通常是由于以下原因造成的: - **原生组件的层级限制**:video 组件作为原生组件,会脱离 WebView 渲染流程,导致在 webview 环境中无法正确处理播放事件[^1]。 - **安全策略和兼容性问题**:微信小程序对视频源有严格限制(如域名白名单、HTTPS 协议),或视频格式不支持(如仅支持 MP4/H.264)。 - **通信阻塞**:原生组件与 WebView 之间的通信延迟可能导致播放指令失效,但首帧加载成功[^3]。 以下是针对此问题的逐步解决方案: #### 1. **检查视频源和配置** - **确保视频格式兼容**:video 组件仅支持 MP4、H.264 编码等格式。使用工具(如 FFmpeg)验证视频编码。 - **配置域名白名单**:在小程序后台设置视频源的域名白名单(开发设置 > 服务器域名),确保视频 URL 使用 HTTPS。 - **示例代码验证**: ```html <video src="https://your-domain.com/video.mp4" controls></video> ``` 如果首帧显示但无法播放,尝试更换视频源测试。 #### 2. **使用 cover-view 或 cover-image 解决层级问题** 如果无法播放是由于其他组件覆盖了 video 控件(如按钮),使用原生组件 cover-view 或 cover-image 覆盖在 video 上: ```html <video src="video.mp4"> <cover-view class="controls">播放按钮</cover-view> </video> ``` - **注意**:cover-view 必须直接嵌套在 video 组件内,且仅支持简单文本和图片[^1]。 - 如果问题依旧,说明不是层级问题,转向其他方案。 #### 3. **使用 web-view 跳转到外部 H5 页面播放视频** 这是最可靠的方案,因为 H5 环境使用标准 HTML5 video 标签,不受小程序原生组件限制: - **步骤**: 1. 在小程序页面中添加 web-view 组件: ```html <web-view src="https://your-h5-domain.com/video-player.html"></web-view> ``` 2. 在 H5 页面(video-player.html)中使用标准 video 标签: ```html <video src="https://your-domain.com/video.mp4" controls autoplay></video> ``` - **优势**:规避了原生组件的通信阻塞问题,且支持更多视频格式和控件[^2][^3]。 - **注意事项**: - 确保 H5 页面域名已在小程序后台配置。 - 如果审核严格(如文娱类资质),使用此方案可避免小程序审核问题[^2]。 #### 4. **降级方案:使用 image 或 canvas 模拟播放** 如果视频播放非必需,但需显示内容: - 用 image 组件显示首帧,并添加按钮跳转到全屏播放: ```html <image src="video-poster.jpg" bindtap="openVideo"/> ``` JavaScript 中调用全屏播放: ```javascript Page({ openVideo() { wx.navigateTo({ url: '/pages/video-page?src=video.mp4' }); } }); ``` - 或使用 canvas 绘制视频帧(需注意 canvas 在 webview 中的性能限制)[^3]。 #### 5. **其他优化建议** - **更新基础库**:确保微信小程序基础库版本为最新(检查 app.json 中的 "libVersion")。 - **性能监控**:在真机上测试,使用微信开发者工具的 Audits 面板分析通信延迟。 - **错误处理**:添加错误监听: ```javascript <video binderror="onVideoError"/> // Page 方法 onVideoError(e) { console.error('视频错误:', e.detail.errMsg); } ``` 通过以上方案,问题通常能解决。推荐优先使用 web-view 跳转 H5 方案,它高效且兼容性强[^2][^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值