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

寻求修复:部分M3U8文件无法在VideoJS跨浏览器正常播放

解决VideoJS 7.20.2播放部分M3U8报错的问题

针对你遇到的「Playback cannot continue. No available working or supported playlists.」报错,结合你的配置和场景,可按以下方向排查修复:

1. 检查M3U8编码兼容性

部分M3U8可能使用了VideoJS默认HLS解析器不支持的编码组合(比如特殊H.265编码、非标准音频编码)。可通过ffmpeg查看流编码信息:

ffmpeg -i https://mps.lib.harvard.edu/vod/_definst_/smil:s3/drs-delivery-prod/491690138.smil/playlist.m3u8

确保流采用H.264(avc1)+ AAC的标准组合,这是浏览器与VideoJS支持最广泛的编码格式。

2. 优化VideoJS的HLS配置

你的html5配置缺少HLS相关参数,补充后可提升兼容性:

const videoJsOptions = {
  autoplay: true,
  fluid: true,
  playbackRates: [0.5, 1, 1.5, 2],
  controls: true,
  responsive: true,
  aspectRatio: '16:9',
  techOrder: ['html5', 'youtube', 'vimeo'],
  youtube: { autohide: 1 , autoplay: false },
  poster: carouselID?.poster,
  html5: {
    nativeTextTracks: false,
    hls: {
      overrideNative: true, // 强制使用VideoJS内置HLS解析器,规避浏览器原生差异
      enableLowInitialPlaylist: true,
      smoothQualityChange: true,
      enableJavaScript: true // 开启SMIL格式流的解析支持
    }
  },
  sources: [{
    src: "https://mps.lib.harvard.edu/vod/_definst_/smil:s3/drs-delivery-prod/491690138.smil/playlist.m3u8",
    type: "application/x-mpegurl"
  }]
};

示例中M3U8路径包含smil:标识,开启enableJavaScript是处理SMIL流媒体的关键。

3. 排查跨域与资源有效性

  • 检查浏览器控制台是否有CORS报错,若存在需在流媒体服务器配置CORS规则,允许你的React应用域名访问。
  • 通过浏览器网络面板确认M3U8分片(.ts文件)能正常加载,避免因分片地址无效或资源失效导致播放失败。

4. 锁定适配的hls.js版本

VideoJS 7.20.2依赖的hls.js版本可能存在特定流的兼容问题,可手动指定稳定版本:

npm install hls.js@1.4.12 --save

初始化VideoJS前手动注册:

import Hls from 'hls.js';
import videojs from 'video.js';

videojs.Hls = videojs.Hls || {};
videojs.Hls.js = Hls;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:45:03