Tag: stream

捕获缩略图Whilte下载Youtubevideo

我想在特定时间线上捕捉Youtubevideo的缩略图。 (例如3.2秒)我用ytdl和fluent-ffmpeg和node.js来实现它。 下载完成后可以捕获缩略图。 var fs = require('fs'); var ytdl = require('ytdl'); var ffmpeg = require('fluent-ffmpeg'); var videostream = fs.createWriteStream('video.flv'); var myytdl = ytdl('http://www.youtube.com/watch?v=A02s8omM_hI'); myytdl.pipe(videostream); videostream.on('close',function() { console.log('Downloading complete…'); var proc = new ffmpeg({ source: 'video.flv', nolog: true }) .withSize('150×100') .takeScreenshots(1, '/home/test', function(err) { console.log(err || 'Screenshots were saved'); }); }); 但是,我无法实现在下载时捕获缩略图。 我想要做的基本想法如下。 从X秒开始下载Youtubevideo。 (工程) 将其pipe理为可读/可写(双工)内存stream(需要通知) […]

在Node.js中“重新分块”Stream对象

很简单的node.js问题。 我想扩展stream对象来重新组合来自远程连接的数据。 我正在做多个telnet和发送命令到其他服务器,他们发回回应。 看起来像这样 > Hello, this is a command This is the response to the command. Sometimes it pauses here (which triggers the 'data' event prematurely). But the message isn't over until you see the semicolon ; 我想要做的是不要在暂停时触发“数据”事件,而是等待; 并触发一个自定义的“消息”事件。 我已经阅读并重读了这个问题 ,但是我还没有完全理解它(部分原因是因为它是关于可写入的stream,部分是因为我还没有注意到CoffeeScript)。 编辑:我想我在这里问两件事情: 如何扩展/inheritancenet.CreateConnection使用的stream对象? 我可以只扩展prototype.write来做一个“分割”并重新“发送”每个部分吗? 以下是我到目前为止所做的一切,但分块应该是stream的一部分,而不是“数据”监听器的一部分: var net = require('net'); var nodes = [ //list […]

我想实现从MP3audio数据stream到Web

My Client Web(由HTML5实现)从networking服务器(由Node.js实现)获取MP3audio数据,audio数据是16位PCM编码数据和一般二进制数据两种。 我无法解决我所遇到的问题,即使我已经遵循了一些例子和解释。 现在我想知道我怎么可以回放这个可以请指导我为什么在方法'context.decodeAudioData'中得到一个错误? 提前谢谢你的帮助。 祝你好运!〜 —- html5 source code —- <!DOCTYPE html> <html lang="en" manifest="web.appcache"> <head> <meta charset="utf-8" /> <title>index.html</title> <script src="sounds/ufo.js"></script> <script src="js/base64-binary.js"></script> <!– base64-binary.js : https://github.com/alexgibson/offlinewebaudio/blob/master/js/base64-binary.js–> <script type="text/javascript"> var context = new webkitAudioContext(); var ws = new WebSocket("ws://localhost:8080"); ws.binaryType = 'arraybuffer'; ws.onmessage = function (evt) { var byteArray = Base64Binary.decodeArrayBuffer(evt.data); context.decodeAudioData( […]

NodeJS:Writeable-Stream如何知道不会有更多的数据?

当我在节点中实现一个可写的stream时,唯一需要实现的方法是_write 。 但是我怎么知道不会有更多的数据呢? 我的stream的消费者用mystream.end(data)结束了他的传输,当我完成写作时,他也收到事件finish 。 但是在我的可写实现中,我怎么知道这个呢?

节点应用程序正在等待来自Stream的最后一个“可读”事件

