nathanpeck / exiftool

A Node.js wrapper around exiftool, providing metadata extraction from numerous audio, video, document, and binary filetypes
MIT License
81 stars 26 forks source link

"Error: write EOF" with Gopro MP4 files (large / no metadata?) - fix with stdin error handler #13

Open phhu opened 8 years ago

phhu commented 8 years ago

When attempted to get data from a Gopro MP4 file, I sometimes get an error like this ;

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: write EOF
    at Object.exports._errnoException (util.js:870:11)
    at exports._exceptionWithHostPort (util.js:893:20)
    at WriteWrap.afterWrite (net.js:763:14)

This can be fixed by adding a handler like this to exiftool.js :

  exif.stdin.on("error", function (data) {
    errorMessage += data.toString();
  });

...which makes exiftool return gracefully.

Code used for testing was

var exif = require('exiftool');
var fs   = require('fs');

function getVideoMetadata(videoPath){
    return new Promise (function(resolve,reject){
        fs.readFile(videoPath, function (err, data) {
            if (err) {reject(err);}
            exif.metadata(data, function (err, metadata) {
                if (err){reject(err);}
                resolve(metadata);          
            });
        }); 
    });
};

getVideoMetadata("C:\\temp\\videos\\GOPR0333.MP4")   
.then(function(md){
    console.log(md.rotation);
}).catch(function(e){
    console.log("errored", e);
})