HTML5 音频缓冲区卡住

2024-04-15

我使用 HTML5 webkitAudioContext 使用以下代码获取用户麦克风的实时级别:

var liveSource;

function getLevel(){
    var context = new webkitAudioContext();  

    navigator.webkitGetUserMedia({audio: true}, function(stream) {

       liveSource = context.createMediaStreamSource(stream);
       liveSource.connect(context.destination);

       var levelChecker = context.createJavaScriptNode(4096, 1 ,1);
       liveSource.connect(levelChecker);

       levelChecker.connect(context.destination);

       levelChecker.onaudioprocess = function(e) {

            var buffer = e.inputBuffer.getChannelData(0);


        var maxVal = 0;
        // Iterate through buffer to check if any of the |values| exceeds 1.
        for (var i = 0; i < buffer.length; i++) {
            if (maxVal < buffer[i]) {
                maxVal = buffer[i];
            }
        }
        if(maxVal <= 0.01){
            console.log(0.0);
        } else if(maxVal > 1){
            console.log(1);
        } else if(maxVal > 0.2){
            console.log(0.2);
        } else if(maxVal > 0.1){
            console.log(0.1);
        } else if(maxVal > 0.05){
            console.log(0.05);
        } else if(maxVal > 0.025){
            console.log(0.025);
        } else if(maxVal > 0.01){
            console.log(0.01);
        }
};
});

 }

getLevel();

如果您将其复制并粘贴到控制台中,然后在麦克风附近单击手指(假设您已启用麦克风输入),您会看到它工作了几秒钟,然后突然停止。它不会报告任何错误。谁能解释为什么会发生这种情况?谢谢

See http://labs.dinahmoe.com/dynamicmusicengine/ http://labs.dinahmoe.com/dynamicmusicengine/例如,级别正常工作。


我有同样的问题,但终于得到了解决方案!问题是 javascript 节点 cicle。 我建议您首先更改 createJavaScriptNode() :

var levelChecker = context.createScriptProcessor(4096, 1 ,1);

