从音频元素获取音频样本
Get audio samples from audio element
我想使用网络浏览器从麦克风获取实时音频,并通过websockets将其发送到Node.js服务器。我正在使用二进制JS库将二进制数据发送到服务器。我在从麦克风获取音频样本时遇到问题。这是我所拥有的:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();
var audio = document.querySelector('audio');
navigator.webkitGetUserMedia({audio: true}, function(micstream){
audio.src = window.URL.createObjectURL(micstream);
}, errorCallback);
});
var errorCallback = function(e){
console.log("Rejected!", e);
};
我想要某种方法每 10 毫秒左右获取一次音频样本,以便我可以将其写入 websocket 流。我正在寻找这样的东西:
function getSample(){
//read the current data in byte buffer.
setTimeout(getSample, 10);
}
有人可以告诉我该怎么做吗?还是有其他方法可以做到这一点?谢谢!
这些要点应该会让你走上正确的轨道:
- 您希望发送原始数据,因此请从上下文中创建
JavaScriptNode
或ScriptProcessor
,并将onaudioprocess
用于函数。您可以轻松设置时间间隔,以确保它仅每 10 毫秒一次。这与当前的RTCRecorders非常相似。 - 默认情况下创建的数据包
float PCM
。您可以在JavaScript中将它们转换为16 bit PCM
,但是值得其重量的媒体库(我肯定知道Gstreamer)可以翻译流。
这是我编写的代码。这段代码只是已经存在的录音机的修改版本,但我通过 websocket 发送数据,我不在 javascript 中修改它,但如果需要,从浮点更改为 16 位 PCM 音频的功能包含在源代码中。您可以在onaudioprocess
中弹出时间检查并将websocket
移出worker
(目前只有 Chrome 支持 Worker 线程中的 WebSockets),您应该很高兴。
相关文章:
- 如何播放部分音频文件
- 音频控件在mouseover上显示,在mouseout上淡出
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 是否可以在浏览器中使用纯JavaScript保存音频流
- angular不会更改json的音频源
- 通过幻灯片更改事件停止使用jquery的音频
- 音频和动画在javasctipt循环中同步
- 在jquery中需要cloudinary图像和视频样本代码
- 使用jQuery控制来自图像的音频
- 调整<音频>元素
- javascript:发送带有音频文件的POST,然后重定向到新页面
- 使用带有CefSharp或CefGlue的JavaScript的本地或流式音频
- 未能加载,因为找不到支持的源.当播放HTML5音频元素时
- 动态加载的自定义javascript/jQuery/HTML5音频播放器的问题
- <的自定义进度条;音频>并且<进度>HTML5元素
- 如何使用Node.js将音频样本数组写入wav文件
- 从音频元素获取音频样本
- 在Web音频中播放原始音频PCM样本
- 我如何获得音频样本数据与Web音频API (WAAPI)
- 如何在 Web 中播放来自 Android 的原始样本PCM_16音频数据记录(使用网络音频或其他)