diff options
| author | Pascal Temel <[email protected]> | 2017-02-07 00:53:22 +0100 |
|---|---|---|
| committer | Pascal Temel <[email protected]> | 2017-02-07 00:53:22 +0100 |
| commit | facf4a29fc63f381d9e812ab3fc5c0b99c9c81ce (patch) | |
| tree | 293b8decf33f61ce68b23459fcf9e1064c2c7b23 /controllers/uploadController.js | |
| parent | Remove .DS_Store files (#6) (diff) | |
| download | host.fuwn.me-facf4a29fc63f381d9e812ab3fc5c0b99c9c81ce.tar.xz host.fuwn.me-facf4a29fc63f381d9e812ab3fc5c0b99c9c81ce.zip | |
support thumbnails for .webm and .mp4 files
Diffstat (limited to 'controllers/uploadController.js')
| -rw-r--r-- | controllers/uploadController.js | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/controllers/uploadController.js b/controllers/uploadController.js index f9abf50..1e1efe5 100644 --- a/controllers/uploadController.js +++ b/controllers/uploadController.js @@ -6,6 +6,7 @@ const db = require('knex')(config.database) const crypto = require('crypto') const fs = require('fs') const gm = require('gm') +const ffmpeg = require('fluent-ffmpeg') let uploadsController = {} @@ -246,30 +247,45 @@ uploadsController.list = function(req, res){ if(config.uploads.generateThumbnails === true){ - let extensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png'] + let extensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png', '.webm', '.mp4'] for(let ext of extensions){ if(path.extname(file.name) === ext){ - file.thumb = basedomain + '/thumbs/' + file.name.slice(0, -4) + '.png' + file.thumb = basedomain + '/thumbs/' + file.name.slice(0, -ext.length) + '.png' - let thumbname = path.join(__dirname, '..', 'uploads', 'thumbs') + '/' + file.name.slice(0, -4) + '.png' + let thumbname = path.join(__dirname, '..', config.uploads.folder, 'thumbs') + '/' + file.name.slice(0, -ext.length) + '.png' fs.access(thumbname, function(err) { if (err && err.code === 'ENOENT') { // File doesnt exist - let size = { - width: 200, - height: 200 + if (ext === '.webm' || ext === '.mp4') { + ffmpeg('./' + config.uploads.folder + '/' + file.name) + .thumbnail({ + timestamps: [0], + filename: '%b.png', + folder: './' + config.uploads.folder + '/thumbs', + size: '200x?', + autopad: true + }) + .on('error', function(error) { + console.log('Error - ', error.message) + }) + } + else { + let size = { + width: 200, + height: 200 + } + + gm('./' + config.uploads.folder + '/' + file.name) + .resize(size.width, size.height + '>') + .gravity('Center') + .extent(size.width, size.height) + .background('transparent') + .write(thumbname, function (error) { + if (error) console.log('Error - ', error) + }) } - - gm('./' + config.uploads.folder + '/' + file.name) - .resize(size.width, size.height + '>') - .gravity('Center') - .extent(size.width, size.height) - .background('transparent') - .write(thumbname, function (error) { - if (error) console.log('Error - ', error) - }) } }) } |