Hls.js 使用文档
发布时间:2025-05-23 13:06:32 发布人:远客网络
一、Hls.js 使用文档
hls.js是一个JavaScript库,用于实现HTTP Live Streaming客户端。它依赖于HTML5视频和MediaSource扩展进行播放。通过将MPEG-2传输流和AAC/MP3流转换为ISO BMFF(MP4)片段,hls.js工作。如果浏览器支持,Web Worker异步执行此转换。此外,hls.js在WWDC2016期间宣布还支持HLS+ fmp4。
hls.js无需任何播放器,可以直接在标准HTML元素上运行。它用ECMAScript6(*.js)和TypeScript(*.ts)编写,并使用TypeScript编译器在ECMAScript5中进行编译。TS和纯JS/ES6编写的模块可以相互依赖并导入/要求。
构建发行包并为开发环境提供服务,使用Webpack。已添加到其各自变体的属性列表中的特征清单标签,以及添加到各自片段的属性列表中的播放列表标签,但未在流媒体和播放中实现。
关注学习资料推荐,点击下方链接,先码住不迷路~。【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs等等)。有需要的可以点击994289133加群领取哦~
有关问题的完整列表,请参阅“发布计划和待办事项”项目选项卡中的“最高优先级”。编解码器支持取决于运行时环境(例如,并非同一操作系统上的所有浏览器都支持>HEVC)。
服务器端渲染(SSR)和require来自Node.js运行时。您可以在Node中安全地使用此库,但导出一个虚拟对象,以避免要求库引发错误。请注意,HLS.js在Node.js中不可实例化。有关更多详细信息,请参阅#1841。
依赖项包括1.node.js、2.npm、3.git、4.webpack、5.webpack-cli。请先拉取github中的项目代码,并安装所需依赖(示例项目需要vpn才能播放视频流)。使用第一步:设置和支持,首先在您的网页中包含。
调用静态方法:Hls.isSupported(),检查您的浏览器是否支持MediaSource Extensions。第二步:实例化Hls对象并绑定到元素。让我们继续进行第三步:加载清单。您需要提供清单URL。
视频通过HTML元素控制,HTMLVideoElement控件和事件可以无缝使用。所有错误都通过唯一的单个事件发出信号,并按以下方式分类。请参阅示例代码以侦听错误。
致命错误恢复提供了通过以下2种方法“尝试”恢复网络和媒体错误的方法:hls.startLoad()和 hls.recoverMediaError()。如果调用后仍然引发媒体错误,hls.swapAudioCodec()可能有助于解决音频编解码器不匹配的问题。工作流程是:调用 hls.recoverMediaError(),然后在第一个媒体错误之后快速引发另一个媒体错误时,先调用hls.swapAudioCodec(),再调用hls.recoverMediaError()。
最后一步:销毁,在流之间切换。调用 hls.destroy()以释放使用的资源并销毁hls上下文。
二、nodejs 使用redis 为什么不用连接池
nodejs是个单线程的过程,异步处理很方便,redis又支持pipelining,通过异步处理,可以在复用一个连接的情况下完成大部分任务。返回顺序上,redis的请求永远都是先请求的先返回,所以负责发送的程序在发送的时候记个序号,然后按序号等相应返回结果就行了。不过吧,我觉得如果要用BRPOP这样的命令,没有连接池肯定不行啊……还有如果要用PUB/SUB的话,Subscribe也要占一个连接。
一般考虑用单连接还是多连接,主要看两个问题:
1.我自己的程序是多线程还是单线程,如果是多线程,用多个连接、每个线程一个连接,编程起来要简单很多,可以直接使用同步socket的方式;单线程一般本身就是多路复用,用多个连接跟使用pipelining的编程复杂度是一样的。
2.服务器端使用多个连接是否可以提高性能。这个取决于服务器端对pipelining(或者multiplexing)的支持。redis对pipelining的支持很好,用多个连接完全不能比单个连接快,只会占用更多的资源,所以尽量应当使用单个连接。而MySQL这样的协议对pipelining比较不友好,它是有状态转移的,在处理一个SQL的过程中可能需要发送/取回多次数据,这样只能一次处理一个SQL,用多个连接就可以有效提高并发度。其他协议也是一样的,比如HTTP/1.1虽然支持pipelining但是只能一个一个结果返回,而HTTP/2.0对multiplexing的支持很好,这样HTTP/1.1就应当使用多个连接,而HTTP/2.0就可以使用单连接。