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

Microsoft Edge中VideoJS无法正常播放PlayReady DASH流求助

问题:VideoJS播放PlayReady DRM的MPEG-DASH流时画面冻结、音频正常

我通过以下流程处理视频:

  • 用ffmpeg将视频编码为x264格式
  • 用Shaka Packager打包成带Widevine + PlayReady DRM的MPEG-DASH流

遇到的异常:

  • Widevine流在Chrome和Edge上播放完全正常
  • PlayReady流在Edge播放时,仅前几秒正常,随后画面冻结但音频持续播放,控制台报错:

VIDEOJS: ERROR: DOMException: Failed to execute 'changeType' on 'SourceBuffer': Changing to the type provided ('video/mp4;codecs="avc1.4d401f"') is not supported.

已验证的信息:

  • PlayReady许可证服务器返回200 OK,无报错
  • 该PlayReady流在Roku、Chromecast等设备上播放正常
  • 在DRM测试播放器中可正常播放,排除流本身问题,确定问题出在VideoJS层面

可能的解决思路

1. 升级VideoJS及相关插件

确认videojs-contrib-dash和videojs-contrib-eme插件为最新稳定版,旧版本可能存在Edge平台PlayReady的SourceBuffer兼容bug,升级后重新测试。

2. 手动指定SourceBuffer类型

初始化播放器时,强制指定视频轨道的MIME类型,避免播放器自动切换类型失败:

player.src({
  src: '你的DASH清单地址.mpd',
  type: 'application/dash+xml',
  keySystems: {
    'com.microsoft.playready': {
      licenseUrl: '你的PlayReady许可证地址',
      videoType: 'video/mp4;codecs="avc1.4d401f"'
    }
  }
});

3. 调整Shaka Packager打包参数

  • 检查打包时PlayReady流的轨道参数,确保视频codec标识和Edge支持的格式完全匹配
  • 尝试添加--generate_static_mpd参数生成静态MPD文件,避免动态轨道切换触发的类型不兼容

4. 禁用自动轨道切换

如果播放器自动切换分辨率/轨道时触发SourceBuffer类型变更,可固定轨道或禁用自动切换:

player.tech_.on('loadedmetadata', function() {
  // 固定第一个视频轨道
  const videoTracks = player.videoTracks();
  if (videoTracks.length > 0) {
    videoTracks[0].selected = true;
  }
});

5. 重置Edge的DRM配置

  • 确认Edge已启用PlayReady DRM支持(在edge://settings/privacy中检查媒体DRM设置)
  • 清除Edge的DRM缓存(edge://settings/clearBrowserData,勾选"媒体许可证"后清除)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:47:18