在NodeJS中读取连续的二进制数据流

时间:2013-10-11 00:29:04

标签: node.js stream

我正在尝试从Node中读取大量的二进制数据(从子进程创建)。我在我的流程中使用stdout.on('data')事件来获取数据 无论我搜索多少,我似乎都找不到传递给回调的参数的任何文档。 typeof(data)说这是一个对象,但据我所知,它只是一个数组。

是阵列吗?还是一个字符串?无论是什么,我如何获得一个字节数组? 这是我的代码:

var childProc = require('child_process'),
    spawn = childProc.spawn;

// /home/ubuntu/bin/ffmpeg -f video4linux2 -r 1 -s 640x480 -i /dev/video0 -c:v rawvideo -f rawvideo -pix_fmt rgb8 -

var streamProc = spawn('/home/ubuntu/bin/ffmpeg', [
    '-f', 'video4linux2',
    '-r', '1',
    '-s', '640x480',
    '-i', '/dev/video0',
    '-c:v', 'rawvideo',
    '-f', 'rawvideo',
    '-pix_fmt', 'rgb24',
    '-'
    ]);

streamProc.stdout.on('data', function(data) {

    var bytes = [];

    //Do some magical conversion here to populate the array

    //debugger;
    console.log('OUT: ' + bytes.join()); //Just some debugging steps
});

streamProc.stderr.on('data', function(data) {
    //debugger;
    if(process.argv.indexOf('showerr') != -1)
        console.log('ERR: ' + data);
});

streamProc.on('close',function(exitCode) {
    console.log('EXT: Program exited with code ' + exitCode);
});

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

这是Buffer个实例

另请查看NodeBasicFFMPEGffmpeg-nodenode-fluent-ffmpeg

请注意,“data”事件只为您提供了一大块数据,您可能需要使用bufferlist

之类的东西自行重新组装它