我正在从一个Web服务加载图像的Node.js应用程序,通过使用ImageMagick处理缩略图,并将结果保存到此Web服务。 工作stream程是类似的 [Web Service] ==> HTTP Response Stream ==> ImageMagick ==> HTTP Request Stream ==> [Web Service] 我使用Node.js http模块检索原始图像stream并保存缩略图stream,并使用imagemagick-stream模块生成缩略图,而不使用任何临时文件。 由于我还需要发送缩略图长度,所以我利用memorystream模块来将缩略图保存在内存中。 所以工作stream改变了[Web Service] ==> HTTP Response Stream ==> ImageMagick ==> memory stream ==> HTTP Request Stream ==> [Web Service] 该代码在我的笔记本电脑(Mac)和工作站(Windows)中运行良好,但在具有特殊PNG图像的Ubuntu服务器上不起作用。 但是这个图像在Mac和Windows上运行得很好,而且如果我使用ImageMagick命令行的话,它也能工作,所以这不是一个糟糕的图像。 这种现象是,当处理这个图像时,我的应用程序继续等待从ImageMagick接收数据,这意味着它永远不会触发“结束”或“错误”事件。 当我在我的Mac上尝试时,我可以看到ImageMagick发出了3个“可读”事件,这意味着它处理了3个数据块。 但在Ubuntu上,它只发出了2个“可读”的事件,然后我的代码呆在那里。 我不知道为什么会发生这种情况? 由于图像可以在Mac,Windows上处理,并且可以在命令行上在Ubuntu上处理,所以我不认为这是因为图像和ImageMagick。 我强烈的怀疑有处理stream的东西是错误的,但不知道。 下面是一些伪代码 var im = require('imagemagick-stream'); var MemoryStream = require('memorystream'); […]

在Node.js中处理一个100MB的文件

基本上我有一个文件,比如说100mb.qs ,我需要通过下面的函数传递它的全部内容: function process(in){ var out = JSON.stringify(require('querystring').parse(in)); return out; } 然后用结果replace文件的内容。 我想我得把它stream出来,所以… require('fs').createReadStream('1mb.qs').pipe( /* ??? */ ) 我该怎么做?

事件发生后,分配事件处理程序可能已经发出

这是错的吗? var f = fs.createWriteStream('file'); otherStream.pipe(f); f.on('finish', function() { /*…*/ }) 不应该是这样的: var f = fs.createWriteStream('file'); f.on('finish', function() { /*…*/ }) otherStream.pipe(f); ? 哪一个更好,为什么?

将ffmpeg输出stream到node.js中的flash播放器

我正在使用ffmpeg拍摄一个video源,并在Flash中直播到浏览器。 这里是代码(使用expressjs): app.get('/stream', function(req, res) { var command = spawn('ffmpeg', ['-re','-i','video.avi','-c:v','libx264','-c:a','libfaac','-ar',44100,'-f','flv','-']); res.setHeader("Accept-Ranges", "bytes"); res.setHeader("Content-Type", "video/x-flv"); command.stdout.pipe(res); }); 编辑:这个使用的命令是: ffmpeg -re -i video.avi -c:v libx264 -c:a libfaac -ar 44100 -f flv – 如果我直接在浏览器中加载这个URL,它下载flv文件,我可以在VLC播放器中播放它。 然而,当我在像JWPlayer这样的播放器中使用它时,甚至试图简单地embedded它,它就不会显示或者任何东西。 任何想法,我可能会在这里失踪? 谢谢! 编辑:这是从ffmpeg的输出,在这之后它只是继续编码的字节。 ffmpeg version N-52420-gfc69033 Copyright (c) 2000-2013 the FFmpeg developers built on Apr 25 2013 17:10:30 with llvm-gcc 4.2.1 (LLVM […]

nodejsstream没有输出

我是nodejsstream的新手。 我尝试将父进程stream连接到subprocessstream,但不起作用。 有人可以告诉我什么是错的代码? 这是我的代码。 var child = require('child_process'); var ps = child.spawn('wc', '-l'); ps.stdout.pipe(process.stdout, {end: false}); process.stdin.pipe(ps.stdin, {end:false}); ps.stdin.on('end', function(){ process.stdout.write('ps stream ended'); }); ps.on('exit', function(code){ process.exit(code); });

自动重新连接到Twitter的Streaming API

我正在使用节点模块Twit( https://github.com/ttezel/twit )来传输来自Twitter的数据。 我的应用程序根据他们的twitter活动更新我的用户排名,所以我在相对时间筛选他们的推文。 它应该永久stream媒体,所以我想防止任何连接问题。 如果由于某种原因,我的应用程序崩溃,是否有可能尝试重新连接到API? 什么是正确的方法来做到这一点? 我相信不推荐以下代码: stream.on('disconnect', function (disconnectMessage) { console.log(disconnectMessage); stream.start(); }) 非常感谢