H5.video在微信中禁止全屏播放视频和直播流

这段时间在做一个直播项目,有直播需求,也有视频播放需求,要求能在微信中以半屏的方式播放,另外半屏可以做一些操作,还有些组件需要悬浮在视频上方。
网上各种扒拉,各种实验,以求在微信中实现不全屏就能播放和自动播放,最终还是用了单纯的video标签。自动播放到目前还是没找到完美的解决方法。


非全屏播放视频

<video
          loop
          autoPlay
          src={url}
          controls={true}
          poster={pic}
          playsinline
          webkit-playsinline
          x5-video-player-type="h5-page"
        />

这么多属性,能在微信中起到决定做用的还是最后一个

x5-video-player-type="h5-page"

注意,网上很多说这个属性的值是h5,但实际上不是,是h5-page才有作用,但这种方式也只能播放视频,直播流(m3u8)还是会跳出原来的文档流,变成全屏。所以我的做法是加了一个判断,是直播流的情况下用另外几个属性:

<video
            src={url}
            controls={true}
            poster={pic}
            playsInline
            webkit-playsinline
            x-webkit-airplay="true"
            x5-playsinline="true"
          />

播放直播流的时候不能加上上面起决定作用的那个属性,否则还是会变成全屏,而且,如果是在react下,必须给后两个属性写上值,不能使用react下不写值默认等于true的特性,否则,还是不会起作用。



另,关于自动播放,之前也找到一个方案,在一个网站上右键查看源代码扒拉下来的一个js文件,没有文档,也不知道来源,名字叫hls-0.6.14.min.js, 一看就是和hls有关的,可以实现自动播放,但仅限于播放m3u8的视频,注意,是视频,不是直播流,别的都放不了,但能实现不全屏自动播放。
使用方法是:

let Hls = (window as any).Hls;
    if (Hls && Hls.isSupported()) {
      this.hls = new Hls();
      this.hls.on(Hls.Events.MANIFEST_PARSED, () => {
        if (this.player) {
          this.player.play();
        }
      });
    }
        //----------

        this.player = document.findElementById(‘video‘);
        if (this.hls && url && this.player) {
      this.hls.loadSource(url);
      this.hls.attachMedia(this.player);
    }

代码中的Hls 就是引用了那个Js文件后得到的全局对象,由于此处不能上传附件,就只能简单说一下使用方法,如果有哪位同学知道这个js的来源或文档,希望能在下方流言说明一下。

原文地址:https://blog.51cto.com/wuzishu/2437629

时间: 2024-10-08 06:38:36

H5.video在微信中禁止全屏播放视频和直播流的相关文章

Chromium全屏播放视频电源管理

介绍 Android为了达到节约电源的目的,在屏幕没有操作时便会自动息屏,那么比如我们在播放视频时,尽管对屏幕没有操作,但是我们此时是不希望它息屏的,如果视频处于暂停状态,此时是希望它自动息屏的. 下面来看一下如何在Chromium全屏播放视频时是如何控制屏幕的. 实现 因为全屏播放是和ContentVideoView.java相关的,那么就在这个类中来实现. 首先在content_switches.h中声明一个PowerSaveBlocker 开关: CONTENT_EXPORT extern

html-----vedio标签(HTML5新标签VIDEO在IOS上默认全屏播放)

今天做一个app时发现一个问题,应用html5中的video标签加载视频,在Android手机上默认播放大小,但是换成iPhone手机上出问题了,默认弹出全屏播放,查找了好多论坛,都没有谈论这个的.然后几经波折终于找到其解决的方法了,在video标签下的source中加入这个-webkit-playsinline=true完美解决全屏问题. 例如: <video width="100%" loop="loop" autoplay controls="

HTML5新标签video在iOS上默认全屏播放

今天做一个app时发现一个问题,应用html5中的video标签加载视频,在Android手机上默认播放大小,但是换成iPhone手机上出问题了,默认弹出全屏播放,查找了好多论坛,都没有谈论这个的.然后几经波折终于找到其解决的方法了,在video标签下的source中加入这个-webkit-playsinline=true完美解决全屏问题. 例如: <video width="100%" loop="loop" autoplay> <source

webview加载网页与全屏播放视频?

上篇我们大致了解了webview的一些属性,以及重要的方法.这篇我们就要一些案列来说明,一般webview最广泛的作用就是,加载一个html的网页(实现与js交互),,webview加载网页网页当中含有视频,webview文件下载等等. 首先我们来了解下webview是如何加载网页的?首先我们看下网页在家的效果? 代码也是比较简单 1 package cn.xiao.webviewplayvideo; 2 import android.app.Activity; 3 import android

iOS UIWebView 全屏播放视频, 需横屏,单app不支持横屏, 解决办法

原文  http://blog.csdn.net/alincexiaohao/article/details/39294523 参考blog: UIWebView中视频播放屏幕自动旋转,app不支持旋转但是某一个页面需要旋转等 使用UIWebView播放视频时捕捉全屏播放事件 iOS两个强制旋转屏幕的方法 IOS:屏幕旋转与Transform 在使用UIWebView播放视频的时候,想到视频应该能够旋转播放.但是app本身是不支持旋转的,所以把代码记录如下,引申出来的答案就是:所有的你想要进行页

android webview 全屏播放H5 (Playing HTML5 video on fullscreen in android webview)

最近关于webview的问题遇到的比较多,关于如何在webview中全屏播放视频,网上有很多种解决方法,这里也有一种方法,试了几种后发现还是这种比较好用. 这里就拿出来与大家分享,出自http://stackoverflow.com/questions/15768837/playing-html5-video-on-fullscreen-in-android-webview#userconsent# 代码里面已经有很好的注释了,我就不画蛇添足了. VideoEnabledWebChromeCli

防止html5的video标签在iphone中自动全屏

问题: 当在iphone中打开html5页面中的video视频时,会默认调取系统播放器,全屏播放视频资源. 解决方式: 1. 首先在html5页面的video标签中添加webkit-playsinline=true; <video id="player" webkit-playsinline></video> 接着在UIWebView中设置allowsInlineMediaPlayback属性: webview.allowInlinesMediaPlayback

Chromium为视频标签&lt;video&gt;全屏播放的过程分析

在Chromium中,<video>标签有全屏和非全屏两种播放模式.在非全屏模式下,<video>标签播放的视频嵌入在网页中显示,也就是视频画面作为网页的一部分显示.在全屏模式下,我们是看不到网页其它内容的,因此<video>标签播放的视频可以在一个独立的全屏窗口中显示.这两种截然不同的播放模式,导致Chromium使用不同的方式渲染视频画面.本文接下来就详细分析<video>标签全屏播放的过程. 从前面Chromium为视频标签<video>渲

video 视频全屏播放

public videofull() { //全屏播放视频 var _this = this; _this.video = document.getElementById('homeVideo'); //视频 _this.btnFullScreen = document.getElementById('btn_fullscreen'); // 全屏点击按钮 //实现全屏功能 _this.btnFullScreen.addEventListener('click',function() { //