hls.js 获取ts文件加动态参数

hls.js 获取ts文件加动态参数

在使用 HLS.js (HLS.js 是一个开源的 JavaScript 库,用于播放 HTTP Live Streaming (HLS) 视频) 来播放带有动态参数的 TS 文件时,你可以通过修改请求的 URL 来加入这些参数。这通常涉及到在视频播放列表(M3U8 文件)中修改 TS 文件的 URL 或者在请求发送之前对请求进行拦截和修改。

方法一:直接修改 M3U8 文件中的 URL

  1.  

    生成带参数的 M3U8 文件

     

     

    在你的服务器端,生成 M3U8 文件时,你可以在引用 TS 文件时添加查询参数。例如,如果你的服务器端脚本(如 PHP, Python, Node.js 等)生成 M3U8 文件,你可以这样修改 TS 文件的 URL:

     

     

     
     
    #EXTINF:10,
    video1.ts?param1=value1&param2=value2

     

     

  2.  

    使用 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 拦截器来动态添加参数。

  1.  

    设置请求拦截器

     

     

     
     
    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();
    });
    }

     

     

  2.  

    自定义加载器 (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自动生成,仅供参考
 
 

posted on   漫思  阅读(7)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有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 做的优秀软件

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示