最近一个需求,由于给定的视频资源是竖屏,而UI给定的设计图是横屏(竖屏不美观),导致最终定下的需求是:点击播放按钮,自动全屏播放。
至于为什么花了这么久,主要原因是开始感觉这个需求比较简单,完全可以直接使用video标签实现,不用插件,然而倒腾了半天,网上查了大堆资料,始终无法实现,具体原因目前仍不清楚,貌似跟浏览器内核有关?稍后继续研究去。

先上图
播放前的模样
点击之后自动全屏

在这里插入图片描述
补充一下遇到的坑:
在这里插入图片描述
可以看到,播放器的高度大于封面高度,(本来是刚好的),这里有个地方的设置会影响播放器的高度,playerOptions中的aspectRatio,当设置为4:3的时候就是上图这样了,当时手欠给改了这里,结果找了半天原因。。。

代码:
vue怎么使用video-player这里就不详细说了,教程到处都是。

<div class="videoBox">
            <video-player
              class="video-player vjs-custom-skin"
              ref="videoPlayer"
              :playsinline="true"
              :options="playerOptions"
              @play="onPlayerPlay($event)"
              @pause="onPlayerPause($event)"
            ></video-player>
          </div>

//data中的:
playerOptions: {
        playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
        autoplay: false, //如果true,浏览器准备好时开始回放。
        muted: false, // 默认情况下将会消除任何音频。
        loop: false, // 导致视频一结束就重新开始。
        preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
        language: "zh-CN",
        aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
        fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
        sources: [
          {
            type: "",
            src: "xxx" //url地址
          }
        ],
        poster: "../images/posterIn.png", //你的封面地址
        // width: document.documentElement.clientWidth,
        notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
        controlBar: {
          timeDivider: true,
          durationDisplay: true,
          remainingTimeDisplay: false,
          fullscreenToggle: true //全屏按钮
        }
      }
      //方法
      full(ele) {
      //做兼容处理
      if (element.requestFullscreen) {
        element.requestFullscreen();
      } else if (element.mozRequestFullScreen) {
        element.mozRequestFullScreen();
      } else if (element.msRequestFullscreen) {
        element.msRequestFullscreen();
      } else if (element.oRequestFullscreen) {
        element.oRequestFullscreen();
      } else if (element.webkitRequestFullscreen) {
        element.webkitRequestFullScreen();
      } else {
        var docHtml = document.documentElement;
        var docBody = document.body;
        var videobox = document.getElementsByClassName("video-player");
        var cssText = "width:100%;height:100%;overflow:hidden;";
        docHtml.style.cssText = cssText;
        docBody.style.cssText = cssText;
        videobox.style.cssText = cssText + ";" + "margin:0px;padding:0px;";
        document.IsFullScreen = true;
      }
    },
      onPlayerPlay(player) {
      this.full(player)
    },
Logo

前往低代码交流专区

更多推荐