打字稿录制和播放原始的pcm音频 [英] TypeScript record and play raw pcm audio

查看:0
本文介绍了打字稿录制和播放原始的pcm音频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对TypeScrip和整个JavaScript环境还是个新手。我有一个小项目要做,它需要创建一个带有类型脚本的浏览器应用程序(我还没有任何代码)。

我需要从浏览器麦克风录制原始PCM音频,将其记录下来,然后通过浏览器扬声器播放相同的PCM音频。

我研究过使用MediaRecorder进行录制,并使用普通的HTMLAudioElement进行回放,但我不确定它们是否支持原始音频。我也有一些帖子提到使用AudioContext ScriptProcessorNode获取原始音频,但我不知道如何播放它们。

我不需要完整的解决方案,但如果有任何能帮助我完成此任务的指导或教程,我将不胜感激。

推荐答案

我确实开发了一个名为extendable-media-recorder的小库,它允许使用定制编码器扩展本机MediaRecorder。我构建的概念验证编码器是一个wav编码器。希望这也适用于您。

我还没有记录该库,因此我很高兴以您的问题为契机,整理出一个完整的用法示例。

import { MediaRecorder, register } from 'extendable-media-recorder';
import { connect } from 'extendable-media-recorder-wav-encoder';

(async () => {
    // Get the port a worker which can encode WAV files.
    const port = await connect();
    // Register this port with the MediaRecorder.
    await register(port);
    // Request a MediaStream with an audio track.
    const mediaStream = await navigator.mediaDevices
        .getUserMedia({ audio: true });
    // Create a MediaRecorder instance with the newly obtained MediaStream.
    const mediaRecorder = new MediaRecorder(mediaStream, {
        mimeType: 'audio/wav'
    });

    // Kick off the recording.
    mediaRecorder.start();

    mediaRecorder.addEventListener('dataavailable', ({ data }) => {
        // The data variable now holds a refrence to a Blob with the WAV file.
    });

    // Stop the recording after a second.
    setTimeout(() => mediaRecorder.stop(), 1000);
})();

我希望注释确实解释了代码的作用。如果不是这样,请让我知道。

这篇关于打字稿录制和播放原始的pcm音频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