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

时间:2012-12-26 07:03:14

标签: javascript html5 video streaming media-source

我指的是此link

上提供的媒体源api演示

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

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

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

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

2 个答案:

答案 0 :(得分:15)

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

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

  1. 在另一个标签页中打开chrome:media-internals。
  2. 返回测试页面的标签页并重新加载。
  3. 当再次出现错误时,切换回chrome:media-internals选项卡,并在“Active media players:”标题下查找底部条目。它应该具有相同的blob:您传递给视频元素src属性的URL。
  4. 点击blob:URL以展开播放器数据。
  5. 单击“日志:”条目以显示播放器日志记录数据。
  6. 在“事件:”列中搜索具有“MEDIA_SOURCE_ERROR”的条目。这些条目应提供有关传递给浏览器的内容有什么问题的信息。
  7. 如果您看到类似“媒体片段未以关键帧开头”的消息。那么这意味着您的文件具有不以关键帧开头的群集。这与FFmpeg生成的内容很常见。您可以通过以下方式之一修复文件:

    1. 运行WebM adaptive streaming guide
    2. 第2.2.5节中提到的sample_muxer程序
    3. 运行我在mse-tools项目中编写的mse_webm_remuxer程序。

答案 1 :(得分:0)

更新:我的案例中没有显示内部错误(接受的答案建议检查)但问题仍然存在

我尝试使用 MediaRecorder API 播放录制的.webm文件时遇到了同样的麻烦媒体资源扩展程序(MSE)。 Chrome(51)录音格式不正确,Firefox(46)似乎没问题。

要使其正常工作,您必须修复.webm文件中的提示:

  1. clone https://github.com/webmproject/libwebm
  2. 确保您拥有cmake版本> = 3.2(https://askubuntu.com/questions/610291/how-to-install-cmake-3-2-on-ubuntu-14-04
  3. cmake .
  4. make
  5. ./sample_muxer -i original.webm -o fixed.webm
  6. 将fixed.webm加载到DASH /您自己的播放器中!
  7. 希望它有所帮助。没有DASH关键字谷歌任何信息是很困难的(我不使用DASH,只有相同的基础技术 - MSE):)