当前位置: 首页 > news >正文

学习HLS.js

前言

HTTP 实时流(也称为HLS(.m3u8))是一种基于HTTP的自适应比特率流通信协议。HLS.js依靠HTML5视频和MediaSource Extensions进行播放,其特点:视频点播和直播播放列表、碎片化的 MP4 容器、加密媒体扩展 (EME) 支持 DRM(数字版权管理)、自适应流媒体、无需重新下载段即可在缓冲区和后台缓冲区中搜索。

HLS的配置对象

var config = {autoStartLoad: true,startPosition: -1,debug: false,capLevelOnFPSDrop: false,capLevelToPlayerSize: false,defaultAudioCodec: undefined,initialLiveManifestSize: 1,maxBufferLength: 30,maxMaxBufferLength: 600,backBufferLength: Infinity,frontBufferFlushThreshold: Infinity,maxBufferSize: 60 * 1000 * 1000,maxBufferHole: 0.1,highBufferWatchdogPeriod: 2,nudgeOffset: 0.1,nudgeMaxRetry: 3,maxFragLookUpTolerance: 0.25,liveSyncDurationCount: 3,liveSyncOnStallIncrease: 1,liveMaxLatencyDurationCount: Infinity,liveDurationInfinity: false,preferManagedMediaSource: false,enableWorker: true,enableSoftwareAES: true,fragLoadPolicy: {default: {maxTimeToFirstByteMs: 9000,maxLoadTimeMs: 100000,timeoutRetry: {maxNumRetry: 2,retryDelayMs: 0,maxRetryDelayMs: 0,},errorRetry: {maxNumRetry: 5,retryDelayMs: 3000,maxRetryDelayMs: 15000,backoff: 'linear',},},},startLevel: undefined,audioPreference: {characteristics: 'public.accessibility.describes-video',},subtitlePreference: {lang: 'en-US',},startFragPrefetch: false,testBandwidth: true,progressive: false,lowLatencyMode: true,fpsDroppedMonitoringPeriod: 5000,fpsDroppedMonitoringThreshold: 0.2,appendErrorMaxRetry: 3,loader: customLoader,fLoader: customFragmentLoader,pLoader: customPlaylistLoader,xhrSetup: XMLHttpRequestSetupCallback,fetchSetup: FetchSetupCallback,abrController: AbrController,bufferController: BufferController,capLevelController: CapLevelController,fpsController: FPSController,timelineController: TimelineController,enableDateRangeMetadataCues: true,enableMetadataCues: true,enableID3MetadataCues: true,enableWebVTT: true,enableIMSC1: true,enableCEA708Captions: true,stretchShortVideoTrack: false,maxAudioFramesDrift: 1,forceKeyFrameOnDiscontinuity: true,abrEwmaFastLive: 3.0,abrEwmaSlowLive: 9.0,abrEwmaFastVoD: 3.0,abrEwmaSlowVoD: 9.0,abrEwmaDefaultEstimate: 500000,abrEwmaDefaultEstimateMax: 5000000,abrBandWidthFactor: 0.95,abrBandWidthUpFactor: 0.7,abrMaxWithRealBitrate: false,maxStarvationDelay: 4,maxLoadingDelay: 4,minAutoBitrate: 0,emeEnabled: false,licenseXhrSetup: undefined,drmSystems: {},drmSystemOptions: {},requestMediaKeySystemAccessFunc: requestMediaKeySystemAccess,cmcd: {sessionId: uuid(),contentId: hash(contentURL),useHeaders: false,},
};var hls = new Hls(config);
autoStartLoad是否在实例化后自动开始加载流
startPosition播放的起始位置(以秒为单位)
debug是否启用调试模式
capLevelOnFPSDrop是否在帧率下降时降低视频质量
capLevelToPlayerSize是否根据播放器大小调整视频质量
maxBufferLength缓冲区的最大长度(以秒为单位)
maxMaxBufferLength缓冲区的最大长度上限(以秒为单位)
backBufferLength缓冲区的后缓冲长度(以秒为单位)
frontBufferFlushThreshold 前缓冲区的刷新阈值(以秒为单位)
maxBufferSize缓冲区的最大大小(以字节为单位)
maxBufferHole 缓冲区中允许的最大空洞(以秒为单位)
fragLoadPolicy定义片段加载策略,包括最大等待时间和重试策略
startLevel初始加载的视频质量级别
lowLatencyMode是否启用低延迟模式
enableWorker是否使用 Web Worker 来处理流数据
enableSoftwareAES是否启用软件 AES 解密
loader自定义加载器函数
fLoader自定义片段加载器函数
pLoader自定义播放列表加载器函数
xhrSetup自定义 XMLHttpRequest 设置回调函数
fetchSetup自定义 Fetch 设置回调函数
abrController自定义码率控制器
abrEwmaFastLive直播时的快速 Ewma(指数加权移动平均)系数
abrEwmaSlowLive直播时的慢速 Ewma 系数
abrEwmaFastVoD点播时的快速 Ewma 系数
abrEwmaSlowVoD点播时的慢速 Ewma 系数
abrEwmaDefaultEstimate默认的 Ewma 估计值
abrBandWidthFactor 码率选择时的带宽因子
abrBandWidthUpFactor 码率选择时的上行带宽因子
enableDateRangeMetadataCues是否启用日期范围元数据提示
enableMetadataCues是否启用元数据提示
enableID3MetadataCues 是否启用 ID3 元数据提示
enableWebVTT是否启用 WebVTT 字幕
enableIMSC1是否启用 IMSC1 字幕
enableCEA708Captions是否启用 CEA-708 字幕
stretchShortVideoTrack是否拉伸短视频轨道
maxAudioFramesDrift允许的最大音频帧漂移
forceKeyFrameOnDiscontinuity是否在不连续时强制关键帧
fpsDroppedMonitoringPeriod帧率下降监控周期(以毫秒为单位)
fpsDroppedMonitoringThreshold帧率下降监控阈值
appendErrorMaxRetry追加错误的最大重试次数
emeEnabled是否启用 EME(加密媒体扩展)
licenseXhrSetup自定义许可证请求设置回调函数
drmSystemsDRM 系统配置
drmSystemOptionsDRM 系统选项
requestMediaKeySystemAccessFunc请求媒体密钥系统访问的函数
cmcdCMCD(Common Media Client Data)配置

