百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

HLS视频拉流播放

yuyutoo 2025-01-06 16:13 2 浏览 0 评论

1、安装Hls

Vue.js是一个适用于构建用户界面的渐进型框架,它的流行程度已经在现代Web应用开发领域中得到了广泛的认可。而HLS(HTTP Live Streaming)则是一种广泛应用于视频流媒体传输的协议,可以将一个长时间的视频分解为一个个小的TS(Transport Stream)片段进行传输,客户端也可以根据网络状况切换不同的码率。本文将结合Vue.js和HLS协议实现一个Vue Hls的例子。

首先,我们需要在Vue项目中引入hls.js,HLS.js是一个开源的JavaScript库,它实现了解析HLS流并支持HTML5类型的视频播放器。我们可以通过npm install命令安装,也可以在index.html文件中直接引入。下面是通过npm安装示例代码

npm install hls.js --save

2、接着,在Vue项目中构建视频播放器组件,并在其中使用hls.js进行视频流的播放。下面是相关的代码实现:

<script>
import Hls from 'hls.js';
export default { 
    name: 'VueHlsPlayer', 
    props: { 
        url: { 
            type: String, 
            required: true 
        } 
    }, 
    data() { 
        return { 
            hls: null, 
            src: '' 
        } 
    }, 
    mounted() { 
        if (Hls.isSupported()) {
             this.hls = new Hls(); 
             this.hls.loadSource(this.url); 
             this.hls.attachMedia(this.$refs.video); 
             this.hls.on(Hls.Events.MANIFEST_PARSED, () => { this.$refs.video.play(); }); 
        } 
        else if (
            this.$refs.video.canPlayType('application/vnd.apple.mpegurl')) 
            { 
                this.$refs.video.src = this.url; 
                this.$refs.video.addEventListener('loadedmetadata', () => { 
                    this.$refs.video.play(); }); 
            } 
            this.src = this.url;
         }, 
        destroyed() { 
            if (this.hls) {
                 this.hls.destroy();
            } 
        } 
    } 
</script>

在上述代码中,我们首先引入了Hls.js库,并且在Vue组件中定义了一个video标签,然后通过mounted钩子函数实现了视频的加载、播放和销毁。具体地说,如果浏览器支持Hls,我们就创建一个新的Hls实例,然后通过loadSource方法加载视频源文件。之后,我们通过attachMedia方法将video元素绑定到Hls实例上。最后,在ManifestParsed事件触发后,我们可以调用video元素的play方法开始播放视频。如果浏览器不支持Hls,则通过video元素的src属性来加载视频资源,当元数据加载完成后,也调用video元素的play方法来启动视频。

领C++音视频学习资料→「链接」

最后,我们可以在Vue应用中使用VueHlsPlayer组件来实现视频的播放。下面是示例代码:

    <VueHlsPlayer :url="url" />
</template>
<script>
import VueHlsPlayer from '@/components/VueHlsPlayer.vue';
export default {
    name: 'App',
    components: {
        VueHlsPlayer
    },
    data() {
        return {
            url: 'http://example.com/path/to/video.m3u8'
        }
    }
}
</script>

通过上述代码即可实现Vue.js和HLS协议的结合,以实现视频流的播放。当然,具体的应用场景和流程取决于实际开发需求,但可以肯定的是,本文所提供的示例代码可以作为一个很好的参考,帮助你更好地理解Vue.js和HLS协议的结合。

3、遍历渲染多个视频播放

<template>
  <div class="monitorWarp">
    <div class="monitorItem">
      <div class="item" v-for="(item, index) in videoList" :key="index">
        <video
          :ref="['videoElement' + index]"
          controls
          muted
          preload="auto"
          style="width:100%;height:100%; fit:fill;"
        ></video>
      </div>
    </div>
  </div>
</template>
<script>
import { getRealMonitor } from "../api.js";
import Hls from "hls.js";
export default {
  data() {
    return {
      videoList: []
    };
  },
  created() {},
  computed: {},
  mounted() {
    this.RealMonitor();
   
  },
  methods: {
    RealMonitor() {
      getRealMonitor(this.params).then(res => {
        console.log(res, "实时监控");
        this.videoList = res.result;
        this.videoList.forEach((item, index) => {
          console.log(item);
          this.showVideo(item, "videoElement" + index);
        });
      });
    },
    showVideo(url, refId) {
      console.log(url, refId, "节点");
      let video = refId; //定义挂载点
      this.hlsjs = new Hls();
      this.hlsjs.loadSource(url);
      this.hlsjs.attachMedia(video);
      this.hlsjs.on(Hls.Events.MANIFEST_PARSED, () => {
        video.play();
      });
      this.hlsjs.on(Hls.Events.ERROR, (event, data) => {
        console.log(event, data);
        // 监听出错事件
        console.log("加载失败");
      });
    }
  }
};
</script>
<style lang="less" scoped>
.monitorWarp {
  .monitorItem {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    .item {
      width: 224px;
      height: 168px;
      background-color: #143354;
      margin-top: 2px;
      border: solid 2px #2677f1;
    }
  }
}
</style>

