在 MediaSource HTML5 中播放 MediaRecorder 块 - 视频冻结

2023-11-27

我有这个简单的代码来获取视频流块并在 MediaSource 中播放它们。我看视频,但有时会停止。它可能会工作几秒钟或几分钟。但最终它在某个时刻停止了。 chrome://media-internals/ 显示没有错误。

这里有什么问题吗?

    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
var mediaSource = new MediaSource();
var constraints = {
    "audio": true,
    "video": {
        "mandatory": {
            "minWidth": 320, "maxWidth": 320,
            "minHeight": 240, "maxHeight": 240
        }, "optional": []
    }
};
window.mediaSource = mediaSource;
var sourceBuffer;
var video = document.querySelector('#video');
window.video = video;
video.src = window.URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', function (e) {
    console.log("sourceopen");
    sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
    window.sourceBuffer = sourceBuffer;
}, false);
mediaSource.addEventListener('error', function (e) {
    console.log("error", e)
}, false);
var stack = [];

video.play();
navigator.getUserMedia(constraints, function (stream) {
    console.log("stream", stream);
    mediaRecorder = new MediaRecorder(stream);
    mediaRecorder.ondataavailable = function (e) {
        var reader = new FileReader();
        reader.addEventListener("loadend", function () {
            var arr = new Uint8Array(reader.result);
            sourceBuffer.appendBuffer(arr);
        });
        reader.readAsArrayBuffer(e.data);
    };
    mediaRecorder.start(100);
}, function (e) {
    console.log(e)
});

这是 JSFIDDLE,它将尝试做到这一点:https://jsfiddle.net/stivyakovenko/fkt89cLu/6/我使用 Chrome 作为我的主要目标。


看起来这是 Chrome 中的一个错误...

https://bugs.chromium.org/p/chromium/issues/detail?id=606000

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MediaSource HTML5 中播放 MediaRecorder 块 - 视频冻结 的相关文章