demo效果

相关代码在资源

相关文章:

学习HLS.js

前言 HTTP 实时流(也称为HLS(.m3u8))是一种基于HTTP的自适应比特率流通信协议。HLS.js依靠HTML5视频和MediaSource Extensions进行播放,其特点:视频点播和直播播放列表、碎片化的 MP4 容器、加密媒体扩展 …...

2025年华为OD上机考试真题(Java)——判断输入考勤信息能否获得出勤奖

题目: 公司用一个字符串来表示员工的出勤信息: absent:缺勤late:迟到leaveearly:早退present:正常上班 现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下&am…...

空对象模式

在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我…...

开启Excel导航仪,跨表跳转不迷路-Excel易用宝

都2025年了,汽车都有导航了,你的表格还没有导航仪吗?那也太OUT了。 面对着一个工作簿中有N多个工作表,工作表中又有超级表,数据透视表,图表等元素,如何快速的切换跳转到需要查看的数据呢&#…...

年度技术突破奖|中兴微电子引领汽车芯片新变革

随着以中央计算区域控制为代表的新一代整车电子架构逐步成为行业主流,车企在电动化与智能化之后,正迎来以架构创新为核心的新一轮技术竞争。中央计算SoC,作为支撑智驾和智舱高算力需求的核心组件,已成为汽车电子市场的重要新增量。…...

Ubuntu 如何查看盘是机械盘还是固态盘

在 Ubuntu 系统中,您可以通过以下方法来确定硬盘是机械硬盘(HDD)还是固态硬盘(SSD): 使用 lsblk 命令: 打开终端,输入以下命令: lsblk -d -o name,rota该命令将列出所…...

计算机网络(三)——局域网和广域网

