Media Source Api无法用于自定义webm文件(Chrome版本23.0.1271.97 m)

Pan*_*ana 3 javascript video streaming html5 media-source

我指的是这个链接上给出的媒体源api演示

它对于给定的测试webm文件工作正常,但是当我尝试将文件名更改为自定义webm文件时,代码停止工作.

它产生以下错误:Uncaught Error: INVALID_STATE_ERR: DOM Exception 11在以下代码中: sourceBuffer.append(new Uint8Array(e.target.result));

为了检查自定义webm文件是否正常工作,我创建了一个测试页面,其中我定义了一个包含该自定义webm文件源的视频标签.当我运行代码时,它工作正常.

我无法理解这种奇怪行为的原因.

Aar*_*ell 15

最可能的问题是您的WebM文件具有不以关键帧开头的群集.

在Chrome开发者频道版本(即Chrome 25或更高版本)中,您可以通过以下步骤进行验证.

  1. 打开chrome:另一个标签中的media-internals.
  2. 返回测试页面的选项卡并重新加载.
  3. 再次发生错误时,切换回chrome:media-internals选项卡,并在"Active media players:"标题下查找底部条目.它应该具有相同的blob:您传递给视频元素src属性的URL.
  4. 单击blob:URL以展开播放器数据.
  5. 单击"Log:"条目以显示播放器日志记录数据.
  6. 搜索"事件:"列中包含"MEDIA_SOURCE_ERROR"的条目.这些条目应提供有关传递给浏览器的内容有什么问题的信息.

如果您看到一条消息,上面写着"媒体片段未以关键帧开头".那么这意味着您的文件具有不以关键帧开头的群集.这与FFmpeg生成的内容很常见.您可以通过以下方式之一修复文件:

  1. 运行WebM自适应流媒体指南的 2.2.5节中提到的sample_muxer程序
  2. 运行我作为mse-tools项目的一部分编写的mse_webm_remuxer程序.