这是 Firefox 中的错误还是 chrome 主动修复了我做错的事情?

2024-04-29

当麦克风的信号超过设定的阈值时,下面的代码只是将一个框变成红色。它在 Linux 上的 chromium 和 Windows 上的 chrome 上快乐地运行一整天。它在两个平台上的 Firefox 上也运行良好 - 大约 15 秒。当它在 Firefox 上停止工作时,它不会给出任何错误,.getChannelData 只是开始返回全零。我是否发现了 FF 中的错误,或者 chrome 只是在清理我的 shonky javascipt 方面做得更好?

<!DOCTYPE html>
<html lang="en-us">
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width">
  <style>
    #wrapper { width:100px; height: 100px; background-color: #00F; }
  </style>
</head>
<body>
  <div id="wrapper">
  </div>
  <div id="outs">
    Audio blocks processed: <span id="audProcEnv">none</span><br>
  </div>
  <script>
    const MINFRAMETIME = 100;
    const SCRIPTPROCESSORBUFFER = 1024;
    const TRIGGERTHRESHOLD = 0.1;

    navigator.getUserMedia = (navigator.getUserMedia ||
                              navigator.webkitGetUserMedia ||
                              navigator.mozGetUserMedia ||
                              navigator.msGetUserMedia);

    var audioContext = new (window.AudioContext || window.webkitAudioContext)();
    var gainNode = audioContext.createGain();
    gainNode.gain.value = 0; // Mute the output / Don't output sound - feedback!
    var scriptNode = audioContext.createScriptProcessor(SCRIPTPROCESSORBUFFER, 2, 2);

    var vu = document.querySelector('#wrapper');
    var audioProcessingEventDiv = document.querySelector('#audProcEnv');
    var audioProcessingEventCounter = 0;
    var lastRedraw = 0;
    var signal = false;
    var drawStuff;

    navigator.getUserMedia (
      { audio: true },
      function(stream) {
        var source = audioContext.createMediaStreamSource(stream);
        source.connect(scriptNode);
        scriptNode.connect(gainNode);
        gainNode.connect(audioContext.destination);
        draw();
      },
      function(err) {
        console.log('Error:' + err);
      }
    );

    scriptNode.onaudioprocess = function(audioProcessingEvent) {
      dispPeak = 0;
      signal = false;
      audioProcessingEventCounter++;
      var left = audioProcessingEvent.inputBuffer.getChannelData (0);
      var leftout = audioProcessingEvent.outputBuffer.getChannelData (0);
      for (var sample = 0; sample < SCRIPTPROCESSORBUFFER; sample++) {
        leftout[sample] = left[sample];
        if (left[sample] > dispPeak) { dispPeak = left[sample]; }
        if (left[sample] < -dispPeak) { dispPeak = -left[sample]; }
        if (dispPeak > TRIGGERTHRESHOLD) { signal = true; }
      }
    };

    function draw() {
      drawStuff = requestAnimationFrame(draw);
      if (Date.now() > (lastRedraw + MINFRAMETIME)) {
        if (signal) {
          vu.style.backgroundColor = "#F00";
        } else {
          vu.style.backgroundColor = "#00F";
      }
      audioProcessingEventDiv.innerHTML = audioProcessingEventCounter;
      lastRedraw = Date.now();
      }
    }
    draw();

  </script>
</body>
</html>

None

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

这是 Firefox 中的错误还是 chrome 主动修复了我做错的事情? 的相关文章

