Tag: stream

通过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作为如何将这些数据提供给客户端? 我将非常感谢任何参考,提示或来源,可以帮助我实现这一点。 非常感谢。

使用stream时,knex.js上的内存问题

我想用knex.js将整个sqlite3数据库表导出为CSV。 由于表可以达到300000行,我使用stream没有内存问题。 但是,如果我看我的应用程序的内存使用高达800MB或我有一个“内存不足”的错误。 我怎样才能处理sqlite3数据库上的knex.js的大型查询结果? 下面的代码示例: knex.select().from(table).stream(function (stream) { var stringifier = stringify(opts); var fileStream = fs.createWriteStream(file); var i = 0; stringifier.on('readable', function() { var row; while (row = stringifier.read()) { fileStream.write(row); console.log("row " + i++); //debug } }); fileStream.once('open', function(fd) { stream.pipe(stringifier); }); }); 编辑 似乎sqlite3数据库的knex.jsstream是“假”stream。 下面是knex中sqlite3的stream函数的源代码: Runner_SQLite3.prototype._stream = Promise.method(function(sql, stream, options) { /*jshint unused: […]

如何提交HTML5canvas作为表单发布的一部分?

我正在寻找stream图像数据从一个canvas标签到一个node.js服务器。 我可以自己处理服务器端代码,但是如何从canvas提交数据呢? 我希望能够提供一个涉及多部分表单数据的build议,因为我想要传输数据,因为我期待50 MB左右的图像。 如果我试图一次性发布数据,它往往会崩溃客户端的浏览器。

如何在NodeJS中编码双向双工stream

在最新的几个版本的NodeJS(v0.10.X截止撰写)中,Streams API经历了一个可喜的重新devise,现在我想开始使用它。 我想用一个实现一个协议的对象包装一个套接字的input和输出。 所谓的Duplex接口,似乎只是任何可读写的stream(如套接字)。 目前尚不清楚Duplexes是否应该像A或B一样,还是不重要。 +—+ +—+ –>| A |–> | |–> +—+ | B | | |<– +—+ 对于有两个可写和两个可读的对象,什么是正确的代码结构/接口? +——–+ +———-+ +—- | r|–>|wr|–>|w | socket | | protocol | | rest of app | w|<–|rw|<–|r +——–+ +———-+ +—- 上图的问题是protocol对象需要两个独立的read方法和两个write方法。 在我的头顶,我可以使协议产生“左”和“右”双工对象,或者“进出”双工对象(以不同的方式)。 这些都是首选的方法,还是有更好的解决scheme?

是否有可能从单个stream式字节范围块创build新的mp4文件?

如果我在支持字节范围的服务器上有远程mp4文件,是否可以检索单个字节范围并从该范围数据创build新的/自包含的mp4? 如果我尝试使用fs.createWriteStream(remoteFilename)将返回的字节范围数据直接写入mp4文件,则不会获取需要播放的video元数据(持续时间,维度等)。 当我得到一个字节范围,从0开始,以XX结束时,输出mp4是可播放的,但是会有整个video长度的持续时间元数据,并且当字节范围在剩余时间内完成时将冻结屏幕时间。 还有什么我可以采取一个字节范围,并从该stream对象创build一个独立的.mp4文件? 整个过程就是避免下载整个10分钟的文件,然后才能使用ffmpeg制作5秒的剪辑。 如果我可以计算和下载字节范围,应该有办法将它写入独立的MP4文件。 预先感谢您提供的任何帮助。

meteor:我如何stream和parsing一个大文件的asynchronous节点function?

我正在使用作业收集包执行以下操作: 用一堆有关网页的元数据下载一个大文件 使用NPM event-stream包由正则expression式分割的文件元数据中创build一个stream 检查一个集合中的元数据是否匹配(我一直试图将每个网页的元数据stream到另一个函数来做到这一点) 该文件太大,无法缓冲,因此需要stream式传输。 这是一个小文件,其中包含几个元数据的例子,如果你想尝试这个。 作业job-collection包中的每个作业已经在一个asynchronous函数中: var request = Npm.require('request'); var zlib = Npm.require('zlib'); var EventStream = Meteor.npmRequire('event-stream'); function (job, callback) { //This download is much too long to block request({url: job.fileURL, encoding: null}, function (error, response, body) { if (error) console.error('Error downloading File'); if (response.statusCode !== 200) console.error(downloadResponse.statusCode, 'Status not 200'); var […]

什么是最有效的方法来读取节点JS中的文件的第一行?

假设你有很多长文本文件,你只需要从每个文件的第一行提取数据(不需要读取更多的内容)。 什么是节点JS的最好的方法来做到这一点? 谢谢!

如何使用对象列表作为吞噬源码stream

我知道,吞咽需要一个乙烯源stream才能正常工作,但有没有简单的方法来使用已经存在的乙烯基文件或JSON对象,而不是众所周知的gulp.src,只能采取globs?

如何使用Gulp在stream中replace?

我尝试从Grunt切换到Gulp,我有一个问题: 我从两个文件中读取两个stream var fileStream = gulp.src(file); var injectionStream = gulp.src(injection) .pipe(replace('#class-name#', argv.cname)); 如果我的控制台参数“–remove”缺席,我没有问题连接这些stream .pipe(concat('animation.styl')) .pipe(gulp.dest('./dist')) 但是,当“–remove”为真时,我想删除注入,换句话说,从fileStream中减去injectStream。 我试过了: var es = require('event-stream'); es.replace() var replace = require('gulp-replace'); 它适用于string,但是我不能用从文件读取的stream成功。 有人可以给我一个小提示吗? 也许这是一个不正确的工具生成任务,我应该留在Grunt和/或其他工具,如哟等? 感谢您的时间!

通过expressjs将子stream程的stdoutstream到浏览器

我们有一个使用nodejs , express和child_process.spawn构build的应用程序。 一个要求就是我们需要在运行时产生一个进程并捕获它的输出并将其呈现给用户。 我们有这个工作。 但是,我们需要找出一种方法来stream式输出,而不是等待subprocess存在。 我们环顾四周,找不到任何明确的例子,并想知道这里有人有什么想法吗? 一切正在工作。 我们只是不关心在显示整个输出之前不得不等待命令完成的用户体验。 如果我们可以对它进行stream式处理,那么当stdout数据事件被触发时,这将是理想的,浏览器将使用新数据进行更新。 就目前而言,它确实是大块的,而不是一个大的块。所以它很适合做这个。