问题标签 [webkitaudiocontext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2620 浏览

javascript - HTML 5 音频 - AnalyserNode.getByteFrequencyData() 返回未定义

这似乎是一个常见问题 - Javascript Web Audio API AnalyserNode Not Working - 但我不能确定我是否在我的实现中找到了一个边缘案例。

我使用 createMediaElementSource() 创建音频源,但不是使用页面标记中的音频标签,而是使用 Buzz.js 动态创建元素。

这是我的测试设置:

使用上面的代码,声音就会播放。我还可以附加其他有效的节点(双二阶滤波器、增益等),但 audioAnalyser.getByteFrequencyData 在每一帧上返回未定义的值......

可能与使用 Buzz.js 有关吗?

0 投票
1 回答
899 浏览

node.js - 通过 NodeJs WebSockets 将来自 avconv 的音频流式传输到带有 AudioContext 的 Chrome

我们无法在浏览器中播放流式音频(使用 Chrome)。

我们有一个进程在某个端口上的 udp 上流式传输一些音频(例如互联网广播)。它是 avconv ( avconv -y -i SOMEURL -f alaw udp://localhost:PORT)。我们有一个 NodeJs 服务器,它接收此音频流并将其转发给通过 websocket 连接的多个客户端。NodeJs 接收到的音频流被包装在一个缓冲区中,该缓冲区是一个数字从 0 到 255 的数组。数据被发送到浏览器没有任何问题,然后我们使用 AudioContext 在浏览器中播放音频流(我们的代码基于 AudioStreamer - https://github.com/agektmr/AudioStreamer)。

起初,我们在这一点上得到的只是静态的。在查看 AudioStreamer 代码时,我们意识到音频流数据应该在 -1 到 1 的范围内。有了这些知识,我们尝试用这个公式修改缓冲区中的每个值x = (x/128) - 1。我们这样做只是为了看看会发生什么,令人惊讶的是,静电变得不那么可怕了——如果音频是语音,你甚至可以辨认出歌曲或单词的旋律。但它仍然非常非常糟糕,有很多静态,所以这显然不是一个解决方案 - 但它确实表明我们确实通过 websocket 接收音频流,而不仅仅是一些随机数据。

所以问题是——我们做错了什么?是否有我们应该使用的编解码器/格式?当然,所有代码(avconv、NodeJs 和客户端)都可以随意修改。如果需要,我们也可以使用其他浏览器,尽管我认为这不是问题所在。我们唯一知道的是,我们确实需要它来通过 websockets 工作。

运行 avconv 和 NodeJs 的操作系统是 Ubuntu(各种版本 10-13)

有任何想法吗?所有帮助将不胜感激。

谢谢!托马斯

0 投票
1 回答
386 浏览

html - 使用 libFLAC 将 AudioContext 的输出转换为 FLAC 格式

我正在尝试将 HTML5 音频上下文(例如buffer.getChannelData(0)...)的 PCM 输出转换为“FLAC__stream_encoder_process_interleaved”所需的 PCM 数据

奇怪的是 FLAC 需要数据作为 int32 缓冲区(const FLAC__int32 buffer[])但是 audiocontext 的输出是标准化的 float32 数组。我不确定如何将音频上下文的规范化缓冲区转换为 FLAC 所需的格式。

关联

有人可以解释为什么 FLAC 需要 int32 中的缓冲区而不是普通的 float32 数组吗?

0 投票
1 回答
287 浏览

javascript - 如何使用 webAudio-API 设置顺序独立录音

录制麦克风没有问题,连接分析仪以获得漂亮的 vu-meter,使用speex.js库中的“xaudio.js”将大量数据重新采样到我们可以处理的东西(8Khz,单声道)并包装将其放入适当的 WAV 包络中。

停止录音机似乎是另一回事,因为录音过程严重落后于 onaudioprocess 功能。但即使这也不是问题,因为我可以计算丢失的样本并等待它们到达,然后再实际存储数据。

但是现在呢?如何阻止音频进程调用 onaudioprocess?断开所有节点并没有什么不同。我如何能够重新初始化所有缓冲区,以便为下一次录制创建一个干净、新鲜的跳转点?我应该销毁 AudioContext 吗?我该怎么做?还是将 createMediaStreamSource 设为“null”就足够了?

需要做什么才能真正为顺序独立录制设置一切?

任何提示表示赞赏。

0 投票
2 回答
2836 浏览

html5-audio - 录制 webaudio api 的音频上下文的声音

我在我的项目中使用网络音频 api。有没有办法记录发送到 webkitAudioContext.destination 的音频数据?.wav 文件正在我的浏览器中播放,因此应该有某种方法可以将该数据存储到 (.wav) 文件中。我知道这是可能的,但还没有找到任何解决方案:(recorder.js 可以帮助我,但到目前为止我发现它只是录制麦克风实时输入,是否可以在帮助下录制我的音频(.wav 文件) recorder.js 的?请帮助

我正在使用此示例进行录制https://github.com/mattdiamond/Recorderjs

0 投票
2 回答
3353 浏览

javascript - 自定义媒体流

我通过 websockets 接收原始 float32 音频,并希望在浏览器中播放它。据我了解,我需要为此使用 MediaStream API。但是,我找不到创建可以附加数据缓冲区的 MediaStream 的方法。

实现这一目标的正确方法是什么?

我正在尝试这样的事情:

0 投票
1 回答
434 浏览

javascript - 低延迟音频播放?

是否可以使用 HTML5 实现低延迟音频播放?我目前正在使用AudioContextAPI。但是,我得到大约 4 秒的延迟。这对我的用例来说意义重大。

0 投票
1 回答
1707 浏览

mono - 来自 Chrome M34 中 MediaStreamDestination 的 AudioContext 立体声输出

似乎 AudioContext.createMediaStreamDestination() 默认为单声道输出。此默认值正在更改,但有没有办法手动设置所需的输出通道数?

或者有没有其他方法可以在保留正确数量的频道的同时将流从 WebAudio 获取到 WebRTC?

0 投票
1 回答
1505 浏览

node.js - 使用 NodeJs 中的 WebAudio API

我想在 NodeJS 中使用 WebAudio(AudioContext)。但是 NodeJS 不支持 WebAudio。有一个用于 web-audio-api 的 npm,但它仍处于 alpha 阶段且不完整。

那么如何在 NodeJS 中使用 WebAudio(AudioContext)。

我可以从 NodeJS 实例化一个 chrome 浏览器环境并利用它的功能吗?这可能吗?还有其他方法吗?

请帮忙。

0 投票
0 回答
80 浏览

javascript - 离线音频上下文

我有小问题。我正在尝试分析 mp3 声音。但我不想实时进行(它对我来说很完美)。我对 OfflineAudioContext 有问题,文档写得很糟糕,没有示例或其他内容。最好的结果是很多空数组[我的意思是很多零]。

我如何访问每个时刻的频率以进行可视化?

非常感谢您的回答,cya伙计们。