学习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 | 自定义许可证请求设置回调函数 |
drmSystems | DRM 系统配置 |
drmSystemOptions | DRM 系统选项 |
requestMediaKeySystemAccessFunc | 请求媒体密钥系统访问的函数 |
cmcd | CMCD(Common Media Client Data)配置 |
demo效果
相关代码在资源
相关文章:
学习HLS.js
前言 HTTP 实时流(也称为HLS(.m3u8))是一种基于HTTP的自适应比特率流通信协议。HLS.js依靠HTML5视频和MediaSource Extensions进行播放,其特点:视频点播和直播播放列表、碎片化的 MP4 容器、加密媒体扩展 …...
Zustand selector 发生 infinate loops的原因以及解决
Zustand selector 发生 infinate loops 做zustand tutorial project的时候,使用选择器方法引入store,出现Maximum update depth exceeded,也就是组件一直重新渲染,改成直接使用store就没有不会出现这个问题。如下: // const [xIs…...
Unity自定义编辑器:基于枚举类型动态显示属性
1.参考链接 2.应用 target并设置多选编辑 添加[CanEditMultipleObjects] using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;[CustomEditor(typeof(LightsState))] [CanEditMultipleObjects] public class TestInspector :…...
donet (MVC)webAPI 的接受json 的操作
直接用对象来进行接收,这个方法还不错的。 public class BangdingWeiguiJiluController : ApiController{/// <summary>/// Json数据录入错误信息/// </summary>/// <param name"WeiguiInfos"></param>/// <returns></r…...
GitHub 新手入门指南
一、GitHub 简介 GitHub 是全球最大的代码托管平台,它基于 Git 版本控制系统,为开发者提供了一个集中存储、管理和协作开发代码的空间。在这里,你可以找到无数开源项目,也可以将自己的项目与全球开发者社区共享,促进知…...
Django后端相应类设计
通用的ApiResponse类:用于生成统一的 API 响应格式。每个响应都包含以下字段(每个接口最终的返回数据格式): status_code:HTTP 状态码(如 200、400、500 等)message:响应的描述信息…...
完美解决VMware 17.0 Pro安装ubuntu、Deepin等虚拟机后卡顿、卡死问题
这两天在 VM 17 Pro 中安装了ubuntu 24.1 和Deepin 23.9 等Linux操作系统,在使用过程中出现过数次卡顿、卡死问题,现记录整理解决方法如下: 一、问题描述 安装虚拟机时、以及安装完成后正常使用时出现鼠标点击卡顿、系统反应慢、卡死等问题…...
前端 图片上鼠标画矩形框,标注文字,任意删除
效果: 页面描述: 对给定的几张图片,每张能用鼠标在图上画框,标注相关文字,框的颜色和文字内容能自定义改变,能删除任意画过的框。 实现思路: 1、对给定的这几张图片,用分页器绑定…...
【Oracle篇】深入了解执行计划中的访问路径(含表级别、B树索引、位图索引、簇表四大类访问路径)
💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…...
ROS2+OpenCV综合应用--11. AprilTag标签码跟随
1. 简介 apriltag标签码追踪是在apriltag标签码识别的基础上,增加了小车车体运动的功能,控制车体从而使摄像头会保持标签码在视觉中间左右运动,在根据物体在摄像头成像近大远小的原理根据这一特性,从而实现标签码跟随功能。 2. 启…...
第四、五章图论和网络爬虫+网络搜索
第四章 图论和网络爬虫 4.1 构建网络爬虫工程重点 构建网络爬虫的重点 用BFS还是DFS 在不考虑时间的情况下,这两种不同的搜索方法都可以在相同的时间下爬下整个静态的互联网内容,但是在现实中肯定是需要考虑时间以及互联网动态变化的。所以重点应该是如…...
PyMysql 01|(包含超详细项目实战)连接数据库、增删改查、异常捕获
目录 一、数据库操作应用场景 二、安装PyMysql 三、事务的概念 四、数据库的准备 五、PyMysql连接数据库 1、建立连接方法 2、入门案例 六、PyMysql操作数据库 1、数据库查询 1️⃣查询操作流程 2️⃣cursor游标 3️⃣查询常用方法 4️⃣案例 5️⃣异常捕获 …...
(No space left on device )
错误日志: org.springframe tipart.MultipartException: Failed to parse multipart servlet request: nested excepti /ROOT/upload_e5046403_6cd4_4673_3313_479fb76773fe_00000004.tmp (No space left on device ) 分析: (No space left on devi…...
Conmi的正确答案——Cordova使用“src-cordova/config.xml”编辑“Android平台”的“uses-permission”
Cordova版本:12.0.0 (cordova-lib12.0.1) 1、配置例程: <platform name"android"><config-file target"AndroidManifest.xml" parent"/manifest"><uses-permission android:name"android.permission…...
LLaMA-Factory web微调大模型并导出大模型
LLaMA-Factory 开源大模型如LLaMA,Qwen,Baichuan等主要都是使用通用数据进行训练而来,其对于不同下游的使用场景和垂直领域的效果有待进一步提升,衍生出了微调训练相关的需求,包含预训练(pt)&am…...
针对数据库系统安全的漏洞扫描加固工具【WebSocket + MySQL】
一、系统背景 随着信息技术的迅猛发展和互联网的普及,数据库作为存储、管理和检索大量数据的关键组件,其安全性对于企业和组织来说至关重要。然而,由于网络环境的复杂性和攻击手段的多样性,数据库面临着越来越多的安全威胁&#…...
汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)
汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2) 下面我们继续来介绍AutoSAR CP分层架构,下面的文字和图来自AutoSAR官网目前最新的标准R24-11的分层架构手册。该手册详细讲解了AutoSAR分层架构的设计,下面让我们来一起学习一下。 Introductio…...
《PC 上的开源神经网络多模态模型:开启智能交互新时代》
《PC 上的开源神经网络多模态模型:开启智能交互新时代》 一、引言二、多模态模型基础剖析(一)核心概念解读(二)技术架构探秘 三、开源多模态模型的独特魅力(一)开源优势尽显(二&…...
Docker Desktop 构建java8基础镜像jdk安装配置失效解决
Docker Desktop 构建java8基础镜像jdk安装配置失效解决 文章目录 1.问题2.解决方法3.总结 1.问题 之前的好几篇文章中分享了在Linux(centOs上)和windows10上使用docker和docker Desktop环境构建java8的最小jre基础镜像,前几天我使用Docker Desktop环境重新构建了一个…...
【算法】八大排序算法
这篇文章是对数据结构中 八大经典排序算法 的详解,包括其原理、实现过程、时间复杂度、空间复杂度及其适用场景。最后两种排序不常见,但仍收录了进来保持文章结构的完整性。 排序(Sort)是将无序的记录序列(或称文件)调整成有序的…...
pytest+allure 入门
使用allure如何生成自动化测试报告 ?一文详解allure的使用 。_allure测试报告-CSDN博客 例子: import allure import pytest import osallure.epic("闹钟") allure.feature("闹钟增删") class TestSchedule():def setu…...
算法--最大公约数,最小公倍数
1. 求两个数的最大公约数,最小公倍数 解释:这里Mymin和Mymax函数是自定义用于获取两数最大值和最小值的 求最大公约数的时候只需要得到两数之中最小的一项,向下逐个判断直到等于1 求最小公倍数的时候只需要得到两数之中最大的一项…...
【跨域问题】
跨域问题 官方概念: 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域本质来说,是前端请求给到后端时候,请求头里面,有一个 Origin ,会带上 协议域名端口号等;后端接受到请求&…...
为什么在二维卷积操作中,将宽度(W)维度放在高度(H)之前会破坏空间局部性原则,并影响缓存性能
空间局部性原则 空间局部性指的是程序倾向于访问与最近访问过的内存位置接近的内存位置。对于深度学习模型中的张量数据,这意味着当处理图像或特征图时,如果能够连续地访问相邻像素的数据,那么可以最大化利用CPU/GPU缓存,因为缓存…...
【C语言】_函数指针数组/转移表与回调函数
目录 1. 示例1:函数指针数组的简单使用 2. 示例2:多同类型函数调用 2.1 switch-case实现 2.2 switch-case函数指针 2.3 函数指针数组实现 3. 回调函数 关于函数指针,专栏文章链接如下:【C语言】_函数指针变量-CSDN博客https…...
《通过财报看企业》
“借贷关系”“净资产收益率”“财务报表”、净利润、盈利能力、现金流 第1章 净利润:决定一家公司的股价能涨多高 企业经营:存货周转率 企业市值:市值净利润市盈率 龙头企业:行业内收入规模最大、盈利能力最强,…...
年度技术突破奖|中兴微电子引领汽车芯片新变革
随着以中央计算区域控制为代表的新一代整车电子架构逐步成为行业主流,车企在电动化与智能化之后,正迎来以架构创新为核心的新一轮技术竞争。中央计算SoC,作为支撑智驾和智舱高算力需求的核心组件,已成为汽车电子市场的重要新增量。…...
力扣经典题目之912.排序数组(使用希尔排序解决)
今天继续给大家分享一道力扣的做题心得今天这道题目是 912.排序数组 题目链接:912. 排序数组 - 力扣(LeetCode) 题目:给你一个整数数组 nums,请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题…...
QT升级及下载缓慢的问题解决办法
QT升级及下载缓慢的问题解决办法 QT安装慢解决办法: 官方下载地址: https://www.qt.io/download-dev 点开后点击download 填写相关信息后即可下载完成 线上安装工具。 安装工具(qt-online-installer-windows-x64-4.8.1.exe) 如下图: 此时不…...
List详解 - 双向链表的操作
在C中,std::list是标准模板库(STL)中的一个容器,它实现了双向链表的数据结构。与数组或向量(std::vector)不同,std::list允许在常数时间内进行插入和删除操作,尤其是在链表的任意位置…...
公众号如何通过openid获取unionid
通过接口 https://api.weixin.qq.com/cgi-bin/user/info?access_tokenxxxxxxx&langzh_CN 返回的数据如下: 前提是必须绑定 微信开放平台 token如何获取呢 代码如下: String tokenUrl "https://api.weixin.qq.com/cgi-bin/token"; …...
AIP-1 AIP目的和指南
原文AIP-1: AIP Purpose and Guidelines 随着Google API数量不断增加,API治理团队不断扩张,以满足API维护工作需求。越来越有必要为API生产者、审查者和其他相关方提供一套参考文档。API风格指南和一站式介绍文档简洁扼要。AIP集合提供了一种产出一致性…...
【学习】CMMM智能制造能力成熟度评估的重要性
CMMM认证通过对企业当前生产状态的全面评估,能够精准地确定其智能化生产的程度,并将企业的智能化生产水平划分为五个等级,包括初始级、已定义级、以管理级、卓越级和顶级。这种等级划分使得不同类型的企业能够根据自身实际情况,选…...
WebGIS在应急灾害中对村庄、风景区、机场的影响范围应用-以日喀则市定日县地震为例
目录 前言 一、关于影响范围 1、震中距离5公里 2、震中20公里范围 3、20到80公里范围 二、空间查询知识 1、相关数据介绍 2、空间数据查询 三、前后端数据查询以及web可视化实现 1、后台API实现 2、WebGIS前端实现 四、Web成果展示 1、空间位置分析 2、包含风景区…...
Flink系列知识讲解之:网络监控、指标与反压
Flink系列知识之:网络监控、指标与反压 在上一篇博文中,我们介绍了 Flink 网络协议栈从高层抽象到底层细节的工作原理。本篇博文是网络协议栈系列博文中的第二篇,在此基础上,我们将讨论如何监控网络相关指标,以识别吞…...
Postman接口测试05|实战项目笔记
目录 一、项目接口概况 二、单接口测试-登录接口:POST 1、正例 2、反例 ①姓名未注册 ②密码错误 ③姓名为空 ④多参 ⑤少参 ⑥无参 三、批量运行测试用例 四、生成测试报告 1、Postman界面生成 2、Newman命令行生成 五、token鉴权(“…...
人工智能学习路线全链路解析
一、基础准备阶段(预计 2-3 个月) (一)数学知识巩固与深化 线性代数(约 1 个月): 矩阵基础:回顾矩阵的定义、表示方法、矩阵的基本运算(加法、减法、乘法)&…...
图像处理 | 图像二值化
在图像处理领域,图像二值化是一个重要的操作,它将彩色或灰度图像转换为只有两种颜色(通常是黑白)的图像。二值化广泛应用于文字识别、图像分割、边缘检测等领域,尤其在处理简洁和高对比度的图像时非常有效。本文将深入…...
ASP.NET Core 中服务生命周期详解:Scoped、Transient 和 Singleton 的业务场景分析
前言 在 ASP.NET Core 中,服务的生命周期直接影响应用的性能和行为。通过依赖注入容器 (Dependency Injection, DI),我们可以为服务定义其生命周期:Scoped、Transient 和 Singleton。本文将详细阐述这些生命周期的区别及其在实际业务中的应用…...
鼠标自动移动防止锁屏的办公神器 —— 定时执行专家
目录 ◆ 如何设置 ◇ 方法1:使用【执行Nircmd命令】任务 ◇ 方法2:使用【模拟键盘输入】任务 ◆ 定时执行专家介绍 ◆ 定时执行专家最新版下载 ◆ 如何设置 ◇ 方法1:使用【执行Nircmd命令】任务 1、点击工具栏第一个图标【新建任务】&…...
开源库:jcon-cpp
说明 jcon-cpp 是一个用于 C 的 JSON-RPC 库,它允许开发者通过 JSON-RPC 协议进行进程间通信(IPC)。JSON-RPC 是一种轻量级的远程过程调用协议,基于 JSON 格式数据进行通信。基于MIT协议,最新代码基于Qt6实现。可通过…...
Docker入门之docker基本命令
Docker入门之docker基本命令 官方网站:https://www.docker.com/ 1. 拉取官方镜像并创建容器(以redis为例) 拉取官方镜像 docker pull redis# 如果不需要添加到自定义网络使用这个命令,如需要,直接看第二步 docker r…...
C++ Qt练习项目 QChar功能测试
个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…...
Taro+react 开发第一节创建 带有redux状态管理的项目
Taro 项目基于 node,请确保已具备较新的 node 环境(>16.20.0),推荐使用 node 版本管理工具 nvm 来管理 node,这样不仅可以很方便地切换 node 版本,而且全局安装时候也不用加 sudo 了。 1.安装 npm inf…...
【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】
Overview 本文将介绍 soc 设计中 RTL-to-Netlist 映射及 RTL 中的信号名和 Netlist 中的信号名差异, 在 SoC设计中,RTL-to-Netlist映射 是从RTL(Register Transfer Level)代码转换为Netlist的过程。这通常涉及将用硬件描述语言&…...
551 灌溉
常规解法: #include<bits/stdc.h> using namespace std; int n,m,k,t; const int N105; bool a[N][N],b[N][N]; int cnt; //设置滚动数组来存贮当前和下一状态的条件 //处理传播扩散问题非常有效int main() {cin>>n>>m>>t;for(int i1;i&l…...
计算机网络之---OSI七层模型
为什么会有七层模型 OSI七层模型的出现源于计算机网络技术的发展需求,主要解决以下几个问题: 标准化与互操作性 随着计算机网络的快速发展,不同厂商、不同技术之间的设备和系统需要能够无缝通信。而不同厂商在网络硬件、软件、协议等方面存在…...
spring task使用
Spring Task 简介 Spring Task 是 Spring 框架原生自带的任务调度框架,它犹如一把瑞士军刀,为开发者提供了丰富多样的功能,助力轻松创建和管理定时任务。相较于其他一些第三方任务调度框架,Spring Task 最大的优势在于其与 Sprin…...
ADB->查看进程并强杀进程
查看进程 adb shell ps | findstr com.example.myapplication// result u0_a275 26312 914 17185988 193260 do_freezer_trap 0 S com.example.myapplication用户USER: u0_a275 该字段表示运行此进程的用户。在 Android 中,应用通常以 uN_aM 的格式表…...
Qt重写webrtc的demo peerconnection
整个demo为: 可以选择多个编码方式: cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…...