标签: web-audio-api

可以从内存创建 AudioBuffer,即 Int8Array

有没有办法将内存中的原始数据作为样本添加到 Web Audio Api?我想添加一个 Int8Array (或 Int16Array)作为缓冲区,该缓冲区只有样本,没有 WAV 或 MP3 格式。我尝试过 audioContext.createBuffer 等但没有成功。

像这样的东西:

var buffer = audioContext.createBuffer(1,8192, 22000);
var intArray = new Int8Array(....);
// -- fill intarray
buffer.buffer = intArray;
...
var source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination); 
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,是否有一种与 contetx.decodeAudio() 兼容的声音格式,很容易在内存中“模拟”?即只是一个标题或其他东西。

html javascript html5-audio web-audio-api

3
推荐指数
1
解决办法
2904
查看次数

如何使用 Web Audio API 将单声道音频转换为立体声音频

我正在获取一个包含音频和视频的远程媒体流。在此流中,我获得单声道音频,而我需要立体声音频。

那么我如何使用 Web Audio API 将单声道音频转换为立体声音频

web-audio-api

3
推荐指数
1
解决办法
3586
查看次数

AnalyserNode 窗口化

WebAudio的AnalyserNode具有FFT来获取声音信号的频域数据。我不明白FFT的加窗函数是如何定义的。是否可以更改窗口大小甚至窗口函数(即汉宁或布莱克曼)?如果窗口不可调节,窗口大小是多少以及使用哪种窗口函数?

不幸的是我无法在文档中找到它。

javascript fft web-audio-api

3
推荐指数
1
解决办法
576
查看次数

带通滤波器,用哪个频率和Q值来表示频率范围?

我想使用网络音频带通滤波器来强调 300Hz 到 3kHz 的频率。

然而,Web Audio API 中的带通滤波器只有一个频率值(代表中心)和一个Q值(代表八度音程?)。

如何正确设置它们来代表我的to频率from范围?

javascript audio filtering web-audio-api

3
推荐指数
1
解决办法
1638
查看次数

通过 JavaScript 中的 Web Audio API 静音/取消静音和更改音量

我有几个关于 Web Audio API 的简单问题。我正在使用 JavaScript (AngularJS) 进行开发。

我正在使用的一个很棒的演示应用程序位于: https: //webaudiodemos.appspot.com/AudioRecorder/index.html

一旦我使用音频 API 在 Chrome 浏览器中授予对音频麦克风的访问权限,是否可以:

  1. 将麦克风静音和取消静音?
  2. 从 JavaScript 手动更改麦克风音量?
  3. 返回布尔标志(或任何对象)的音频 API 函数可以让我知道麦克风是否无法访问(无法正常工作)?

我在 StackOverflow 上找到了一些链接,但他们没有给我可以满足我的需要的关键信息:

javascript web-audio-api

3
推荐指数
1
解决办法
2470
查看次数

Web RTC 流的音频电平表

我想为视频元素中播放的音频创建一个分贝计。视频元素正在播放 WebRTC 流。

\n\n

目前,WebRTC 流无法传递到 Web 音频分析器中。(尽管这可能很快就会改变 \xe2\x80\xa6\xc2\xa0)(请参阅Web Audio API 分析器节点 getByteFrequencyData 返回空白数组

\n\n

目前是否有另一种方法可以从远程媒体流获取分贝信息?

\n

google-chrome mediastreamsource webrtc web-audio-api

3
推荐指数
1
解决办法
9480
查看次数

即使创建了 onclick,Safari AudioContext 也暂停

我在使用 Safari(桌面和移动设备)创建 AudioContext 时遇到了麻烦。似乎即使在用户交互时创建,它仍然被暂停。

我的代码:

<button onclick="test()">Test</button>
Run Code Online (Sandbox Code Playgroud)
const test = () => {
    window.AudioContext = window.AudioContext || window.webkitAudioContext;
    audioContext = new AudioContext();
    console.log(audioContext.state); // Suspended
}
Run Code Online (Sandbox Code Playgroud)

这应该是一个最低限度的工作示例,对吗?这里有什么问题?

safari mobile-safari webkitaudiocontext audiocontext web-audio-api

3
推荐指数
1
解决办法
2472
查看次数

正确处理麦克风音频的 React Hooks

我正在尝试编写一个 React Hook 来处理流式音频到使用 Meyda 分析的 AudioContext。

https://meyda.js.org/

我已经设法让流工作并且能够提取我想要的数据。但是,我在取消初始化音频时遇到了麻烦。

如果有人可以为我提供正确设置此挂钩的指导,我将不胜感激。

当我使用这些钩子离开页面时,我目前收到以下错误:

警告:无法对卸载的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要修复,请取消 useEffect 清理函数中的所有订阅和异步任务。

我试图在钩子的末尾添加一个清理功能,但我的尝试经常以音频立即切断或任何其他奇怪的错误而告终。

带有 Meyda Analyzer 的麦克风音频挂钩

export const useMeydaAnalyser = () => {

    const [running, setRunning] = useState(false);
    const [features, setFeatures] = useState(null);
    const featuresRef = useRef(features);
    const audioContext = useRef(new AudioContext());

    const getMedia = async() => {
        try {
            return await navigator
                .mediaDevices
                .getUserMedia({audio: true, video: false});
        } catch(err) {
            console.log('Error:', err);
        }
    };

    useEffect(
        () => {
            const audio = audioContext.current;
            let unmounted …
Run Code Online (Sandbox Code Playgroud)

reactjs web-audio-api react-hooks

3
推荐指数
1
解决办法
2086
查看次数

是否可以更改 MediaRecorder 的流?

getUserMedia(constrains).then(stream => {
    var recorder = new MediaRecorder(stream)
})

recorder.start()
recorder.pause()
// get new stream getUserMedia(constrains_new)
// how to update recorder stream here?
recorder.resume()
Run Code Online (Sandbox Code Playgroud)

是否可以?我尝试创建 MediaStream 并使用addTrackremoveTrack方法来更改流轨道但没有成功(当我尝试使用更新的流恢复它时,记录器停止)

有任何想法吗?

mediarecorder web-audio-api

3
推荐指数
1
解决办法
1245
查看次数

如何播放 RAW 音频文件?

我目前正在开展一个项目,该项目由一个图表组成,该图表显示由另一台设备拾取的音频电平。图表是通过浮点 API 制作的,我具有缩放和选择功能,以便在图表上选择一个时间范围并放大到该选定区域。我的下一步是允许用户收听与图表该区域对应的音频。我将音频文件存储在共享服务器上,所有文件都是单独的,一分钟一分钟,RAW 数据文件。我没有在网页中使用音频的经验,目前正在努力研究如何完成这项任务。据我所知,<audio>HTML 标签无法处理用于播放的 RAW 数据文件。我一直在研究 Web Audio API,但对它的工作原理和实现方式感到困惑。

我的第一个问题是如何从服务器解码 RAW 音频文件并将它们显示在 HTML 页面上以供客户端收听?

我的第二个任务是抓取与所选范围相对应的所有音频文件,并将它们组合成一个音频输出。例如,如果客户选择了 1:00pm - 1:50pm 的时间范围,我需要每分钟访问 50 个 RAW 数据音频文件。然后我想将它们组合在一起以产生一个单一的播放声音。因此,我的第二个问题是是否有人知道如何顺利​​完成此操作。

感谢您提供任何帮助!

javascript audio html5-audio raw-data web-audio-api

3
推荐指数
1
解决办法
4721
查看次数