媒体源Api不能用于自定义webm文件(Chrome版本23.0.1271.97 m)

Media Source Api not working for a custom webm file (Chrome Version 23.0.1271.97 m)

本文关键字:版本 1271 Chrome 不能 Api 用于 自定义 文件 webm 媒体      更新时间:2023-09-26

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

对于给定的测试webm文件,它工作得很好,但是当我试图将文件名称更改为自定义webm文件时,代码停止工作。

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

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

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

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

在Chrome开发通道构建(即Chrome 25或更高版本)中,您可以通过以下步骤验证这一点。

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

如果你看到类似"媒体段没有以关键帧开始"的消息,那么这意味着你的文件有集群没有以关键帧开始。这在由FFmpeg生成的内容中很常见。您可以使用以下方法之一修复文件:

  1. 运行WebM自适应流指南2.2.5节中提到的sample_muxer程序
  2. 运行我在mse-tools项目中编写的mse_webm_remuxer程序。

UPDATE:在我的情况下没有显示内部错误(接受的答案建议检查),但仍然存在相同的问题

我遇到了同样的麻烦,当试图播放记录的。webm文件由MediaRecorder API使用媒体源扩展 (MSE)。Chrome(51)的录音是畸形的,Firefox(46)似乎没有问题。

要让它工作,你必须在。webm文件中修复提示:

    克隆https://github.com/webmproject/libwebm
  1. 确保你有cmake版本>= 3.2 (https://askubuntu.com/questions/610291/how-to-install-cmake-3-2-on-ubuntu-14-04)
  2. cmake .
  3. make
  4. ./sample_muxer -i original.webm -o fixed.webm
  5. 加载固定。webm到DASH/你自己的播放器!

希望能帮到别人。这是相当困难的谷歌没有DASH关键字的任何信息(我不使用DASH,只有相同的底层技术- MSE):)