vue中通过hls.js播放m3u8格式的视频

摘要:
最近,一个功能被用来访问海康一个摄像头的监控视频。如何获取m3u8的视频将不在这里描述,而是如何成功播放m3u9格式的视频。1.m3u8和HLS简介1.m3u8文件是指UTF-8编码格式的M3U文件。M3U文件记录有索引的纯文本文件。当您打开它时,播放软件不会播放它,而是根据其索引查找相应音频和视频文件的网络地址,以便在线播放。

近期做了一个功能,是接入一个海康的摄像头的监控视频,怎么获取m3u8的视频这里就不在叙述了,只说一下怎么将m3u8格式的视频成功播放

一、m3u8和HLS介绍

1.M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。
2.HLS 与 M3U8 HLS(全称:Http Live Streaming)是由Apple公司定义的用于实时流传输的协议
二、nuxt项目中使用HLS播放m3u8
1.安装hls.js依赖
可以通过npm安装依赖npm install hls.js --save ,也可以通过引入的方式<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
2.代码实现
<template>
  <section>
    <video   ref="video" controls></video>
  </section>
</template>

<script>let Hls = require('hls.js');
  export default{
    data() {
      return{
        hls: ''};
    },
    mounted() {
      this.$axios.get('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx').then(res =>{
        this.getStream(res.data);
      });
    },
    methods: {
      videoPause() {
        if (this.hls) {
          this.$refs.video.pause();
          this.hls.destroy();
          this.hls = null;
        }
      },
      getStream(source) {
        if(Hls.isSupported()) {
          this.hls = newHls();
          this.hls.loadSource(source);
          this.hls.attachMedia(this.$refs.video);
          this.hls.on(Hls.Events.MANIFEST_PARSED, () =>{
            console.log('加载成功');
            this.$refs.video.play();
          });
          this.hls.on(Hls.Events.ERROR, (event, data) =>{
            //console.log(event, data);
            //监听出错事件
            console.log('加载失败');
          });
        }
      },
      beforeDestroy() {
        this.videoPause();
      }
    }
  };
</script>

页面初始化mounted的时候,获取到m3u8视频的链接,然后通过getStream()方法加载视频,也通过videoPause()方法停止视频播放

嗯,首先要感谢大佬的教导,就酱~~

免责声明:文章转载自《vue中通过hls.js播放m3u8格式的视频》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇浏览器缓存H5 及 web 页面微信授权登录流程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

实用的vue插件大汇总

Vue是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,来了个大汇总,方便查找使用,便于工作和学习。很全的vue插件汇总,赶紧收藏下吧!github上的vue汇总https://github.com/vuejs/awesome-vue#qr-code一...

Vue.js 源码分析(二十八) 高级应用 transition组件 详解

transition组件可以给任何元素和组件添加进入/离开过渡,但只能给单个组件实行过渡效果(多个元素可以用transition-group组件,下一节再讲),调用该内置组件时,可以传入如下特性:     name         用于自动生成CSS过渡类名        例如:name:'fade'将自动拓展为.fade-enter,.fade-ente...

封装Vue可选择列导出表格组件

1、创建ExportExcel.vue组件 <template> <div class="export_tools"> <div v-show="false"> <el-table id="out-table" style=" 100%;" :data="exportTable"> <...

vue中Axios的封装和API接口的管理

前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习。如果对原博主造成侵犯,我会立即删除。 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题,我们所要的说的axios查看更多关于 axios 的文章 的封装和api接口的统一管理,其实主要目的就是在帮助我们简化代码和利于后期的更新维护。 一、ax...

mac-chrome下手动安装vue-devtools

原文链接:https://blog.csdn.net/weixin_44868003/article/details/89457089 废话就不多说,直接上安装步骤,一步一步来 => success 1.下载安装vue-devtools源文件 mkdir vuetools cd vuetools git clone https://...

element ui Cascader 级联选择器 关闭tag时报错 :vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in callback for watcher "value": "TypeError: Cannot read property 'level' of null"

情况说明:多选后,点击关闭tag的按钮,会出现如下报错。   经过使用官网列子,及数据。发现删除tag并不会出现这个错误。经过对比,唯一不同的是官网的value 是字符串对象,而我使用的id是数字。将id改成字符串格式后,问题就解决了。 ☀ ░ 标记一下░  ☀...