Articles of audiostream媒体

如何结合寻找节点快递audiostream

我有一个小的播客饲料,我主持,后我终于把它连接到羽绒一切正常,直到我试图跳过前进/后退。 我终于意识到,寻求不是固有的pipe道stream的一部分。 我search了一下,我似乎无法find任何有用的东西。 用下面的代码,我将如何实现寻求? app.get('/stream/:id', function(req, res) { if (!req.params.id) { res.status(404); res.send("Not found"); } var filePath = path.join(Config.media, '**' , req.params.id); filePath = glob.sync(filePath)[0]; var stat = fs.statSync(filePath); res.writeHead(200, { 'Content-Type': 'audio/mpeg', 'Content-Length': stat.size, 'Accept-Ranges': 'bytes' }); var readStream = fs.createReadStream(filePath); readStream.pipe(res); });

使用node.js进行缓冲audio播放的algorithm/技术

我正在使用node.js从networking播放audiostream,如广播电台或mp3stream。 数据stream如下所示: 广播电台(mp3audio) – >我的node.js脚本 – > lame mp3解码器(node-lame) – > PCM输出到soundcard(节点声音)。 问题是,由于networking延迟,播放有时会中断。 所以我所做的就是将所有数据块缓冲到一个variables中。 一旦variables大小达到(1Mb),我开始从variables而不是直接播放声音。 解决了打破的播放。 我的问题是 – 我可能不需要等到缓冲区大小达到1Mb。 我确定有一个algorithm或一些计算来检测平均networking速度或延迟,并确定不间断播放的最佳缓冲区大小 。 当然,我可以想出一些草率的解决scheme,但我想知道是否有任何algorithm或技术,我想完成什么? 我search了一些关于DSP的帧大小的白皮书,但是来自社区的build议会很棒。

如何循环MP3?

如何循环MP3? 我用这个来播放MP3,但它只播放一次。 我想连续播放MP3。 /*jslint node: true, vars: true, maxerr: 50, indent: 4 */ (function (console, require, alarm) { "use strict"; var fs = require("fs"); var lame = require("lame"); var Speaker = require("speaker"); function start() { var stream = fs.createReadStream("sounds/alarm.mp3"); stream.pipe(new lame.Decoder()).pipe(new Speaker()); } alarm.start = start; }(global.console, require, exports)); 使用: 节点跛脚: https : //github.com/TooTallNate/node-lame 节点扬声器: […]

Node.js:Radio streaming Api

我正在一个项目中,我必须使Api的无线电stream,用户可以从他的移动应用程序而不是networking收听电台stream。 请让我知道是否有Node.js中的任何框架可以实时stream式传输我的audio文件到移动客户端。 我看看Binary.js,但我不确定它可以处理我的移动客户端。 任何人都请在此引导我。

转码和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”,所以我不能跳过。 […]

如何桥接字节数组和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', […]

使用Node.js将audiostream式传输到html5audio标签,并绕过iOS限制

我目前正在使用HTML5audio的项目,我们在iOS设备上的限制(主要是多个audio通道限制)方面存在问题。 我在想,使用node.js来控制声音服务器端是可能的。 客户端将连接到一个单一的audiourl,节点服务器将通过这个单一频道传送现场声音,并在服务器上进行所有的混音和转换。 技术上可行吗? 你可以parsingnode.js上的audio,并做一些现场混音? 你认为服务器会爆炸超过5个同时客户? 谢谢

通过Web Audio API进行分块/audio回放

我在最后一篇文章中提出了这个问题,但是因为这个问题与原来的问题有关,所以我将它们分开发布。 我无法通过networkingaudio播放audio,就像在媒体播放器中播放audio一样。 我已经尝试了2种不同的传输协议,binaryjs和socketio,并且在尝试通过Webaudio播放时也没有什么不同。 为了排除传输audio数据的问题,我创build了一个例子,在从客户端接收到数据后将数据发送回服务器,并将返回的数据转储到标准输出。 将其configuration到VLC中会产生您期望听到的聆听体验。 要通过vlc播放结果时听到结果,听起来应该如此, 请使用以下命令运行https://github.com/grkblood13/web-audio-stream/tree/master/vlc上的示例: $ node webaudio_vlc_svr.js | vlc – 不pipe什么原因,当我尝试通过Webaudio播放相同的audio数据时,它失败了。 结果是随机噪声,两者之间有很大的空白。 下面的代码会导致播放声音如此糟糕? window.AudioContext = window.AudioContext || window.webkitAudioContext; var context = new AudioContext(); var delayTime = 0; var init = 0; var audioStack = []; client.on('stream', function(stream, meta){ stream.on('data', function(data) { context.decodeAudioData(data, function(buffer) { audioStack.push(buffer); if (audioStack.length > 10 && init == […]