在节点中缓冲通过管道传输到 res 的流。js/express

Buffer a stream piped to res in node.js/express

我有一个命令,我是 运行,用于通过 ffmpeg 进行视频流传输,它基本上将响应通过管道传输到 express 中的 res

例如:

var args = ['-re','-i','/video.mkv','-loglevel','quiet','-r',24,'-threads',7,'-b:v','512k','-b:a','96k','-c:v','libx264','-c:a','libfdk_aac','-ar',22050,'-f','flv','pipe:1']
  , command = spawn('ffmpeg', args);

command.stdout.pipe(res);

我想做的是 "buffer" 这几秒钟,然后将输出通过管道传输到 res。我试过创建一个 new stream.Writeable(),它接受 stdout,然后使用 setTimeout 3 秒,但这似乎不起作用。

有什么建议吗?

谢谢!

只要你是node>=0.10就可以

var args = ['-re','-i','/video.mkv','-loglevel','quiet','-r',24,'-threads',7,'-b:v','512k','-b:a','96k','-c:v','libx264','-c:a','libfdk_aac','-ar',22050,'-f','flv','pipe:1']
    , command = spawn('ffmpeg', args);

setTimeout(function(){
    command.stdout.pipe(res);
}, 3000);

默认情况下是流缓冲区,因此您只需等到稍后再通过管道传输它即可。