前端播放m3u8格式视频

news2025/8/12 5:49:02

m3u8是苹果公司推出的视频播放标准,是m3u的一种,只是编码格式采用的是UTF-8。m3u8准确来说是一种索引文件,使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址,从而实现在线播放。

m3u8格式的视频是将文件分成一小段一小段的ts文件,播放完一个在播放下一个,由于每次请求的ts文件都很小,所以基本可以做到无延时播放。目前WEB上主流的直播方案主要是HLS和RTMP,移动端主要是HLS,PC端主要是RTMP。

HLS是苹果推出的,移动端不管是IOS还是Android都天然支持HLS协议,直接在h5页面直接配置即可使用;PC端只有safari浏览器支持,其他浏览器均不支持。

HLS

转:前端播放m3u8格式视频 - 简书

Hls.js 使用文档 - 掘金

GitHub - video-dev/hls.js

1、使用npm安装hls.js或者外部引入;

npm install --save hls.js
 <script src="https://cdn.jsdelivr.net/npm/hls.js@1.2.7/dist/hls.js"></script>

2、使用

<template>
  <div class="page">
    <video controls id="video" autoplay="autoplay">
         <source
            type="application/x-mpegURL">
    </video>
</div>
</template>
<script lang="ts">
// import HLS from 'hls.js';
import {defineComponent} from "vue";
var HLS = (window as any).Hls;
let hls = new HLS()
//声明两个变量
export default defineComponent({
  methods: {
    //点击播放
    start(){
      if (HLS.isSupported()) {
        var video = <HTMLVideoElement>document.getElementById('video');
        hls.attachMedia(video);
        hls.loadSource('1.m3u8');
        hls.on(HLS.Events.MANIFEST_PARSED, () => {
          video.play();
          console.log("加载成功");
        });
        hls.on(HLS.Events.ERROR, (event, data) => {
          console.log("加载失败");
        });
      }
    }
  },
  mounted(){
    this.start();
  }
})
</script>

3、接口

    @RequestMapping("/video/{file}")
    public void video( HttpServletResponse response, @PathVariable("file") String file){
        try {
            file = dir + file;
            ServletOutputStream out = response.getOutputStream();
            byte b[] = readFileToByteArray(file); //一开始固定读取1024字节,导致前端解析一直错误,应该是文件多少字节就读取多少字节内容
            out.write(b);
            out.flush();
        } catch (Exception e){

        }
    }

转:Hls.js加载m3u8主流程源码解析 - 知乎

hls.js库根据功能划分为多个controller,如abr-controller、buffer-controller、stream-controller等,每个controller任务明确,通过事件监听派发的方式完成视频流的拉取、解析、播放等。

hls.js从初始化到加载m3u8,到选择不同码率加载对应ts文件,再解码ts转为mp4最终在浏览器播放,整个过程非常复杂

 主流程中有两个关键的定时器,第一个为StreamController启动用来轮询ts文件列表是否更新结束;第二个为在ts片加载过程中,用来轮询监听当前ts下载速率以动态调节不同的码率,hls.js初始默认码率为playlist的中间码率,如当前码率列表为360p、480p、720p,则初始默认取480p。

二、video.js

官网:Home | Video.js Documentation

中文文档:video.js -HTML5 视频播放器

videojs中文文档详解 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计JAVA个性化新闻推荐系统

[附源码]计算机毕业设计JAVA个性化新闻推荐系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM myba…

高级篇之ENC1V2新用法USB/RS232串口转Visca-Over-IP

高级篇之ENC1V2新用法USB/RS232串口转Visca-Over-IP术语背景现实需求大家好&#xff0c;最近ENC1-V2卖的很火&#xff0c;主要是因为发现了它的一个新用法&#xff0c;究竟是什么&#xff0c;马上揭晓。 术语 摄像机控制代码协议包括PTZ,VISCA,VISCA-OVER-IP,PELCO等, VISCA是…

java计算机毕业设计ssm求职与招聘网站的设计与实现

项目介绍 本前途招聘求职网站是针对目前仓库的实际需求,从实际工作出发,对过去的前途招聘求职网站存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结构、概念…

配置hadoop模板虚拟机

文章目录前言一、VMvare安装与添加Linux虚拟机二、linux服务器更改网络配置三、安装epel-release以及关闭防火墙关闭防火墙四、配置用户权限五、卸载自带的JDK前言 本文主要讲述配置hadoop集群的前置工作之一&#xff0c;配置模板虚拟机。 模板虚拟机的用处在于&#xff0c;我…

通过工具和字节码带你深入理解运行时数据区

上篇文章介绍了JVM运行时数据区的一些信息&#xff0c;这篇文章将通过工具和字节码加深对常用的堆和虚拟机栈部分的理解。 虚拟机栈再理解 下面通过3个简单的例子再深入了解一下虚拟机栈区域。 1. 虚拟机栈的出入栈过程 public class JVMStack {public static void main(St…

【JVM学习】Jconsole 配置jmx 监控JVM

1. 配置jvm启动参数 在使用jconsole监控jvm之前&#xff0c;首先需要先打开jmx。启动jvm时&#xff0c;添加以下参数。jmx通过58088端口对外开放。 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port58088 -Dcom.sun.management.jmxremote.sslfalse -Dcom…

低代码能为企业带来什么好处

