hls.js 获取ts文件加动态参数
在使用 HLS.js (HLS.js 是一个开源的 JavaScript 库,用于播放 HTTP Live Streaming (HLS) 视频) 来播放带有动态参数的 TS 文件时,你可以通过修改请求的 URL 来加入这些参数。这通常涉及到在视频播放列表(M3U8 文件)中修改 TS 文件的 URL 或者在请求发送之前对请求进行拦截和修改。
方法一:直接修改 M3U8 文件中的 URL
-
生成带参数的 M3U8 文件:
在你的服务器端,生成 M3U8 文件时,你可以在引用 TS 文件时添加查询参数。例如,如果你的服务器端脚本(如 PHP, Python, Node.js 等)生成 M3U8 文件,你可以这样修改 TS 文件的 URL:
#EXTINF:10,video1.ts?param1=value1¶m2=value2 -
使用 HLS.js 加载修改后的 M3U8 文件:
if (Hls.isSupported()) {var video = document.getElementById('video');var hls = new Hls();hls.loadSource('path/to/your/modified.m3u8');hls.attachMedia(video);hls.on(Hls.Events.MANIFEST_PARSED,function() {video.play();});}
方法二:使用 HLS.js 的自定义请求拦截器
如果你不想在服务器端修改 M3U8 文件,你可以使用 HLS.js 的 request
拦截器来动态添加参数。
-
设置请求拦截器:
if (Hls.isSupported()) {var hls = new Hls();var video = document.getElementById('video');// 设置请求拦截器hls.config.pLoader = (context) => {const url = new URL(context.url);url.searchParams.append('param1', 'value1');url.searchParams.append('param2', 'value2');context.url = url.toString();return new CustomLoader(context); // CustomLoader 是你自定义的加载器,需要实现 fetch 操作};hls.loadSource('path/to/your/original.m3u8');hls.attachMedia(video);hls.on(Hls.Events.MANIFEST_PARSED,function() {video.play();});} -
自定义加载器 (
CustomLoader
):你需要创建一个自定义的加载器来处理 fetch 请求。这通常涉及到扩展 HLS.js 的默认
Loader
类或者使用其他库(如fetch
)来发送请求。例如:class CustomLoader {constructor(context) {this.context = context;}fetch(url, options) {return fetch(url, options).then(response => {if (!response.ok) {throw new Error(`Network response not ok: ${response.statusText}`);}return response;});}abort() { /* 实现 abort 方法 */ }destroy() { /* 实现 destroy 方法 */ }}
以上方法可以根据你的具体需求选择使用。如果你希望在客户端动态修改请求参数,使用请求拦截器是一个很好的选择。如果你有控制权修改服务器端的 M3U8 文件,直接在文件中添加参数会更加直接和高效。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2023-03-03 Microsoft Visual Studio 2010 Service Pack 1官方下载版(ISO)
2023-03-03 Visual Studio2010保姆式安装教程(VS2010 旗舰版),以及如何运行第一个C语言程序,超详细
2023-03-03 最热的前端Web组态工具(可视化)
2023-03-03 10 个值得掌握的 reduce 技巧
2023-03-03 一个程序员的成功故事:从开源工具到 75 亿美元的软件帝国
2023-03-03 串口通信原理详解232、422、485,入门必看!
2023-03-03 QT 做的优秀软件