- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解 AudioWorklet
正在工作并进行了一些测试。
到目前为止,当我让浏览器在后台播放声音并执行其他操作(例如,打开像 Photoshop 或 VSCode 这样的 CPU 密集型应用程序并移动窗口)时,我遇到了一个巨大的“破解”问题。
一开始我以为是硬件问题。我升级到 Catalina,删除了我找到的任何系统音频扩展,但在 Android 和其他一些 friend 的计算机(Mac、PC)上都是一样的。
我自己使用的是版本 1.0.1 Chromium: 78.0.3904.108 (Official Build) (64-bit)。
这个YouTube video演示破解音频问题。
我做了两个 CodePen 演示,你可以在这里测试:
Web Audio Cracks (Vanila + no Worklet) :
const ctx = new(window.AudioContext || window.webkitAudioContext)();
const request = new XMLHttpRequest();
const gainNode = ctx.createGain();
const sourceNode = ctx.createBufferSource();
request.open('GET', 'https://poppublic.s3.amazonaws.com/other/2.mp3', true);
request.responseType = 'arraybuffer';
request.onload = () => {
ctx.decodeAudioData(request.response, buffer => {
sourceNode.buffer = buffer;
console.log(sourceNode.buffer.sampleRate);
});
};
request.onerror = function(e) {
console.log('HTTP error', e);
};
request.send();
play = () => {
sourceNode.connect(gainNode);
gainNode.connect(ctx.destination);
sourceNode.start(0);
}
stop = () => {
sourceNode.stop(0);
}
<button onClick="play()">Play</button>
<button onClick="stop()">Stop</button>
const ctx = new(window.AudioContext || window.webkitAudioContext)();
const request = new XMLHttpRequest();
let gainNode = null;
let sourceNode = null;
let buffer = null;
let worklet = null;
try {
const script = 'https://poppublic.s3.amazonaws.com/other/worklet/processor.js';
ctx.audioWorklet.addModule(script).then(() => {
worklet = new AudioWorkletNode(ctx, 'popscord-processor')
request.open('GET', 'https://poppublic.s3.amazonaws.com/other/2.mp3', true);
request.responseType = 'arraybuffer';
request.onload = () => {
ctx.decodeAudioData(request.response, buff => {
buffer = buff;
console.log(buff.sampleRate);
});
};
request.onerror = function(e) {
console.log('HTTP error', e);
};
request.send();
});
} catch (e) {
this.setState({
moduleLoaded: false
});
console.log('Failed to load module', e);
}
play = () => {
stop();
gainNode = ctx.createGain();
sourceNode = ctx.createBufferSource();
sourceNode.buffer = buffer;
sourceNode.connect(gainNode);
gainNode.connect(ctx.destination);
sourceNode.start(0);
}
stop = () => {
try {
sourceNode.disconnect();
gainNode.disconnect();
sourceNode.stop(0);
} catch (e) {
console.log(e.message)
}
}
<button onClick="play()">Play</button>
<button onClick="stop()">Stop</button>
最佳答案
使用worklet时,音频线程的默认优先级是normal。正如您通过运行 webaudio 然后移动窗口所看到的那样,这对音频不利。
您可以做的是转到 chrome://flags,搜索 worklet 并启用名为“为 Audio Worklet 使用实时优先级线程”的标志。这应该对 mac 和 windows 有所帮助。我不知道它是否会在Android上有所作为。
如果您在没有工作集的情况下听到 WebAudio 的裂缝,就像您在第一个 codepen 示例中所做的那样,那么这是出乎意料的,您真的应该 file an issue on that .
关于javascript - 使用 Audio Worklets 时如何修复 “cracking” 音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59189951/
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭11 年前。 Improve th
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 8年前关闭。 Improve this questi
我已经从 freerainbowtables.com 下载了 Rainbow Tables。它的扩展名为 .rti 。我想知道是否有办法将此文件作为文本文件或任何其他文件读取。我想编写一个简单的程序来
java中有一个破解密码本求平方根的算法如下: int sqrt(int n) { return sqrt_helper(n, 1, n); } int sqrt_helper(int n, in
因为我有一个技术面试,最近开始研究《Cracking the Coding Interview》这本书。 我在练习5.1的题时,发现书上的解法和我的不一样。 问题是: 给定两个 32 位数字 N 和
我是一名 CS 学生,大约一周前我买了破解编码面试。我只是在 Big O 章节,我发现了一种算法,据说可以对数字中的数字求和;乍一看,它看起来很困惑,所以我用 Python 运行了它,但它没有按预期运
我附上了一个精简版的程序。我遇到的问题是,当我打印N时,在末尾有一个额外的 *,我没有设法从代码中删除。我已经试了好几个小时了,但似乎就是破解不了。。我已经将+‘S改为-’S,反之亦然。我尝试了增减值
我附上了一个精简版的程序。我遇到的问题是,当我打印N时,末尾有一个多余的*,我没有设法从代码中删除它。我已经试了好几个小时了,但似乎就是破解不了。。我已经将+‘S改为-’S,反之亦然。我尝试了增减值。
我们有某种阴极 Material 的扫描电子显微镜 (SEM) 图像,我的目标是找出图像中裂纹所占的百分比。关于如何做到这一点有什么建议吗?目前,我只是尝试找到图像中“最暗”像素的数量,并获取图像中像
来自 Cracking the Coding Interview。问题 2.1:编写代码从未排序的链表中删除重复项。这是他们提供的解决方案: public static void removeDupl
我试图了解 AudioWorklet 正在工作并进行了一些测试。 到目前为止,当我让浏览器在后台播放声音并执行其他操作(例如,打开像 Photoshop 或 VSCode 这样的 CPU 密集型应用程
我尝试使用 Cracking the coding interview 中的代码来运行反向字符串函数。我不知道代码是否错误或者我应该使用另一个 IDE(我为此使用了 Xcode 5.2)。我是 C 编
在 Cracking the coding interview 一书的第 259 页,给出了 C++ 中的模板化单例(我不想发布所有代码以防其版权)。 问题是将单例实现为模板,并假设有一个名为 Loc
我正在阅读“Cracking the Coding Interview”一书,在这里我遇到了一些寻求答案的问题,但我需要帮助来比较我的答案与解决方案。我的算法有效,但我很难理解书中的解决方案。主要是我
我是 JavaScript 的新手。我正在尝试创建一个随机破解配对生成器,将名称与提示进行匹配。 添加更多列表后,它停止工作 - 没有提示或名称出现,我无法发现错误。 Cr
我在整个网络上进行了搜索,但未能找到解决此错误的方法。每次我尝试启动 Rails 服务器,甚至是 Rails 控制台时,我都会得到一个 crack/xml (LoadError)。有人有任何他们认为可
这个问题已经有答案了: How do I properly compare strings in C? (10 个回答) 已关闭 4 年前。 我正在研究 Pset2:Crack,但我认为背景在这里并不
我正在尝试解决一个面试问题,这样给定的链表需要围绕一个值“x”进行分区。我尝试了一下,但没有得到想要的结果。 class Node(object): def __init__(self, va
You have a stack of n boxes, with widths wi, heights hi, and depths di. The boxes cannot be rotated
You have two very large trees: T1, with millions of nodes, and T2, with hundreds of nodes. Create an
我是一名优秀的程序员,十分优秀!