Fix #19: support for MTS files, with full-frame mp4 export

pull/21/head
Romain Prieto 10 years ago
parent 92c6d6b9d3
commit c72f46e463

Binary file not shown.

@ -19,6 +19,7 @@
"url": "https://github.com/rprieto/thumbsup.git"
},
"scripts": {
"clean": "rm -rf _site/*",
"example": "node bin/thumbsup --config example.json",
"open": "open _site/index.html"
},

@ -32,7 +32,7 @@ exports.build = function(opts) {
buildStep({
message: 'Original media',
ext: 'jpg|jpeg|png|mp4|mov',
ext: 'jpg|jpeg|png|mp4|mov|mts',
dest: '/original/$path/$name.$ext',
func: fs.copy
}),
@ -52,22 +52,22 @@ exports.build = function(opts) {
}),
buildStep({
message: 'Videos (web)',
ext: 'mp4|mov',
message: 'Videos (resized)',
ext: 'mp4|mov|mts',
dest: '/large/$path/$name.mp4',
func: thumbs.videoWeb
}),
buildStep({
message: 'Videos (poster)',
ext: 'mp4|mov',
ext: 'mp4|mov|mts',
dest: '/large/$path/$name.jpg',
func: thumbs.videoLarge
}),
buildStep({
message: 'Videos (thumbs)',
ext: 'mp4|mov',
ext: 'mp4|mov|mts',
dest: '/thumbs/$path/$name.jpg',
func: thumbs.videoSquare
}),

@ -27,7 +27,7 @@ exports.update = function(opts, callback) {
nonull: false,
nocase: true
};
glob('**/*.{jpg,jpeg,png,mp4,mov}', globOptions, callback);
glob('**/*.{jpg,jpeg,png,mp4,mov,mts}', globOptions, callback);
}
function pathAndDate(filePath, next) {
@ -78,7 +78,7 @@ exports.update = function(opts, callback) {
}
function mediaType(fileInfo) {
return fileInfo.relative.match(/\.(mp4|mov)$/i) ? 'video' : 'photo';
return fileInfo.relative.match(/\.(mp4|mov|mts)$/i) ? 'video' : 'photo';
}
findFiles(function(err, files) {

@ -1,4 +1,5 @@
var exec = require('child_process').exec;
var path = require('path');
var gm = require('gm');
var async = require('async');
@ -27,7 +28,13 @@ exports.photoLarge = function(src, dest, callback) {
// Web-streaming friendly video
exports.videoWeb = function(src, dest, callback) {
var ffmpeg = 'ffmpeg -i "' + src + '" -vcodec libx264 -ab 96k -vb 1200k -y "'+ dest +'"';
var ffmpeg = 'ffmpeg -i "' + src + '" -y "'+ dest +'" -f mp4 -vcodec libx264 -ab 96k';
// AVCHD/MTS videos need a full-frame export to avoid interlacing artefacts
if (path.extname(src).toLowerCase() === '.mts') {
ffmpeg += ' -vf yadif=1 -qscale:v 4';
} else {
ffmpeg += ' -vb 1200k';
}
exec(ffmpeg, callback);
};

Loading…
Cancel
Save