一、局域网 特点:覆盖较小的地理范围;具有较低的时延和误码率;使用双绞线、同轴电缆、光纤传输,传输效率高;局域网内各节点之间采用以帧为单位的数据传输;支持单播、广播和多播(单播指点对点通信…...

STM32F4分别驱动SN65HVD230和TJA1050进行CAN通信

目录 一、CAN、SN65HVD230DR二、TJA10501、TJA1050 特性2、TJA1050 引脚说明 三、硬件设计1、接线说明2、TJA1050 模块3、SN65HVD230 模块 四、程序设计1、CAN_Init:CAN 外设初始化函数2、CAN_Send_Msg、CAN_Receive_Msg 五、功能展示1、接线图2、CAN 数据收发测试 …...

将光源视角的深度贴图应用于摄像机视角的渲染

将光源视角的深度贴图应用于摄像机视角的渲染是阴影映射(Shadow Mapping)技术的核心步骤之一。这个过程涉及到将摄像机视角下的片段坐标转换到光源视角下,并使用深度贴图来判断这些片段是否处于阴影中。 1. 生成光源视角的深度贴图 首先&…...

docker一键安装脚本(docker安装)

第一种方法一键安装命令 curl -O --url http://luyuanbo79.south.takin.cc/wenjian/docker_install.sh && chmod x docker_install.sh && ./docker_install.sh 备用方法 curl -O --url https://file.gitcode.com/4555247/releases/untagger_0896d4789937405…...

【SY2】Apollo10.0 Cyber基于Writer/Reader的通信方式

实验前提 Apollo10.0已经安装完毕Vscode及相关插件安装完成启动容器并进入在Vscode连接进入到Apollo工作空间下学习资料 部分配置如实验一https://blog.csdn.net/weixin_60062799/article/details/145029669?spm1001.2014.3001.5501 学习资料 Apollo7.0或其他版本可以参…...

【YOLOv8杂草作物目标检测】

YOLOv8杂草目标检测 算法介绍模型和数据集下载 算法介绍 YOLOv8在禾本科杂草目标检测方面有显著的应用和效果。以下是一些关键信息的总结: 农作物幼苗与杂草检测系统:基于YOLOv8深度学习框架,通过2822张图片训练了一个目标检测模型&#xff…...

在Java中实现集合排序

使用字面量的方式创建一个集合 //使用字面量的方式初始化一个List集合List<User> userList Arrays.asList(new User("小A",5),new User("小鑫",18),new User("小昌",8),new User("小鑫",8));注意&#xff1a;使用Arrays.asLis…...

el-descriptions-item使用span占行不生效

需要实现的效果是客户状态单独占满一行 错误代码&#xff1a; <el-descriptions title"基本信息" :column"3"> <el-descriptions-item label"公司电话:">Suzhou</el-descriptions-item><el-descriptions-item label"…...

Android 绘制学习总结

1、刷新率介绍 我们先来理一下基本的概念&#xff1a; 1、60 fps 的意思是说&#xff0c;画面每秒更新 60 次 2、这 60 次更新&#xff0c;是要均匀更新的&#xff0c;不是说一会快&#xff0c;一会慢&#xff0c;那样视觉上也会觉得不流畅 3、每秒 60 次&#xff0c;也就是 1…...

Linux下部署SSM项目

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 Linux部署SSM项目 打包项目 1、修改pom.xml文件&#xff0c;打包方式改为war <packaging>war</packaging>2、idea 通过maven的clean&#xff0c;…...

计算机网络 笔记 数据链路层 2

1,信道划分&#xff1a; (1)时分复用TDM 将时间等分为“TDM帧”&#xff0c;每个TDM帧内部等分为m个时隙&#xff0c;m个用户对应m个时隙 缺点&#xff1a;每个节点只分到了总带宽的1/m,如果有部分的1节点不发出数据&#xff0c;那么就会在这个时间信道被闲置&#xff0c;利用…...

xml简介

目录 基本语法特点及应用场景一个简单示例 xml&#xff08;全称eXtensible Markup Language&#xff09;是一种用于存储和传输数据的标记语言&#xff0c;跨平台并且跨语言&#xff0c;xml内容较多&#xff0c;这篇文章会介绍一些基础的内容。 基本语法 xml文档通常以xml声明开…...

透明部署、旁路逻辑串联的区别

背景 需讨论防火墙到底是串联&#xff0c;还是旁挂。 通常串联指的就是“透明部署”&#xff0c;旁挂指的就是“逻辑串联”。 透明部署&#xff08;串联&#xff09; 也称为透明模式或桥接模式&#xff0c;是一种安全设备的部署方式。在这种模式下&#xff0c;安全设备被串联…...

【网络安全渗透测试零基础入门】之XSS攻击获取用户cookie和用户密码(实战演示)

前言 大家好&#xff0c;我是demon 这是demon给粉丝盆友们整理的网络安全渗透测试入门阶段XSS攻击教程。 本阶段主要讲解XSS攻击获取用户cookie和用户密码。 喜欢的朋友们&#xff0c;记得给晓晓点赞支持和收藏一下&#xff0c;关注我&#xff0c;学习黑客技术。 简介 该…...

新手福音:通过快马ccswitch模型轻松生成你的第一个博客页面代码

作为一名刚接触编程的新手&#xff0c;想要搭建个人博客主页却不知从何下手&#xff0c;这确实是个常见难题。最近我在InsCode(快马)平台尝试了ccswitch模型&#xff0c;发现它特别适合零基础学习者快速入门。下面分享我的实践过程&#xff0c;希望能帮到同样想入门前端开发的朋…...

开源大模型新范式:Pixel Epic智识终端镜像免配置部署详细步骤

开源大模型新范式&#xff1a;Pixel Epic智识终端镜像免配置部署详细步骤 1. 产品概览 Pixel Epic智识终端是一款基于AgentCPM-Report大模型构建的创新研究报告辅助工具。它将枯燥的科研工作转化为一场像素风格的RPG冒险&#xff0c;让用户以游戏化的方式完成专业报告撰写。 …...

如何快速解锁QQ音乐加密格式:面向普通用户的完整音频解密指南

如何快速解锁QQ音乐加密格式&#xff1a;面向普通用户的完整音频解密指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump …...

SEO_如何制定有效的SEO策略?分步指南(132 )

如何制定有效的SEO策略&#xff1f;分步指南 在互联网时代&#xff0c;一个网站的成功往往取决于其在搜索引擎上的排名。制定有效的SEO策略是提升网站流量、吸引潜在客户的关键。本文将为你提供一份详细的分步指南&#xff0c;帮助你制定并实施有效的SEO策略。 第一步&#x…...

Qwen3-1.7B能做什么?实测写邮件、生成故事、智能聊天

Qwen3-1.7B能做什么&#xff1f;实测写邮件、生成故事、智能聊天 1. 认识Qwen3-1.7B Qwen3&#xff08;千问3&#xff09;是阿里巴巴集团开源的新一代通义千问大语言模型系列中的一员&#xff0c;1.7B版本虽然参数量不大&#xff0c;但在日常应用中表现出色。这个17亿参数的模…...

M2FP在虚拟试衣间的应用:快速识别人体部位,助力电商设计

M2FP在虚拟试衣间的应用&#xff1a;快速识别人体部位&#xff0c;助力电商设计 1. 虚拟试衣间的技术挑战 在电商领域&#xff0c;虚拟试衣技术正在改变用户的购物体验。传统试衣间面临诸多痛点&#xff1a; 用户无法直观看到服装上身效果退换货率高&#xff0c;增加运营成本…...

【bilibili-downloader】:突破4K画质限制的B站视频下载工具:给视频收藏爱好者的高效解决方案

【bilibili-downloader】&#xff1a;突破4K画质限制的B站视频下载工具&#xff1a;给视频收藏爱好者的高效解决方案 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/…...

intv_ai_mk11效果展示:真实用户提问‘如何提高店铺转化率’获得4维度可执行策略

intv_ai_mk11效果展示&#xff1a;真实用户提问如何提高店铺转化率获得4维度可执行策略 1. 案例背景与问题描述 在电商运营中&#xff0c;店铺转化率是衡量经营效果的核心指标之一。某服装店铺运营人员向intv_ai_mk11 AI对话机器人提出了一个典型问题&#xff1a;"如何提…...

探秘 Awesome Rust:你的Rust学习与实践终极宝典 [特殊字符]

探秘 Awesome Rust&#xff1a;你的Rust学习与实践终极宝典 &#x1f680; Awesome Rust是一个精心策划的Rust代码和资源集合&#xff0c;为开发者提供了完整的Rust生态系统指南。无论你是Rust新手还是经验丰富的开发者&#xff0c;这个项目都能为你节省大量寻找优质工具和库的…...

M5Stamp C3 Mate LED驱动库:基于RMT的WS2812B精简控制方案

1. 项目概述M5StampC3LED 是专为 M5Stamp C3 Mate 模块设计的 LED 控制库&#xff0c;其本质是一个轻量级封装层&#xff0c;用于驱动板载的 Adafruit NeoPixel&#xff08;WS2812B 兼容&#xff09;RGB LED。该库不直接实现底层时序协议&#xff0c;而是基于 ESP-IDF 或 Ardui…...