欢迎来到站长教程网!

Javascript/Ajax

当前位置:主页 > 网页制作 > Javascript/Ajax >

如安在vue中利用video.js播放m3u8名目标视频

时间:2021-05-05|栏目:Javascript/Ajax|点击:

@[toc] 留意:

 "vue": "^2.6.11",
 "video.js": "^7.10.2",
 "videojs-contrib-hls": "^5.15.0",
 "mux.js": "^5.7.0"

一、安装

yarn add video.js
yarn add videojs-contrib-hls // 这是播放hls流需要的插件
yarn add mux.js // 在vue项目中,若不安装它大概报错

二、引入videojs

1.在src文件夹下新建 plugins文件夹,并新建video.js文件;

video.js文件的内容如下:

import "video.js/dist/video-js.css"; // 引入video.js的css
import hls from "videojs-contrib-hls"; // 播放hls流需要的插件
import Vue from "vue";
Vue.use(hls);

2.在main.js中引入方才的video.js文件

import "./plugins/video.js"; // 引入方才界说的video.js文件

三、在组件中测试并利用

1. 实现根基的自动播放

Test.vue文件

<template>
 <div class="test-videojs">
 <video id="videoPlayer" class="video-js" muted></video>
 </div>
</template>
<script>
import Videojs from "video.js"; // 引入Videojs 
export default {
 data() {
 return {
 // https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8 是一段视频,可将cctv1 (是live现场直播,不能快退)的替换为它,看到快进快退的结果
  nowPlayVideoUrl: "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8"
 };
 },
 mounted() {
 this.initVideo(this.nowPlayVideoUrl);
 },
 methods: {
 initVideo(nowPlayVideoUrl) {
  // 这些options属性也可直接配置在video标签上,见 muted
  let options = {
  autoplay: true, // 配置自动播放
  controls: true, // 显示播放的控件
  sources: [
   // 留意,假如是以option方法配置的src,是不能实现 换台的 (纵然监听了nowPlayVideoUrl也没实现)
   {
   src: nowPlayVideoUrl,
   type: "application/x-mpegURL" // 汇报videojs,这是一个hls流
   }
  ]
  };
  // videojs的第一个参数暗示的是,文档中video的id
  const myPlyer = Videojs("videoPlayer", options, function onPlayerReady() {
  console.log("onPlayerReady 中的this指的是:", this); // 这里的this是指Player,是由Videojs建设出来的实例
  console.log(myPlyer === this); // 这里返回的是true
  });
 }
 }
};
</script>
<style lang="scss">
#videoPlayer {
 width: 500px;
 height: 300px;
 margin: 50px auto;
}
</style>

视频播放结果如图:

如何在vue中操作video.js播放m3u8名方针视频

打印功效如图:

如何在vue中操作video.js播放m3u8名方针视频

2. 实现换台

Test.vue文件

<template>
 <div class="test-videojs">
 <video id="videoPlayer" class="video-js"></video>
 <el-button type="danger" @click="changeSource">切换到CCTV3</el-button>
 </div>
</template>
<script>
import Videojs from "video.js"; // 引入Videojs
export default {
 data() {
 return {
  nowPlayVideoUrl: "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8",
  options: {
  autoplay: true, // 配置自动播放
  muted: true, // 配置了它为true,才可实现自动播放,同时视频也被静音 (Chrome66及以上版本,克制音视频的自动播放)
  preload: "auto", // 预加载
  controls: true // 显示播放的控件
  },
  player:null
 };
 },
 mounted() {
 this.getVideo(this.nowPlayVideoUrl);
 },
 methods: {
 getVideo(nowPlayVideoUrl) {
  this.player = Videojs("videoPlayer", this.options);
  //要害代码, 动态配置src,才可实现换台操纵
  this.player.src([
  {
   src: nowPlayVideoUrl,
   type: "application/x-mpegURL" // 汇报videojs,这是一个hls流
  }
  ]);
 },
 changeSource() {
  this.nowPlayVideoUrl = "http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8";
  console.log(this.nowPlayVideoUrl, "改变了");
 }
 },
 watch: {
 nowPlayVideoUrl(newVal, old) {
  this.getVideo(newVal);
 }
 },
 beforeDestroy() {
 if (this.player) {
  this.player.dispose(); // Removing Players,该要了解重置videojs的内部状态并移除dom
 }
 }
};
</script>
<style lang="scss">
#videoPlayer {
 width: 500px;
 height: 300px;
 margin: 50px auto;
}
</style>

视频切换结果如图:

如何在vue中操作video.js播放m3u8名方针视频

如何在vue中操作video.js播放m3u8名方针视频

四、踩坑小记

1. 视频不能自动播放 或报错 DOMException: play() failed

需用muted属性办理

报错信息:DOMException: play() failedbecause the user didn't interact with the document first.(用户还没有交互,不能挪用play)

办理步伐:配置muted属性为true

 <video id="videoPlayer" class="video-js" muted></video>

关于muted属性:

2. 换台的时候,url已经乐成变动,但视频照旧之前的

上一篇:Vue项目打包陈设到apache处事器的要领步调

栏    目:Javascript/Ajax

下一篇:关于element的表单组件整理条记

本文标题:如安在vue中利用video.js播放m3u8名目标视频

本文地址:www.jiaocheng88.com.cn/JavaScript/61968.html

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:584415406 | 邮箱:584415406#qq.com(#换成@)

Copyright © 2015-2020 小白站长教程网 版权所有 苏ICP备20040415号-3