我正在尝试使用MediaSource API将单独的WebM视频附加到单个源。

我发现一个Github project正在尝试相同的操作,其中加载了WebM的播放列表,并且每个列表都附加为SourceBuffer。但是它是在一年前提交的,因此与current spec不同步。因此,我forked it并更新为最新的API属性/方法,并进行了一些重组。现有的大部分代码都是直接从规范的examplesEric Bidelman’s test page中获取的。

但是,我无法使其按预期方式工作。我正在两种浏览器中进行测试,两种浏览器均在Mac OS X 10.9.2上进行测试:Chrome 35稳定版(在撰写本文时为最新版本),以及Firefox 30 beta(在about:config中将media.mediasource.enabled标志设置为true)(此功能不会直到FF 25为止,电流稳定为24)。

这是我遇到的问题。

两种浏览器

我希望视频最终是一个由11个WebM组成的长视频(00.webm,01.webm,...,10.webm)。目前,每个浏览器仅播放视频的1段。

Chrome 合金

行为不一致。似乎不可能可靠地重现这些错误中的任何一个。

  • 有时视频为空白,或者视频中间有一个黑色的高条,无法播放。
  • 有时,视频会在01.webm的第一帧上加载和暂停。
  • 有时,视频只会播放前三段,因此会播放02.webm的几帧并暂停。
  • “播放”按钮最初显示为灰色。
  • 按下显示为灰色的“播放”按钮,将产生非常不一致的行为。有时,它会加载黑色的无法播放的视频。其他时候,它将播放第一个片段,然后,当您到达末尾时,它将停止,并且再次按下播放/暂停时,它将加载下一个片段。即使这样,它有时仍会跳过片段并卡在04.webm上。无论如何,即使控制台报告将遍历所有缓冲区,它也永远不会播放最后一段。

  • 每次都是不一样的。我无法在这里全部列出。

    已知警告:Chrome当前不实现sourceBuffer.mode,尽管我不知道这可能会产生什么影响。

    火狐浏览器
  • 仅播放00.webm。总播放时间为0:08,即该视频的长度。
  • 视频搜索无效。 (这可能是预期的行为,因为onSeeking事件处理程序中实际上没有发生任何事情。)
  • 视频一旦完成就无法重新启动。

  • 我最初的理论是,这与mediaSource.sourceBuffers[0].timestampOffset = durationduration = mediaSource.duration有关。但是,除了mediaSource.duration,我似乎无法从NaN中得到任何返回,即使我要追加新的分割受众群也是如此。

    在这里完全迷路了。指导非常感谢。

    编辑:我未注释代码的持续时间部分,并在所有视频上从Aaron Colwell's Media Source Extension Tools(感谢Adam Hart提示)运行了mse_webm_remuxer。瞧,Chrome不再有无法预测的故障!但是,可惜的是,一旦媒体片段结束,它仍然会暂停,即使您按播放,它有时也会停留在一帧上。

    在Firefox Beta中,它没有播放到第一段,响应如下:



    记录duration的值将返回NaN(但仅在FF中)。

    最佳答案

    主要问题是视频文件。如果您打开chrome://media-internals/,则可以看到error Media segment did not begin with keyframe.使用格式正确的视频,例如the one from Eric Bidelman's example(我希望他不要生气,我一直直接链接到该视频,但这是我发现的唯一可以正常工作的示例视频),您的代码可以处理appendNextMediaSegment()中的以下更改:

    duration = mediaSource.duration;
    mediaSource.sourceBuffers[0].timestampOffset = duration;
    mediaSource.sourceBuffers[0].appendBuffer(mediaSegment);
    

    您可以尝试Aaron Colwell's Media Source Extension Tools尝试使您的视频正常运行,但是我获得的成功有限。

    在附加段之前查看onProgress事件似乎也有些怪异,但是我想如果您只想在视频正在播放的情况下附加它,那可能行得通。由于视频长度未知,这可能会使搜索栏 Action 奇怪,但这在任何情况下都是一个问题。

    关于javascript - 媒体源扩展不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24195601/

    10-10 07:45