Articles of web audio

邮袋查询阻止了dom

这里是我的代码来testingpouchdb查询: 主文件: var myAudio = new Audio("http://www.stephaniequinn.com/Music/Allegro%20from%20Duet%20in%20C% 20Major.mp3"); myAudio.play(); var worker = new Worker('worker.js'); worker.postMessage("start worker"); worker.addEventListener('message', function(e) { console.log('Worker said: ', e.data); }, false); Worker.js: importScripts("pouchdb-5.2.0.min.js"); self.addEventListener('message', function(e) { queryDocs(); }, false); function queryDocs(){ localDB.allDocs({ include_docs: true, attachments: true }, function(err, response) { if (err) { return console.log(err); } self.postMessage("returned docs:", response); }); } […]

使用FFMPEG实时stream式传输到networkingaudioAPI

我正在尝试使用node.js + ffmpeg将audiostream式传输到仅使用WebaudioAPI连接的浏览器。 不使用元素,因为它添加了自己的缓冲区8到10秒,我想获得最大的高延迟(最大大约1到2秒)。 audio播放成功,但audio非常波涛汹涌。 这里是我的node.js(服务器端)文件: var ws = require('websocket.io'), server = ws.listen(3000); var child_process = require("child_process"); var i = 0; server.on('connection', function (socket) { console.log('New client connected'); var ffmpeg = child_process.spawn("ffmpeg",[ "-re","-i", "A.mp3","-f", "f32le", "pipe:1" // Output to STDOUT ]); ffmpeg.stdout.on('data', function(data) { var buff = new Buffer(data); socket.send(buff.toString('base64')); }); }); 这里是我的HTML: var audioBuffer […]

使用来自NodeJs的WebAudio API

我想在NodeJS中使用WebAudio(AudioContext)。 但是NodeJS不支持WebAudio。 networkingaudioapi有一个npm,但它仍处于alpha阶段,是不完整的。 那么如何在NodeJS中使用WebAudio(AudioContext)。 我可以从NodeJS实例化一个Chrome浏览器环境并利用它的function。 这可能吗? 有没有其他方法可以做到这一点? 请帮忙。

将Web Audio API麦克风数据stream式传输到nodewebkit上的磁盘

我正在研究使用Web Audio APIlogging麦克风数据并将其保存到磁盘的nodewebkit应用程序。 我已经使用了RecordRTC框架,但是它并没有公开将数据stream式传输到磁盘的方法(logging可能超过一个小时,这是必要的)。 我似乎无法find使用其他方法将数据stream式传输到磁盘的好方法。 如果有一个合适的方法来做到这一点,我将不胜感激这个工作的适当工具是什么。 然而,我现在的非工作解决scheme是: 使用WebAudio API创build一个ScriptProcessorNode来访问PCM数据 创build一个可读的stream缓冲区(使用stream缓冲区模块)并将其传送到一个fileWriter(由wav模块制作) 将onaudioprocess事件中的数据转换为16位整数,并将它们添加到可读stream中,以便可以将其写入 这是行不通的,因为ReadableStreamBuffer一次仅传送20个字节到fileWriter,而不是由于某种原因排队来自麦克风的所有字节。 var wav = require('wav'); var streamBuffers = require("stream-buffers"); function convertFloat32ToInt16(buffer) { var l = buffer.length; var buf = new Int16Array(l); while (l–) { buf[l] = Math.min(1, buffer[l])*0x7FFF; } return buf.buffer; } var filePath = utils.getCwd() + '/recordings/demo.wav'; var fileWriter = new wav.FileWriter( filePath, […]

我可以使用nodejs将麦克风audio从客户端传输到客户端吗?

我正在尝试创build一个实时语音聊天。 一旦客户端正在按住一个button并进行通话,我希望通过套接字将声音发送到nodejs后端,然后我想将这些数据传输到另一个客户端。 这里是发件人的客户端代码: socket.on('connect', function() { var session = { audio: true, video: false }; navigator.getUserMedia(session, function(stream){ var audioInput = context.createMediaStreamSource(stream); var bufferSize = 2048; recorder = context.createScriptProcessor(bufferSize, 1, 1); recorder.onaudioprocess = onAudio; audioInput.connect(recorder); recorder.connect(context.destination); },function(e){ }); function onAudio(e) { if(!broadcast) return; var mic = e.inputBuffer.getChannelData(0); var converted = convertFloat32ToInt16(mic); socket.emit('broadcast', converted); } }); 然后服务器获取这个缓冲区并将其传输到另一个客户端(在本例中是同一个客户端) […]

如何在编码和分割audio文件时,在重构audio文件时不会在音段之间产生间隙(或audio突变)?

我正在开发一个Web应用程序,需要多个audio文件的stream式传输和同步。 为此,由于定时audio的重要性,我使用HTML5audio标签上的Web Audio API 。 目前,我正在使用FFMPEG的分段function来编码和分割audio文件成更小的块。 我分割它们的原因是我可以从文件的中间开始stream式传输,而不是从头开始(否则我只需要使用UNIX split来分割文件, 如下所示 。问题是,当我将stringaudio片段一起回来,我得到段之间的audiostream行音乐。 如果我在.wav文件中使用PCM编码(pcm_s24le)对段进行编码,则回放是无缝的,这导致我相信编码器正在填充文件的开头或结尾。 由于我将处理许多不同的audio文件,使用.wav将需要太多的带宽。 我正在寻找以下解决scheme之一的问题: 如何无缝地分割编码的audio文件, 如何强制编码器不使用ffmpeg(或其他工具)填充audio帧,或者 什么是更好的方式来stream式audio(开始在一个任意的轨道时间),而不使用audio标签? 系统信息 自定义node.js服务器 在上传audio文件时,node.js将数据传送到ffmpeg的编码器 需要使用HTML5 Web Audio API支持的编码 服务器通过WebSockets套接字一次发送audio块1 提前致谢。 我试图尽可能清楚,但如果你需要澄清,我会更愿意提供。