Tag: audio

转码和streamaudio – 如何发送内容范围标题

快速版本:当不知道身体长度时如何发送正确的Content-Range标题? 我有一个FLAC文件。 我想将其转码成MP3并立即将其stream式传输给用户。 到目前为止,我有这样的事情: function transcode(file) { var spawn = require('child_process').spawn var decode = spawn('flac', [ '–decode', '–stdout', file ]) var encode = spawn('lame', [ '-V0', '-', '-' ]) decode.stdout.pipe(encode.stdin) return encode } var express = require('express') var app = express() app.get('/somefile.mp3', function (req, res) { res.setHeader('Accept-Ranges', 'bytes') res.setHeader('Content-Range', 'bytes') res.setHeader('Content-Type', 'audio/mpeg') transcode(file).stdout.pipe(res) }) 这按预期工作,但它是“stream”,所以我不能跳过。 […]

具有增益控制function的node.js中的Mp3audio

我正在尝试在node.js中播放一些mp3文件。 事情是,我设法一个接一个地播放,甚至像我想要的那样平行播放。 但是我也想要的是能够控制振幅(增益),最终能够创build一个交叉淡入淡出。 任何人都可以帮我理解我需要做什么? (我想在node-webkit中使用它,所以我需要一个基于node.js的解决scheme,没有外部依赖)。 这是我到目前为止: var lame = require('lame'), Speaker = require('speaker'), fs = require('fs'); var audioOptions = {channels: 2, bitDepth: 16, sampleRate: 44100}; var decoder = lame.Decoder(); var stream = fs.createReadStream("music/ge.mp3", audioOptions).pipe(decoder).on("format", function (format) { this.pipe(new Speaker(format)) }).on("data", function (data) { console.log(data) })

binaryjs – nodejs mp3audiostream并播放