随机推荐

  • iOS - UIImageView - 如何处理 UIImage 图像方向

    是否可以设置UIImageView处理图像方向 当我设置UIImageView具有方向的图像RIGHT 这是来自相机胶卷的照片 图像向右旋转 但我想以正确的方向显示它 因为它是拍摄的 我知道我可以旋转图像数据 但可以做得更优雅吗 如果我理解
  • 如何在VIM中指定Python解释器版本?

    为了使用插件 Clang complete 在 Vim 中编写 C 安装后出现此错误 Error detected while processing function
  • NLog:记录序列化为 JSON 的对象

    我有一个带有 NLog 配置的 Net 项目 它允许我生成 JSON 格式的日志文件 它可以很好地处理简单的短信 现在 我需要记录一些已序列化为 JSON 的任意对象 当我将这些 JSON 字符串记录为日志消息时 NLog 将文本放在引号中
  • 如何在不丢失现有数据的情况下重新启动 Fabric Composer?

    我在本地尝试过 carauction network 示例 但是 当我使用 startFabric sh 文件启动网络时 它会删除 Couch DB 并再次创建 Couch DB 因为旧数据正在丢失 请建议我们如何在不清理数据的情况下启动结
  • 如何在 DataSnap 中的 JSON 编组中跳过字段序列化?

    是否有一种通用方法可以在 Delphi XE2 DataSnap 中的 JSON 编组中跳过字段序列化 TBizObjects class DataObject TDataObject skip this field on serializ
  • 在事件中使用 jQuery 获取被点击的元素?

    我使用以下代码来检测何时单击动态生成的按钮 document on click appDetails function alert test 通常情况下 如果你刚刚这样做了 appDetails click 你可以用 this 获取被单击的
  • 我在构建 gradle 时遇到此错误错误:任务“:app:processDebugResources”执行失败。 > 没有从属进程来处理作业,中止

    我在构建等级时遇到此错误 错误 任务 app processDebugResources 执行失败 gt 否 从属进程处理作业 中止 构建 gradle apply plugin com android application androi
  • Excel VLOOKUP 给出错误值

    我有一个 VLookup 单元格 它给了我错误的值 这是表 PID Product Price User User name Deal On Amount After in 1001 table 1001 1 Milly No 1000 i
  • 重新分配后使用原始指针?

    我正在阅读 Richard Reese 的 O Reilly 新书 2013 年 5 月 理解和使用 C 指针 我对其中第 87 页的一些代码有疑问 if length gt maximumLength char newBuffer rea
  • 保留在第二个平面数组中找到列值的数组行

    我已编辑此内容以展示如何使用 array search 让代码正常工作 我有一个数组 arr1有 5 列 key id name style age whim 0 14 bob big 33 no 1 72 jill big 22 yes
  • 从 Base64 字符串中提取图像尺寸

    是否有一种相对简单的方法 也许是正则表达式 从 base64 字符串 也许还有文件大小 检测图像的尺寸 高度和宽度 也就是说没有实际创建图像资源 解码base64 并使用getimagesizefromstring http www php
  • 我可以在 MAUI 项目中使用现有的 WinUI3 控件吗?

    是否可以在MAUI项目中使用WinUI 3现有的控件 就像控件一样https github com microsoft WinUI Gallery 我将 WinUI 包安装到我的 MAUI 项目中
  • 在 TypeScript 中,什么时候使用“let”,什么时候使用“const”?

    在 TypeScript 中 什么时候使用 let 什么时候使用 const const代表constant 这意味着该变量以后不能重新分配 let类似于var除了它是块作用域外 这意味着它可以在 a 内部声明for循环并且将位于该循环体的
  • 如何在 Three.js 中使用多个纹理并将其与自定义值混合?

    在 Three js 中 是否可以创建一种包含多个纹理的材质 着色器 每个纹理都有自己的细节 将它们混合在一起并分配给几何体 我想使用箔压花或局部紫外线上光等多种精加工技术来模拟纸张表面 我想要实现的是一种具有以下特性的材料 Base la
  • 将字符插入 SQL 字符串

    我有一个 nvarchar 列 我需要在字符串内的固定点插入连字符 连字符需要位于最右边的字符和下一个字符之间 并再次位于右侧第三个位置 例如 列值为 0000050704 我需要它是 0000050 70 4 或值为 0555256321
  • AndroidTextureView/绘图/绘画性能

    我正在尝试使用以下命令制作绘图 绘画应用程序TextureView在安卓上 我想要支持高达 4096x4096 像素的绘图表面 这对于我的最小目标设备 我用于测试的 来说似乎是合理的 即 Google Nexus 7 2013 它具有不错的
  • 匿名类的多重继承

    匿名类如何实现两个 或更多 接口 或者说 怎样才能both扩展一个类and实现一个接口 例如 我想创建一个扩展两个接口的匿名类的对象 Java 10 var is used since I don t know how to specify
  • 如何更改java DNS服务提供商

    我正在构建一个快速的网络爬虫 并且需要多线程 DNS 解析 因此我选择了一个名为的多线程 DNS 服务提供商dnsjava 不幸的是 我不知道如何替换默认的 DNS 服务提供商 我回顾了README文件 dnsjava 但说明不是很详细 替
  • 如何在 TFS 中撤消前员工的签出

    在我们的TFS源控制服务器上 很多源文件被人们签出 不再使用 是否有一种集中方式可以撤消对 TFS 中所有文件的签出 我什至不确定它们是否存在于 Active Directory 中 最好的办法是使用命令行工具 tf exe 或Attric
  • 在 MediaSource HTML5 中播放 MediaRecorder 块 - 视频冻结

    我有这个简单的代码来获取视频流块并在 MediaSource 中播放它们 我看视频 但有时会停止 它可能会工作几秒钟或几分钟 但最终它在某个时刻停止了 chrome media internals 显示没有错误 这里有什么问题吗 navig