我在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
答案 0 :(得分:3)
经过几次测试,我发现了一个错误,错误是由一个太大的文件引起的。