Node.js - 错误:写EPIPE代码:' EPIPE

时间:2014-10-30 15:37:00

标签: node.js ffprobe node.js-stream

我在stdin流上一直收到EPIPE错误,我找不到原因:

这是我的代码:

var checkFile = function(data, callback){
   var child_process = spawn('ffprobe', ['-print_format', 'json', '-show_format', 'pipe:0']);

   var stdInError = function(e) {
       console.log(e);
   }
   child_process.stdin.on('error', stdInError);

   var generalError = function() {
       console.log("general Error" + "\n");
   }
   child_process.on('error', generalError);

   child_process.stdout.on('data', function(data){
        console.log("data" + "\n");
        console.log(data);
        console.log("\n");
   });

   child_process.on('close', function(){
       console.log("close" + "\n");
   }

   var exit = function(){
       console.log("exit");
   }
   child_process.on('exit', exit);

   console.log("write" + "\n");
   child_process.stdin.write(data);
   child_process.stdin.end();
};

这是我的输出:

write

data

<Buffer 7b 0a 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 7b 0a 20 20 20 20 20 20 20 20 22 66 69 6c 65 6e 61 6d 65 22 3a 20 22 70 69 70 65 3a 30 22 2c 0a 20 20 20 ...>

data

<Buffer 0a 7d 0a>

{ [Error: write EPIPE] code: 'EPIPE', errno: 'EPIPE', syscall: 'write' }

exit
close

我找不到这个错误的原因,我也试图实现

child_process.stderr.on('data', function (data) {
    //throw errors
    console.log('stderr: ' + data);
});

从ffprobe打印的每一行(用于检查音频/视频文件规格的软件)都标记为stderr。例如:

stderr:ffprobe 2.2.4版权所有(c)2007-2014 FFmpeg开发人员 建于2014年7月2日15:07:45,Apple LLVM版本5.1(clang-503.0.40)(基于LLVM 3.4svn)   配置: - prefix = / usr / local / Cellar / ffmpeg / 2.2.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc = clang --host-cflags = --host-ldflags = --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable -libfreetype --enable-libtheora --enable-libvorbis --enable-libvpx --enable-librtmp --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-aacenc --enable-libass - enable-ffplay --enable-libspeex --enable-libschroedinger --enable-libfdk-aac --enable-libopus --enable-frei0r --enable-libopenjpeg --extra-cflags =' - I / usr / local / Cellar /openjpeg/1.5.1_1/include/openjpeg-1.5'   libavutil 52. 66.100 / 52. 66.100

stderr:libavcodec 55. 52.102 / 55. 52.102   libavformat 55. 33.100 / 55. 33.100   libavdevice 55. 10.100 / 55. 10.100   libavfilter 4. 2.100 / 4. 2.100   libavresample 1. 2. 0 / 1. 2. 0   libswscale 2. 5.102 / 2. 5.102   libswresample 0. 18.100 / 0. 18.100   libpostproc 52. 3.100 / 52. 3.100

1 个答案:

答案 0 :(得分:3)

经过几次测试,我发现了一个错误,错误是由一个太大的文件引起的。

相关问题