You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shaka Player(搭配mux.js)中监听HLS直播流的SCTE35?

检测HLS直播流中的SCTE-35信号(Shaka Player + mux.js)

可以,你可以通过配置Shaka Player并添加专属事件监听器来捕获流中的SCTE-35信号,以下是具体实现方案:

1. 启用SCTE-35解析配置

初始化Shaka Player时,需在配置中开启HLS的SCTE-35支持(Shaka会自动调用mux.js处理HLS流解析):

const player = new shaka.Player(document.getElementById('video'));

// 开启SCTE-35解析
player.configure({
  manifest: {
    hls: {
      scte35Enabled: true
    }
  }
});

2. 监听SCTE-35事件

Shaka Player提供timelineRegionAdded事件,当检测到新的SCTE-35标记(如广告插播、节目切换信号)时会触发该事件。通过监听此事件可获取完整的信号元数据:

player.addEventListener('timelineRegionAdded', (event) => {
  const region = event.region;
  console.log('新增SCTE-35信号:', region);

  // 常用元数据字段
  console.log('信号开始时间:', region.startTime);
  console.log('信号结束时间:', region.endTime);
  if (region.metadata?.scte35) {
    console.log('SCTE-35原始数据:', region.metadata.scte35);
  }
});

3. 区分SCTE-35信号类型

若需针对不同类型的SCTE-35事件做差异化处理,可解析region.metadata.scte35中的类型标识:

player.addEventListener('timelineRegionAdded', (event) => {
  const scte35Data = event.region.metadata?.scte35;
  if (!scte35Data) return;

  switch (scte35Data.type) {
    case 'AD_BREAK':
      console.log('检测到广告插播信号');
      // 执行广告相关逻辑
      break;
    case 'PROGRAM_START':
      console.log('检测到节目开始信号');
      // 执行节目切换逻辑
      break;
    // 其他类型可根据需求扩展
  }
});

关键注意事项

  • 确保使用Shaka Player v3.0及以上版本(该版本后SCTE-35支持趋于稳定)
  • 确认直播流本身包含可解析的SCTE-35信号(部分流可能会隐藏或加密该信号)
  • mux.js需正确引入到项目中,Shaka Player会自动依赖其完成HLS流的SCTE-35解析

内容的提问来源于stack exchange,提问作者Debjit Sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:20:28