垃圾收集器对“levelChecker”变量及其 onaudioprocess 存在问题,因此您必须将 scriptprocessor 或 onaudioProcess 回调绑定到窗口。这是神圣的解决方案:

 levelChecker.onaudioprocess = window.audioProcess = function(e) { ...

只需在该行中添加 window.audioProcess ,您将永远不会再处理 tat 问题。

您可以在这里找到更多信息:http://lists.w3.org/Archives/Public/public-audio/2013JanMar/0304.html http://lists.w3.org/Archives/Public/public-audio/2013JanMar/0304.html

希望这对你有用!

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

HTML5 音频缓冲区卡住 的相关文章

  • html5显示音频当前时间

    我想显示 html 5 音频元素的当前时间以及该元素的持续时间 我一直在互联网上查找 但找不到一个功能脚本 可以让我显示音频文件的长度以及当前的时间 例如1 35 3 20 有人有什么想法吗 这是一个例子
  • 网络音频 api 以不同的速率播放嘟嘟声、嘟嘟声、...嘟嘟声

    我试图根据浏览器窗口内的一些传感器读数以不同的速率播放 嘟嘟 声 这个想法是当传感器读数高时更快地 嘟嘟 嘟嘟 嘟 嘟 当传感器读数低时更慢地 嘟 嘟 所有这些都是实时的 传感器读数通过 socket io 输入浏览器 我已经可以控制进度条
  • Js 音频音量滑块

    我对此很陌生 我有一个问题 如何放置音量滑块 谢谢你 我暂时找不到任何适合我的代码 希望您的帮助 HTML a class fa fa play JavaScript a
  • 加载 VTT 文件时出现跨域错误

    我刚开始在 HTML 5 中使用音频标签 并且想要构建一个播放器 我想在轨道标签中使用 VTT 文件进行测试 看看隐藏式字幕如何工作 这是我的代码
  • 控件的轨迹栏不移动的

    我有一个
  • 是否可以在用户不与网络交互的情况下播放音频?我该怎么做呢? [复制]

    这个问题在这里已经有答案了 我需要我的网页在用户不与页面交互的情况下播放音频剪辑 我知道用户体验很差 不应该这样做 但这就是我的客户所要求的 我也知道浏览器已经阻止了这个功能 所以如果有人能给我建议如何 破解 这个规则 例如事件 我将不胜感
  • 如何通过函数获取audio.duration值

    我是我的音频播放器 我需要获取音轨的持续时间 我需要一个函数来获取音频的 src 并返回其持续时间 这是我正在尝试做但不起作用的事情 function getDuration src var audio new Audio audio sr
  • JPlayer Circle Player 第一次使用 vox 制作的 wav 文件时不显示圆圈

    我有一个应用程序 它使用 JPlayer Circle Player 播放短音频以进行转录 这些音频均源自 vox 文件 已由 SoX 转换为 wav 按下 播放 按钮时 将播放音频 但不显示绿色圆圈 剪辑播放后 再次按播放确实会显示绿色圆
  • Web Audio API:停止播放所有预定的声音

    所以我有一堆加载的音频样本 我在下面的代码中调用调度函数 let audio function playChannel let audioStart context currentTime let next 0 for let i 0 i
  • 如何设置音频时长

    我正在尝试使用音频的 HTML DOM 持续时间属性设置音频标签的持续时间 我已尝试以下方法 但似乎不起作用 audio 0 duration 1 我已经浏览了其他答案 但我看不到任何使用持续时间属性的答案 如果持续时间属性是只读的 它还给
  • Facebook iOS 应用内浏览器中的音频标签

    我有一个带有音频标签的网页 它在移动 Safari 中运行良好 但是 当我从 iOS 上的 Facebook 应用程序打开链接时 它会在应用程序内浏览器中打开 此处 音频拒绝播放 如果显示控件但没有音频 它将表明它正在播放 视频似乎工作正常
  • 如何创建一个播放 mp3 google tts 的按钮

    我是新来的 但我希望你能帮助我 我正在尝试创建一个按钮来播放谷歌生成的文本到语音 mp3 我正在创建一个翻译器 所以 我想要做的是像谷歌翻译这样的事情 以某种方式 我尝试过使用 javascript 和 actionscript 但无法使其
  • 如何将特定文件夹中的所有(mp3)文件导入到react.js 中的数组中?

    我正在使用 React js 和 HTML5 Web 音频 API 构建一个 mp3 播放器 我是 React 新手 大约 2 周 但有 3 年 JavaScript 经验 看来 为了让 mp3 文件播放 加载到音频标签中 在使用 cmd
  • HTML 音频元素第一次无法播放?

    我正在使用 htmlaudio我的一个项目中的一个元素 一旦按下播放按钮 我就会使用 VueJS 动态加载该元素的 src 一切似乎都工作正常 但是当我第一次按下按钮时 音频无法播放 我必须再次单击播放按钮才能开始播放 我怎样才能解决这个问
  • 按钮点击声音

    这就是我想做的 我有大约 30 个按钮 我希望当点击每个按钮时 它会播放不同的mp3文件 像这样http www soundjig com pages soundfx beeps html http www soundjig com pag
  • Web Audio API 从暂停状态恢复

    我经常读到无法使用以下命令暂停 恢复音频文件网络音频API https dvcs w3 org hg audio raw file tip webaudio specification html 但现在我看到了一个example http
  • JavaScript 中音频的波形可视化[重复]

    这个问题在这里已经有答案了 我正在尝试使用 JavaScript 显示音频文件的波形 但我什至不知道如何开始 我找到了音频数据API https wiki mozilla org Audio Data API Working Audio D
  • 从视频获取MediaStreamTrack(音频)

    我想在从画布录制的同时从视频元素录制音频 我有 var stream canvas captureStream 29 现在我将视频的audioTrack 添加到流中 var vStream video captureStream strea
  • 为什么当我尝试获取缓冲时间时,audio.buffered.end(0) 会收到错误消息

    我正在使用 HTML5 和 jQuery 构建 mp3 播放列表播放器 在这个播放器上有一个水平条随着mp3文件的缓冲呈现而逐渐增长 这是我的完整代码 获取缓冲结束 http jsfiddle net zuhairtaha d9oj3dan
  • HTML5 音频标签 - 开始和结束位置

    我有多个

随机推荐

  • Apache 重写规则将所有请求重定向到包含另一个 .htaccess 的子目录和重写规则

    我的网络服务器上有公共和私人项目 我将所有公开内容放入网络服务器根目录中 并且我有一个private我只能从本地网络访问该文件夹 由其中的 htaccess 设置 我想简单地将每个私人项目放在private文件夹并自动处理请求 但希望 UR
  • 检查字符串列表是否可以链接

    Question 实现一个功能bool chainable vector
  • 如何在Android移动网站中强制使用数字键盘

    我有一个移动网站 它有一些 HTMLinput其中的元素 如下所示
  • CMake:如何标准化路径? [复制]

    这个问题在这里已经有答案了 是否有一种可靠的方法来标准化 CMake 中的路径 例子 Let s assume that an environment variable MY ROOT DIR is set that points to s
  • Windows Phone 8 上“无法安装公司应用程序”

    我为 Windows Phone 8 开发了一个公司应用程序 并完成了所有建议的步骤来设置它进行安装 我拥有 Symantec 代码签名证书 并且已生成应用程序注册令牌和签名的 XAP 并将其托管在 OneDrive 上的公共文件夹中 我使
  • 如何将 UWP StorageFile 转换为 .NET FileInfo?

    现在 UWP 支持 NET Standard 2 0 它可以访问更多 System IO 命名空间 包括Fileinfo https msdn microsoft com en us library system io fileinfo v
  • 在 ember 数据中,在 forEach 循环中调用 destroyRecord 会破坏循环吗?

    我正在为我的一个项目开发一个简单的标签模型 我已经在 Angular 中实现了类似的东西 但我想在 Ember 中尝试一下 型号代码如下 Tag DS Model extend name DS attr string user DS bel
  • Amazon s3 putObject 标记不起作用

    我正在尝试使用 putObject 方法上传到 Amazon s3 时添加标签 根据文档 我已将标签创建为字符串类型 我的文件已上传到 Amazon s3 但我无法使用提供的标签数据查看文件对象的对象级别标签 根据文档遵循以下代码示例 va
  • 使 td 固定大小(宽度,高度),而其余 td 可以扩展

    您知道如何固定表格中 td 宽度和高度的大小 从而允许表格上的其余 td 根据需要扩展吗 问题是 当 td 内部有数据时 它不会比数据缩小得更多 但如果为空 它会一直缩小 如果扩大窗口 td 也会扩大 我想保留 td 的大小 无论您扩展还是
  • Ruby 中的“+=”(加等于)是什么意思? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 本地化 Spring Boot 验证消息中的消息参数未解析

    我正在使用构建一个项目春季启动2 1 8 我有spring boot 启动器 web在我的 POM 中 我可以看到 Maven 拉动休眠验证器 6 0 17到类路径上 我的消息位于资源文件夹中 并且它们似乎已正确查找 因此当我更改区域设置时
  • 如何在android中制作文字动画?

    在我的 Android 应用程序中 我试图显示一个 正在加载 文本 该文本每 100 毫秒就会更改一次 每 100 毫秒后就会增加一个点 所以首先它会像 正在加载 再过 100 毫秒 它将变为 正在加载 当变为 正在加载 时 该过程将终止并
  • 菜单栏隐藏时 JMenuItem 加速器不起作用

    这个问题是后续问题这个问题 https stackoverflow com questions 18093773 jmenubar selectionmodel changelistener only fires once 我有一个JMen
  • 如何在 Windows 的 Java 中启用小型转储

    我不断收到并看到此消息 无法写入核心转储 Windows 客户端版本默认不启用小型转储 所以我需要知道 如何在 Java 中启用小型转储 在 Windows 计算机上 可选 一旦获得小型转储 如何解释它 我试图找到这两个问题的答案 但我发现
  • ASP.NET vNext 全局配置访问

    正确 推荐的访问方式是什么config jsonASP NET vNext 中的文件 或存储配置的其他位置 In the Startup类 我像这样设置配置 public class Startup public IConfiguratio
  • 重置本地git仓库

    几天前 我在 Github 上创建了一个存储库 然后按照步骤将我现有的解决方案添加到其中 我不知道我做错了什么 但是经过一些随机的 git add 命令等等之后 我现在在 Windows 的 github 中收到消息 failed to s
  • 字典和对

    在 R 中 我想知道我是否可以有一本字典 在某种意义上像 python 其中我有一对 i j 作为具有相应整数值的键 我还没有看到一种干净或直观的方法来构建它R 我的字典的视觉效果是 1 2 gt 1 1 3 gt 3 1 4 gt 4 1
  • 使用 Django、webpack、reactjs、react-router 解耦前端和后端

    我正在尝试在项目中解耦我的前端和后端 我的前端由以下组成reactjs和路由将完成react router 我的后端如果做成形式Django我计划使用前端对 Django 进行 API ajax 调用 现在我不确定如何让这两端正确地相互通信
  • 屏幕旋转后,findFragmentById() 返回一个片段,即使布局内没有这样的 ID

    我有两种方向的一种布局 1 个横向和 1 个纵向 layout land main xml有两个片段
  • HTML5 音频缓冲区卡住

    我使用 HTML5 webkitAudioContext 使用以下代码获取用户麦克风的实时级别 var liveSource function getLevel var context new webkitAudioContext navi