随机推荐

  • 包java.time不存在,jdk1.8

    嗯 我刚刚开始从事代号工作 我对 Java 有相当不错的经验 我的代码一切都很好 没有任何问题 但在编译时我得到了这个 error package java time does not exit import java time Local
  • 如何在同一个项目中连接两个数据库MySQL和MongoDB?是否可以?

    目前我正在使用 Hibernate MySQL 和 Spring 配置对我来说运行良好 但是一旦我配置了另一个配置 mongo config xml 文件并尝试使用 mongodb 运行测试用例 它就显示创建名为 的 bean 时出错从第一
  • EPERM:不允许操作,mkdir 'C:\Program Files\nodejs\node_modules\.staging

    我正在尝试在我的项目上运行 npm install 但它显示 EPERM 不允许操作 mkdir C Program Files nodejs node modules staging 我没有 root 管理访问权限 我在我的系统中以本地用
  • ? LIKE(列 || '%')

    我可以有这样的条件吗 SELECT FROM table WHERE LIKE column 哪里的 是一个字符串参数值 例如 这些参数值 当列等于时应返回 true admin products admin products 1 admi
  • Boto3 - 打印 AWS 实例平均 CPU 利用率

    我正在尝试仅打印 AWS 实例的平均 CPU 利用率 此代码将打印出 响应 但最后的 for 循环不会打印平均利用率 有人可以帮忙吗 先感谢您 import boto3 import sys from datetime import dat
  • 如何设置报表服务器实例?

    我正在尝试设置 Microsoft SQL Server Reporting Services 我打开 Reporting Services 配置管理器 它要求输入服务器名称 问题是 我不知道服务器名称 因为据我所知还没有设置报表服务器 那
  • 以编程方式创建进度绘制

    我有一个场景 我需要有大量的进度条可绘制对象 我无法为所有这些创建 xml 资源 因为我希望用户选择一种颜色 然后用于动态创建可绘制对象 下面是 xml 中的一个这样的可绘制对象 我如何以编程方式创建这个精确的可绘制对象
  • Mongoose 更新或插入许多文档

    我正在尝试使用最新版本的 mongoose 插入对象数组 或者更新相应的产品 ID 是否已存在 我一生都无法找出正确的使用方法 bulkWrite updateMany 等 而且我似乎无法在不出现错误的情况下找出语法 例如 我正在尝试 Pr
  • 在等式约束的情况下求解线性规划

    我问了一个问题 可以在这里找到 计算最优组合 https stackoverflow com questions 17232596 computing the optimal combination 并有人建议线性规划 我查阅了线性规划和单
  • 从以元组为键的字典中获取 pandas 数据框

    我是Python新手 并且已经在这个问题上挣扎了一段时间 我有一个这样的字典 dict1 a a 5 a b 10 a c 11 b a 4 b b 8 b c 3 我想做的是将其转换为 pandas 数据框 如下所示 a b c a 5
  • 无法在 Eclipselink 上合并日期

    我的会话 bean 不会对托管实体执行更新 我已经包含了相关类的代码 当我使用 prime faces 计划组件修改事件的日期字段并将修改后的实体传递给会话 bean 并调用 em merge event 时 实体管理器不会尝试更新实体 并
  • 使用文本框搜索 datagridview 中的列 (vb.net)

    如何使用文本框搜索 datagridview 中的列 我正在使用 vb net 2010 我有一个带有数据源的 Datagridview 下面是我用于填充 datagridview 的代码 网格视图将有 4 列 Private Sub Lo
  • 将 ddply + mutate 与自定义函数一起使用?

    I use ddply相当频繁 但历史上有summarize 偶尔mutate 并且只有基本功能 例如mean var1 var2等等 我有一个数据集 我试图在其中应用一个自定义的 更复杂的函数 并开始尝试深入研究如何做到这一点ddply
  • 对自定义类进行排序而不使用“key”参数?

    您可以对数组进行排序myclass通过使用key论证sorted功能 sortedlist sorted myclasses key lambda obj obj myproperty 有没有办法为我们的班级定义自然顺序 也许有一些神奇的方
  • 我应该在我的网站的什么位置添加他人作品的版权声明? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的网站包含 1 FancyBox 用于图像叠加 2 GalleryView 滑块 并且都使用 JQuery 它们都可以免费使用 但它们坚
  • 创建 Android 智能应用横幅

    Android 设备有类似 iOS 6 智能应用横幅的解决方案吗 这是智能应用横幅的代码 从 Chrome 44 Beta 开始 您可以在 Android 版 Chrome 中推送您的应用程序 您网站上的本机应用程序安装横幅 请看下面的答案
  • 像程序一样执行快捷方式

    示例 你有一条捷径s to SomeProgram在当前目录中 In cmd exe 您可以输入s它将启动该程序 在 PowerShell 中 输入s gives The term s is not recognized as a cmdl
  • 为什么 DropDownList.SelectedIndexChanged 事件不触发?

    我有一个绑定到 ObjectDataSource 的 DropDown 在其数据绑定事件中 我在 0 索引上添加 select 值 我在页面上有一个 LinkBut ton 在其客户端单击时 我在下拉列表中选择不同的项目 使用 JavaSc
  • 附加的新行的行为与前一行(行)不同

    我有一个 HTML 表格 里面有几个td as input字段 我的表格是动态的 当页面加载时 我将附加表格的第一行并且focus在第一个输入字段中 就我而言 即Item Name 我的行中有 3 个输入字段 它们是Item Name Un
  • 这是 Firefox 中的错误还是 chrome 主动修复了我做错的事情?

    当麦克风的信号超过设定的阈值时 下面的代码只是将一个框变成红色 它在 Linux 上的 chromium 和 Windows 上的 chrome 上快乐地运行一整天 它在两个平台上的 Firefox 上也运行良好 大约 15 秒 当它在 F