打字稿录制和播放原始的pcm音频 [英] TypeScript record and play raw pcm audio
本文介绍了打字稿录制和播放原始的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屋!
查看全文