@[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>
视频播放效果如图:
打印结果如图:
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>
视频切换效果如图:
四、踩坑小记
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属性:
- muted 属性,设置或返回音频是否应该被静音(关闭声音);属性的值是true和false;
- muted="false" 表示视频不用静音(视频播放便有声音),但设置 muted="fasle" 的情况下,视频无法实现自动播放。
- video 标签中 muted 的作用: 允许视频自动播放;(Chrome66版本开始,禁止视频和音频的自动播放)
2. 换台的时候,url已经成功更改,但视频还是之前的
需得动态设置src才能实现
// 动态设置src this.player.src([ { src: nowPlayVideoUrl, type: "application/x-mpegURL" // 告诉videojs,这是一个hls流 } ]);
3. 找不到mux.js模块
报错信息:* mux.js/lib/tools/parse-sidx in ./node_modules/video.js/dist/video.es.js To install it, you can run: npm install --save mux.js/lib/tools/parse-sidx
解决办法:安装mux.js
yarn add mux.js
五、 播放rtmp流
播放rtmp流的操作与播放hls流的操作几乎相同,不同在于:
import "videojs-flash"; // 播放rtmp流需要的插件 type: 'rtmp/flv', // 这个type值必写, 告诉videojs这是一个rtmp流视频
以上就是如何在vue中使用video.js 播放m3u8格式的视频的详细内容,更多关于vue 使用videojs 播放m3u8格式的视频的资料请关注其它相关文章!
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月15日
2024年11月15日
- 黄乙玲1988-无稳定的爱心肝乱糟糟[日本东芝1M版][WAV+CUE]
- 群星《我们的歌第六季 第3期》[320K/MP3][70.68MB]
- 群星《我们的歌第六季 第3期》[FLAC/分轨][369.48MB]
- 群星《燃!沙排少女 影视原声带》[320K/MP3][175.61MB]
- 乱斗海盗瞎6胜卡组推荐一览 深暗领域乱斗海盗瞎卡组分享
- 炉石传说乱斗6胜卡组分享一览 深暗领域乱斗6胜卡组代码推荐
- 炉石传说乱斗本周卡组合集 乱斗模式卡组最新推荐
- 佟妍.2015-七窍玲珑心【万马旦】【WAV+CUE】
- 叶振棠陈晓慧.1986-龙的心·俘虏你(2006复黑限量版)【永恒】【WAV+CUE】
- 陈慧琳.1998-爱我不爱(国)【福茂】【WAV+CUE】
- 咪咕快游豪礼放送,百元京东卡、海量欢乐豆就在咪咕咪粉节!
- 双11百吋大屏焕新“热”,海信AI画质电视成最大赢家
- 海信电视E8N Ultra:真正的百吋,不止是大!
- 曾庆瑜1990-曾庆瑜历年精选[派森][WAV+CUE]
- 叶玉卿1999-深情之选[飞图][WAV+CUE]