低代码自问世以来&#xff0c;逐步进入到公众视野&#xff0c;由于其可视化的操作界面、可以快速开发应用等优势&#xff0c;让企业在数字化转型过程中得到技术和速度的支撑。在低代码平台&#xff0c;技术人员和业务专业人员可通过图形界面&#xff08;而不是传统的计算机编程…

m基于matlab的OQPSK载波同步通信系统仿真,载波同步采用costas环

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 OQPSK调制技术是一种恒包络调制技术&#xff0c;受系统非线性影响小&#xff0c;具有较高的带宽利用率和功率利用率&#xff0c;在卫星环境、无线环境下得到广泛应用。因此&#xff0c;在…

案例分析 丨湖仓一体助力保险企业数据战略转型升级

当下&#xff0c;海量数据结合前沿技术架构正在为保险业带来根本性的变革。本文以某知名保险机构为例&#xff0c;结合偶数行业实践经验&#xff0c;介绍保险企业如何利用湖仓一体技术推动数据战略转型升级。 背景介绍 在对该客户需求进行深度挖掘并横向比较行业现状后&#xf…

基于PHP+MySQL的图书分享平台

读书是提高一个人思维,最直接,最简单和最方便的方式。同时读书可以让自己的思想得到提升,保证自己一直都在时代的检前沿。图书是知识的载体,但是它也有它的特殊性。那就是他可以进行分享。很多时候,人们在购买图书并进行阅读之后,很可能就不再需要了,这个时候就可以和其他人进行…

SpringBoot完成查询和增加功能(简易版)

目录 一、环境准备 1、db 2、html 打开前端开发工具HBuilder X&#xff0c;把准备好的前端spboot移进去&#xff1a; 接着查看电脑的mvn版本&#xff0c;选中项目右键&#xff1a; npm -version npm i​ 3、java 在弹出的窗口中选择你需要导入的项目&#xff0c;点击ok…

python的网络请求库urllib、urllib2、urllib3、request的联系

文章目录1. 简介2. urllib3. urllib24. urllib35. requests6. 相关文章1. 简介 urllib、urllib2、urllib3、request均能通过网络访问互联网上的资源文件&#xff0c;它们通过使用统一资源定位符&#xff08;URL&#xff09;并结合re模块完成很多意想不到的操作。 urllib&…

数据库与缓存的一致性

数据库与缓存的一致性 一致性就是数据保持一致&#xff0c;在分布式系统中&#xff0c;可以理解为多个节点中数据的值是一致的。 强一致性&#xff1a;这种一致性级别是最符合用户直觉的&#xff0c;它要求系统写入什么&#xff0c;读出来的也会是什么&#xff0c;用户体验好…

Windows系统怎么加密文件夹?

Windows系统是目前使用人数最多的电脑系统&#xff0c;那么你知道在Windows系统上怎么加密文件夹吗&#xff1f;下面这篇文章&#xff0c;将向大家介绍两种Windows系统文件夹加密的方法&#xff0c;希望对你有所帮助。 方法一&#xff1a;使用超级加密3000进行加密 1、打开超级…

C和C++导出DLL后在Csharp中调用函数名的差异

参考链接&#xff1a;cc​​​​​​​在Unity中调用C代码&#xff1a;出现EntryPointNotFoundException的解决办法&#xff1a; - 知乎 (zhihu.com) __declspec(dllexport)的位置问题 - 岚之山 - 博客园 (cnblogs.com) 如果是报如下异常 System.EntryPointNotFoundExceptio…

【GlobalMapper精品教程】017:KML generator快速将坐标转为KML文件

本文介绍KML generator软件,并快速将坐标转为KML文件的使用方法,并用globalmapper中打开kml文件加以验证。本专栏配套完整的案例数据包,请打开data017.rar获取软件及数据。 文章目录 1. KML文件介绍2. kml generator软件介绍2.1 单点KML制作2.2 Excel数据KML制作2.3 文本文件…

【模电实验】【超值1 + 1】【验证性实验——分立元件“OTL“功率放大器实验】【验证性实验——分立元件稳压电源实验】

实验9-1 验证性实验——分立元件"OTL"功率放大器实验 Multisim仿真 编辑分立元件OTL功率放大器的仿真电路如下&#xff1a; 静态工作点的调试与仿真如下&#xff1a; 发射极基极集电极T1277mV998mV5.66VT26.38V6.93V12VT36.20V5.66V0V 交越失真分析如下&#xff1a…

【Linux】OS和进程概念

文章目录1.冯诺依曼体系结构2. 操作系统&#xff08;Operator System &#xff09;概念总结3. 进程描述进程-PCBtask_struct-PCB的一种task_ struct内容分类见见进程1.冯诺依曼体系结构 冯诺依曼结构也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起…

微机原理实验:字符转换为ASCII码

随记&#xff01; 要求&#xff1a; 1. 将指定数据区的字符串数据以ASCII码形式显示在屏幕上&#xff0c;并通过DOS功能调用完成必要提示信息的显示。 2. 在屏幕上显示自己的学号姓名信息。 3. 循环从键盘读入字符并回显在屏幕上&#xff0c;然后显示出对应字符的AS…

JS高级(四):正则表达式、常见的特殊字符、案例、预定义类、正则替换

JavaScript高级&#xff08;四&#xff09;一、正则表达式1.它有什么作用&#xff1f;2.创建正则表达式&#xff08;1&#xff09;利用RegExp对象来创建&#xff08;2&#xff09;利用字面量创建3.测试正则表达式二、特殊字符1.^和$匹配开头和结尾2.[ ]字符类3.量词符三、用户名…