vue3使用videojs播放m3u8格式视频教程

 更新时间:2023年06月08日 12:08:28   作者:深巷的九  
m3u8是一种基于HTTP Live Streaming(HLS)文件视频格式,它主要是存放整个视频的基本信息和分片(Segment)组成,下面这篇文章主要给大家介绍了关于vue3使用videojs播放m3u8格式视频的相关资料,需要的朋友可以参考下

vue3使用videojs 播放m3u8格式视频

videojs是一个播放视频的js库,可以通过videojs结合videojs-contrib-hls实播放m3u8格式视频。流媒体传输协议(hls)定义了用来控制播放的m3u8文件

m3u8是一个文本文件(播放列表文件),里面的内容就是被播放的音视频文件路径或网址。存放了视频的基本信息和分段视频的索引地址。就是按顺序下载播放索引列表的视频,从而完成一部完整视频的播放。

先在项目中安装videojs。

npm install --save video.js
npm install --save videojs-contrib-hls

下载成功后在项目的package.json文件中,有这两行代码。

在需要播放视频的页面中引入videojs

import 'video.js/dist/video-js.css';
import videojs from 'video.js';

在vue页面中加入video标签。

class="video-js vjs-default-skin"是videojs自带的样式需要加上,否则视频样式会有问题,style="width: 100%;height: 100%; object-fit: fill" 这行代码是为了使视频占满div容器。

 <div class="vedio">
      <video id="valveVideogj" class="video-js vjs-default-skin" autoplay
             style="width: 100%;height: 100%; object-fit: fill"></video>
</div>

在onMounted节点初始化播放器。

videojs函数有三个参数,分别为video标签id(id必须要唯一),要实例化的videojs配置,以及回调函数。options(rtsp)函数,rtsp为视频地址。http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8(网上找的m3u8格式视频)

  function options(src) {
            return {
                autoplay: true, // true,浏览器准备好时开始播放。
                muted: true, // 默认情况下将会消除音频。
                loop: true, // 导致视频一结束就重新开始。
                controls: false, //取消视频中的进度条
                preload: 'auto', // auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
                language: 'zh-CN',  //汉化
                fluid: true, // 当true时,将按比例缩放以适应其容器。
                sources: [{
                    type: 'application/x-mpegURL',
                    src  //视频播放地址
                }],
                notSupportedMessage: '此视频暂无法播放,请稍后再试', // 无法播放媒体源时显示的默认信息。
                textTrackDisplay: false,
            }
        }
  let player;
  onMounted(() => {
		try {
                player = videojs("valveVideo", options(rtsp), () => {
                    player.play();
                });
            } catch (error) {
                console.log(error);
            }	
    	})  

播放效果图

视频的大小可以通过改变外层div容器的大小来改变。

.vedio {
	width: 632.89px;
  	height: 356px;
    background: #000;
    padding: 3px;
    border: 1px solid #707070;
    margin: 30px 30px 0 30px;
}

ps

从其他页面返回到该页面会碰到video.es.js:228 videojs: warn: player "valvevideogj" is already initialised. options will not be applied.错误

则是因为播放器已经初始化过了,不能重复调用video标签作用于同一个video id,需要离开页面是销毁video,再重新初始化。

        onUnmounted(() => {
            //离开页面时销毁video
            player.dispose()
        })

总结

到此这篇关于vue3使用videojs播放m3u8格式视频的文章就介绍到这了,更多相关videojs播放m3u8视频内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 实现一个Vue自定义指令懒加载的方法示例

    实现一个Vue自定义指令懒加载的方法示例

    这篇文章主要介绍了实现一个Vue自定义指令懒加载的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Vue3封装组件完整实例(带回调事件)

    Vue3封装组件完整实例(带回调事件)

    Vue.js已成为现代Web开发中不可或缺的技术之一,虽然Vue.js的一些基础概念和语法比较易学,但深入挖掘Vue.js的核心概念和功能需要更多的实践,下面这篇文章主要给大家介绍了关于Vue3封装组件(带回调事件)的相关资料,需要的朋友可以参考下
    2023-06-06
  • vuex2中使用mapGetters/mapActions报错的解决方法

    vuex2中使用mapGetters/mapActions报错的解决方法

    这篇文章主要介绍了vuex2中使用mapGetters/mapActions报错解决方法 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Vue.js 60分钟快速入门教程

    Vue.js 60分钟快速入门教程

    vuejs是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的。今天给大家分享一篇教程关于Vue.js 60分钟快速入门教程,一起看看吧
    2017-03-03
  • Vue中如何处理token过期问题

    Vue中如何处理token过期问题

    这篇文章主要介绍了Vue中如何处理token过期问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • echarts实现获取datazoom的起始值(包括x轴和y轴)

    echarts实现获取datazoom的起始值(包括x轴和y轴)

    这篇文章主要介绍了echarts实现获取datazoom的起始值(包括x轴和y轴),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Vue使用Axios添加自定义请求头的多种方式

    Vue使用Axios添加自定义请求头的多种方式

    Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中,这篇文章给大家介绍了Vue使用Axios添加自定义请求头的多种方式,并通过代码讲解的非常详细,需要的朋友可以参考下
    2025-05-05
  • vue实现接口封装的实现示例

    vue实现接口封装的实现示例

    本文主要介绍了vue实现接口封装的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • Vue 父子组件的数据传递、修改和更新方法

    Vue 父子组件的数据传递、修改和更新方法

    下面小编就为大家分享一篇Vue 父子组件的数据传递、修改和更新方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Vue中动态设置class类名和style样式的操作指南

    Vue中动态设置class类名和style样式的操作指南

    在Vue中,动态设置class类名和style样式是非常常见的需求,主要通过v-bind指令(简写为:)实现,两者都支持对象语法、数组语法和计算属性,但具体用法略有差异,以下是详细说明和示例,需要的朋友可以参考下
    2025-09-09

最新评论