diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..f832d5b Binary files /dev/null and b/.DS_Store differ diff --git a/index.js b/index.js index 4abb708..7c6a06c 100644 --- a/index.js +++ b/index.js @@ -70,7 +70,8 @@ JqueryFileUploadMiddleware.prototype.prepareOptions = function (options) { minFileSize: 1, maxFileSize: 10000000000, // 10 GB acceptFileTypes: /.+/i, - imageTypes: /\.(gif|jpe?g|png)$/i, + imageTypes: /\.(gif|jpe?g|png|mp4)$/i, + videoTypes: /\.(mp4|mov|wmv|avi)$/i, imageVersions: { // thumbnail: { // width: 80, diff --git a/lib/uploadhandler.js b/lib/uploadhandler.js index dcd81b2..fc178a4 100644 --- a/lib/uploadhandler.js +++ b/lib/uploadhandler.js @@ -4,7 +4,8 @@ var EventEmitter = require('events').EventEmitter, formidable = require('formidable'), imageMagick = require('imagemagick'), mkdirp = require('mkdirp'), - _ = require('lodash'); + _ = require('lodash'), + ffmpeg = require('fluent-ffmpeg') module.exports = function (options) { @@ -43,6 +44,10 @@ module.exports = function (options) { size: stats.size }); this.initUrls(fileInfo); + + if(options.videoTypes.test(name)) + fileInfo.is_video = true + files.push(fileInfo); } }, this); @@ -96,6 +101,41 @@ module.exports = function (options) { } var generatePreviews = function () { + + if (options.videoTypes.test(fileInfo.name)) { + + var video_path = options.uploadDir() + '/' + fileInfo.name + + + + _.each(options.imageVersions, function (opts, version) { + // var version_dir = options.uploadDir() + '/' + version + '/'; + // creating directory recursive + // if (!fs.existsSync(version_dir)) + // mkdirp.sync(version_dir); + + counter++; + + console.log('video path '+ video_path); + + var proc = new ffmpeg({ + // input source, required + source: video_path + }) + .withSize(opts.width + 'x?') + .takeScreenshots({ + count: 1, + timemarks: ['0'], + filename: '/%b' + }, path.join(options.uploadDir(), version), function(err, filenames) { + console.log('files ' + filenames + ' error ' + err) + finish(); + }) + }); + + + } + if (options.imageTypes.test(fileInfo.name)) { _.each(options.imageVersions, function (value, version) { // creating directory recursive diff --git a/package.json b/package.json index 8ab826b..5757319 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "formidable": ">=1.0.11", "imagemagick": ">=0.1.2", "lodash": ">= 0.9.2", - "mkdirp": ">= 0.3.4" + "mkdirp": ">= 0.3.4", + "fluent-ffmpeg" : "git://github.com/sebbean/node-fluent-ffmpeg.git#master" }, "engines": { "node": ">= 0.8.8"