【问题标题】:Javascript Mediasource play video and audio simultaneously?Javascript Mediasource 同时播放视频和音频?
【发布时间】:2018-08-15 15:39:38
【问题描述】:

我想在 Javascript 中使用 Media Source 同时播放音频和视频。 我可以同时玩,但不能同时玩。

到目前为止,这是我的代码:

 let mse = function() {
    if ('MediaSource' in window && MediaSource.isTypeSupported(codecs)) {
        a = new MediaSource();
        a.addEventListener('sourceopen', ma);
        return a;
    } else {
        return false;
    }
}();

如果需要,我还有另外 600 行代码。

【问题讨论】:

  • 相关信息是您使用的编解码器、容器、遇到的错误以及静态媒体是否在该浏览器上的 MSE 之外工作。 (还有……什么浏览器?)
  • 我告诉过你我的代码很好,谢谢你我得到了答案
  • “无论如何我都能得到答案” - 你应该发布“正确”的答案。

标签: javascript media-source


【解决方案1】:

如果您需要同时播放视频和声音,则需要创建 2 个源缓冲区。正如你所说。你可以只玩其中之一。所以我猜你的代码很好。所以你需要创建 2 个缓冲区。像这样

 my_media_source.addEventListener("sourceopen",function (){
    var video_source_buffer = my_media_source.addSourceBuffer(video_mimeCodec);
    var audio_source_buffer = my_media_source.addSourceBuffer(audio_mimeCodec);

     //.......

     video_source_buffer.appendBuffer(...);
     audio_source_buffer.appendBuffer(...);
 }

现在您可以同时缓冲视频和音频,请注意 MediaSource 不会播放视频,因为它会同时获取两个数据。例如,如果您缓冲了视频的前 5 秒和音频的 3 秒,播放器将在 3 秒处停止

保持你的缓冲公平;)

【讨论】:

  • 我不能用一些编解码器同时处理视频和音频吗?
  • 当对 video/webm 和 audio/webm 使用此技术时,我收到第二个 .addSourceBuffer 的错误:“无法在 'MediaSource' 上执行 'addSourceBuffer':此 MediaSource 已达到它可以处理的 SourceBuffer 对象。不能添加额外的 SourceBuffer 对象。"
  • @TedPhillips 你能展示一些你的代码吗?
  • 抱歉,代码已不存在。由于缓冲区数量的限制,我最终将视频/音频混合并流式传输到单个 sourceBuffer 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多