hls视频流学习

hls格式播放的依赖安装:

复制代码
<!-- 新增hls播放库 -->

npm install hls.js

组件封装:

javascript 复制代码
<template>
  <div class="hls-player-cls">
    <video ref=" video" controls style="width: 100%; max-width: 800px;"></video>
  </div>
</template>

<script>
import Hls from 'hls.js';

export default {
  name: 'HlsPlayer',
  props: {
    videoUrl: {
      type: String,
      required: true,
      default: ''
    },
  },
  mounted () {
    this.initPlayer();
  },
  beforeUnmount () {
    this.destroyPlayer();
  },
  methods: {
    initPlayer () {
      if (Hls.isSupported()) {
        this.hls = new Hls();
        this.hls.loadSource(this.videoUrl);
        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')) {
        // 原生支持HLS的情况(如Safari)
        this.$refs.video.src = this.videoUrl;
        this.$refs.video.addEventListener('loadedmetadata', () => {
          this.$refs.video.play();
        });
      }
    },
    destroyPlayer () {
      if (this.hls) {
        this.hls.destroy();
        this.hls = null;
      }
    },
  },
};
</script>

<style scoped lang="scss"></style>

应用:

javascript 复制代码
<template>
   <HlsPlayer src="//sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/hls/xgplayer-demo.m3u8"></HlsPlayer>
</template>
<script setup>
import HlsPlayer from "../components/HlsPlayer.vue";
</script>

效果:

学习啦:

特点:

  1. 适应性流媒体:HLS 支持根据用户的网络状况动态调整视频的质量(分辨率和码率),以提供更好的观看体验。
  2. 基于 HTTP 的传输:HLS 使用标准的 HTTP 协议进行传输,这使得它能够绕过防火墙,并且在各种设备和网络中都可以顺利工作。
  3. 广泛的设备支持:HLS 支持各种设备,包括智能手机、桌面浏览器、电视机顶盒等,尤其在 Apple 的设备上有原生支持。
  4. 易于扩展:HLS 可以支持大规模的观众群体,通过 HTTP 请求的方式,它能够很容易地扩展以适应更多用户的需求。

应用场景

1. 视频直播
2. 点播服务(VOD)
3. 实时会议和远程视频
4. 直播社交平台
5. 监控与安防
6. 智能电视和机顶盒
7. 广告与营销

HLS 与其他流媒体协议(如 RTMP、DASH、WebRTC 等)相比,具有以下优缺点:

优点:
  1. 兼容性强:几乎所有的现代浏览器和设备(包括 iOS、Android、PC 等)都支持 HLS。
  2. 适应性流媒体:HLS 能根据网络条件自动调整视频质量,确保在带宽波动的情况下也能提供流畅的视频体验。
  3. 稳定性:基于 HTTP 协议的流媒体能够利用 HTTP 缓存和负载均衡技术,提供更好的扩展性和稳定性。
  4. 跨平台支持:由于 HLS 是基于 HTTP 的,可以在几乎所有网络环境和平台上使用。
缺点:
  1. 延迟较高:HLS 的延迟通常比 RTMP 或 WebRTC 要高,因为它需要将视频分段存储并通过 HTTP 请求传输。这对于实时交互性要求高的场景(如视频会议)不太适用。
  2. 较大的带宽占用:HLS 使用较大的视频段(通常为 2-10 秒),在低带宽环境下,可能会导致频繁的缓存和重新缓冲。
  3. 实时性差:由于 HLS 是基于分段传输的,不能像 WebRTC 或 RTMP 那样实现超低延迟的实时流传输。
相关推荐
简佐义的博客4 分钟前
生信入门进阶指南:学习顶级实验室多组学整合方案,构建肾脏细胞空间分子图谱
人工智能·学习
近津薪荼6 分钟前
dfs专题4——二叉树的深搜(验证二叉搜索树)
c++·学习·算法·深度优先
rannn_11132 分钟前
【苍穹外卖|Day4】套餐页面开发(新增套餐、分页查询、删除套餐、修改套餐、起售停售)
java·spring boot·后端·学习
张人玉1 小时前
VisionPro 定位与卡尺测量学习笔记
笔记·学习·计算机视觉·vsionprp
觉醒大王1 小时前
强女思维:着急,是贪欲外显的相。
java·论文阅读·笔记·深度学习·学习·自然语言处理·学习方法
YCY^v^2 小时前
JeecgBoot 项目运行指南
java·学习
云小逸2 小时前
【nmap源码解析】Nmap OS识别核心模块深度解析:osscan2.cc源码剖析(1)
开发语言·网络·学习·nmap
JustDI-CM3 小时前
AI学习笔记-提示词工程
人工智能·笔记·学习
悟纤3 小时前
学习与专注音乐流派 (Study & Focus Music):AI 音乐创作终极指南 | Suno高级篇 | 第33篇
大数据·人工智能·深度学习·学习·suno·suno api
爱写bug的野原新之助3 小时前
加密摘要算法MD5、SHA、HMAC:学习笔记
笔记·学习