Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 键入脚本录制并播放原始pcm音频_Typescript_Web Audio Api_Audiocontext_Web Mediarecorder - Fatal编程技术网

Typescript 键入脚本录制并播放原始pcm音频

Typescript 键入脚本录制并播放原始pcm音频,typescript,web-audio-api,audiocontext,web-mediarecorder,Typescript,Web Audio Api,Audiocontext,Web Mediarecorder,我对TypeScript和整个JavaScript环境都是新手。我有一个小项目要做,这需要用TypeScript创建一个浏览器应用程序(我还没有任何代码) 我需要从浏览器麦克风录制原始PCM音频,记录它,然后通过浏览器扬声器播放相同的PCM音频 我研究过使用MediaRecorder进行录制,并使用纯HTMLAudioElement进行播放,但我不确定它们是否支持原始音频。我也在一些帖子中提到使用AudioContext ScriptProcessorNode获取原始音频,但我不知道如何播放它们

我对TypeScript和整个JavaScript环境都是新手。我有一个小项目要做,这需要用TypeScript创建一个浏览器应用程序(我还没有任何代码)

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

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


我不需要完整的解决方案,但如果有任何指导或教程可以帮助我完成这项工作,我将不胜感激。

我正在开发一个名为的小库,它允许使用自定义编码器扩展本机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);
})();
我希望这些评论能够解释代码的作用。如果不是这样,请告诉我