我想将.mp3文件从客户端stream式传输到服务器,都使用NodeJS。 我正在使用binaryjs来传输文件。 客户: var BinaryClient = require('binaryjs').BinaryClient; var fs = require('fs'); var client = BinaryClient('ws://localhost:9000'); client.on('open', function(stream){ client.send(fs.createReadStream('music.mp3'), { name : 'music' }); }); 服务器: var BinaryServer = require('binaryjs').BinaryServer; var server = BinaryServer({port: 9000}); server.on('connection', function(client){ client.on('stream', function(stream, meta){ var data = []; stream.on('data', function(chunk){ console.log('Recieve Chunk: ' + data.length); data.push(chunk); }); stream.on('end', function() { […]

如何桥接字节数组和audiostream?

我正在为stream式应用程序创build一个中继服务器。 基本上,它应该像这样工作: 客户端A通过套接字将麦克风audio传输到服务器 服务器获取stream,也许暂时存储在某个地方?(不知道) 客户端B从服务器获取stream并播放它。 基本上,我完成了第一部分(发送麦克风audio到服务器): while(isStreaming) { minBufSize = recorder.read(buffer, 0, buffer.length); mSocket.emit("stream", Arrays.toString(buffer)); } 第三部分完成,只是播放audio: mediaplayer.reset(); mediaplayer.setDataSource("http://192.168.1.2:1337/stream"); mediaplayer.prepare(); mediaplayer.start(); 现在我不知道如何桥接传入的字节数组和stream。 这是我目前的服务器代码: var ms = require('mediaserver'); // from server to Client B exports.letsStream = function(req, res, next) { ms.pipe(req, res, "sample_song_music_file.mp3"); }; // from Client A to server exports.handleSocketConnection = function(socket) { console.log("connected"); socket.on('stream', […]

与覆盆子pi上的node.js的和弦audio回放

我一直在尝试使用运行最新raspbian的树莓派3上的node.js创build和弦WAV播放: 炮轰到aplay / mpg123 /其他程序 – 让我只能一次播放单一的声音 我尝试了https://github.com/sebpiq/node-web-audio-api和https://github.com/TooTallNate/node-speaker (下面的示例代码)的组合,但audio质量非常低,很多的扭曲 有什么我在这里失踪? 我知道我可以很容易地用另一种编程语言(我能够用SDL编写C ++代码,用pygame编写Python),但是问题是如果node.js可能的话:) 这是我目前的web-audio-api +节点扬声器代码: var AudioContext = require('web-audio-api').AudioContext; var Speaker = require('speaker'); var fs = require('fs'); var track1 = './tracks/1.wav'; var track2 = './tracks/1.wav'; var context = new AudioContext(); context.outStream = new Speaker({ channels: context.format.numberOfChannels, bitDepth: context.format.bitDepth, sampleRate: context.format.sampleRate }); function play(audioBuffer) { if (!audioBuffer) […]

audio操作使用node.js

我的团队已经在产品中使用了Web Audio API / Getusermedia,并且我们正在和Chrome和Firefox用户开展合作。 但是我们仍然有很大的用户群,但是由于技术上的障碍,我们仍然不能(主要是那些IE用户),因为他们的主要浏览器不支持这项技术,而且他们也不或者不能更改为现代浏览器。 我们正计划去那些用户,但我们不想去Flash,Flex,Silverlight或类似的东西。 所以,考虑解决scheme,我想如果我把audio操作从浏览器移动到服务器,也许我可以通过这个难题。 当试图找出如何做到的时候,NodeJS是第一个答案。 是否有可能使用NodeJS来完成? 有没有可以帮助我们完成这个任务的图书馆? 有没有其他技术可以让我做到这一点? 谢谢任何人可以帮助。

节点(套接字)实时audiostream/广播

请问,是否有任何简单的方法通过NODE.js和可能的SOCKET.IO从服务器到客户端(浏览器)stream媒体文件(ogg,mp3,spx ..)? 我必须在服务器端loggingaudioinput,然后能够为许多客户端实时播放。 我已经搞乱了binary.js或socket.iostream,但没有能够得到它的权利。 我试图用speex,vorbis或lame编码audioinput,然后通过FS将它加载到客户端,但是我没有成功。 或者我必须捕获PCM,然后在浏览器中解码? 对此的任何build议,没有任何我发现曾经帮助过我。 非常感谢任何提示,链接和想法。

如何在Javascript / Node中从Blob中编写.wav文件

我试图用fs.writeFile写一个.wav文件。 该文件已成功创build,但它只有8-13字节长,显然我没有做正确的事情。 如果blob已经是audio / wav,我可以写入磁盘,还是需要将其转换为Base 64? 我在这里非常困惑,我发现另一个类似的线程没有答案 – 在这里 任何input将不胜感激。 routerApp.controller('audiotest', function($scope) { $scope.saveToDisk = function(){ var nw = require('nw.gui'); var fs = require('fs'); var path = require('path'); fs.writeFileSync('test.wav', $scope.recordedInput) }; } console.log($scope.recordedInput)返回Blob {size: 294956, type: "audio/wav"} 这不是真的相关,但这是我的HTML <div class="row" ng-controller="audiotest"> <div class="row"> <button type="button" ng-click="saveToDisk()"> Write this sucker to disk </button> </div> <ng-audio-recorder id='audioInput' […]

捕获,修改,然后输出电子audio

我试图捕捉,修改并最终在Electron (Mac OSX)节点中输出audio。 这些步骤是: 在输出之前捕获audio,可能通过CoreAudio。 通过Web Audio API修改audiostream/缓冲区。 将修改后的缓冲区输出到声音设备。 我试过节点核心audio 。 但是,我能做到的最多的是一个快速的刺耳的声音。 除此之外,我还没有find一个好的解决schemeI / O的audio。 我怎样才能做到这一点,而不牺牲音质?

通过socket.io 1.0现场audio

从socket.io网站 二进制stream媒体 从1.0开始,可以发送任何blob:图像,audio,video。 我现在想知道,如果这不能解决我最近想做的事情。 实际上,我正在寻找一种方法,将(A – 即麦克风input…)的现场audiostream广播到连接到我的网站的所有客户端。 是这样的可能吗? 我一直在搞乱WebRTC( https://www.webrtc-experiment.com/ )的例子,但是我还没有能够为less数连接的客户端pipe理目标。 我的想法是关于像getUserMedia或任何其他audio源(PCM,无论.. ..)被切碎,并提供给客户端和播放例如HTML5audio元素或任何东西..我需要做的stream尽可能实时,没有大声/冰投服务不够快(事实上,他们不是我的问题的解决scheme,他们的意思是用这种方式),我并不关心audio质量。 跨平台兼容性将会很棒。 是这样的可能吗? 通过使用socket.io作为如何将这些数据提供给客户端? 我将非常感谢任何参考,提示或来源,可以帮助我实现这一点。 非常感谢。