4、vue+原生

通过上述代码即可实现Vue.js和HLS协议的结合,以实现视频流的播放。当然,具体的应用场景和流程取决于实际开发需求,但可以肯定的是,本文所提供的示例代码可以作为一个很好的参考,帮助你更好地理解Vue.js和HLS协议的结合。

相关推荐

详细指南:如何在本地或服务器上安装Z-Blog博客系统

怎么安装Z-Blog(HowtoInstallZ-Blog)  Z-Blog是一款功能强大的博客系统,因其简单易用和灵活性受到许多用户的喜爱。本文将详细介绍如何在本地或服务器上安装Z-Blog,...

群晖NAS安装wordpress博客,构建属于自己的web网站

学习网络技术的话可以关注我,每天都会有相应的教程发布的!群晖NAS主要的作用就是网络储存,你可以理解为百度云,但这个百度云的服务器放在了家里。个人而言,有了NAS以后,家里的所有设备(台式电脑,笔记本...

MySQL8安装 八: 使用phpMyadmin客户端

MySQL8安装一:源码安装...

ThinkPHP6开发博客实战入门(一),集成环境的安装与配置

本套入门教程适合想学php或者thinkphp却无从下手的同学,那么恭喜你,你只需要按照本套教程实战操作一遍,就会有意想不到的收获。我教程的特色是很少讲理论知识,主要偏重功能实战。我只会告诉你用怎样的...

蒸汽流量计远程控制系统的调试与应用

1、系统的联合调试蒸汽流量计上位机控制系统的调试主要包括服务器与数据库、各站点的连接调试。在与数据库连接调试中,本文选用一种被广泛使用的phpMyAdmin工具软件,实现对MySQL数据库图形化管理,...

我用NAS部署人力资源管理项目——管理人员就这么简单

?...

有MacBook电脑,自学PHP详细步骤

自学PHP编程并在MacBook上设置好环境,是一个比较简单的过程。你可以按照以下步骤一步步开始你的学习之旅:1.安装PHPMacBook通常预装有PHP,但可以确认一下版本并更新到最...

如何从零开始创建一个功能强大的ZBlog网站指南

ZBlog怎么创建(HowtoCreateZBlog)  ZBlog是一款非常流行的博客系统,因其简洁易用和强大的功能受到许多博主的喜爱。本文将详细介绍如何从零开始创建一个ZBlog网站,包括...

phpMyAdmin 5.0.0正式发布:移除对5.5/5.6/7.0等旧版PHP支持

phpMyAdmin5.0.0版本于今天正式发布。该版本同4.9.3版本同时存在,不过官方推荐没有安装旧版PHP的用户尽量使用5.0.0版本。本次5.0版本更新中在涵盖了4.9分支的大量改进之外,还...

黑客学习搭建社工库nas黑群晖部署安装apache+php+mysql个人网站

今天分享给大家如何利用群晖自带的web功能,来搭建一个属于自己的个人网站群晖环境:首先进入套件中心,1、下载安装webstation2、下载安装php53、下载安装apache2.44、下载安装Ma...

phpMyAdmin使用教程(图文详解)

什么是phpMyAdmin?phpMyAdmin是众多MySQL图形化管理工具中使用最为广泛的一种,是一款使用PHP开发的基于B/S模式的MySQL客户端软件,该工具是基于Web跨平台的管理程序,并且...

ZBlog PHP迁移指南:步骤、注意事项与常见问题解决方案总结

ZBlogPHP迁移指南(ZBlogPHPMigrationGuide)  ZBlog是一个功能强大的博客系统,广泛用于个人博客和企业网站。随着网站的发展,用户可能需要将其ZBlogP...

0成本打造私人文档管理系统,这个开源工具让你省下万元订阅费

在这个数字化时代,我们每天都在处理大量的文件和文档,随着时间推移,这些纸质文件不断堆积,不仅占用大量空间,查找起来非常让人头疼。你是否也曾因为找不到重要文件而焦虑不已?或是被满屋子的文件弄得焦头烂额?...

群晖NAS安装MySQL数据库及phpMyAdmin实现远程管理本地数据库

前言本文主要介绍如何在群晖NAS安装MySQL与数据库管理软件phpMyAdmin,并结合cpolar内网穿透工具配置公网地址,实现异地远程访问本地部署的phpMyAdmin详细流程。...

广受追捧MFC界面开发库BCGControlBar如何安装?

1.BCGControlBar简介1.1概述BCG是MFC的一个扩展库,可以用来构建类似于MicrosoftOffice2003/2007/2010/2013/2016和Microsoft...

取消回复欢迎 发表评论: