我正在为用户开发视频存储服务,我需要在保存大型视频(例如4K)之前将其压缩为1080p。是否有一个JS库(浏览器或Node)可以帮助完成此任务?也许是网络服务?
我也接受语言建议。
答案 0 :(得分:3)
在缩减视频尺寸时,最容易使用的选项是ffmpeg。
有一个软件包可以使在node.js中使用ffmpeg更容易:https://www.npmjs.com/package/fluent-ffmpeg
例如,将视频缩减为1080p和720p:
var ffmpeg = require('fluent-ffmpeg');
function baseName(str) {
var base = new String(str).substring(str.lastIndexOf('/') + 1);
if(base.lastIndexOf(".") != -1) {
base = base.substring(0, base.lastIndexOf("."));
}
return base;
}
var args = process.argv.slice(2);
args.forEach(function (val, index, array) {
var filename = val;
var basename = baseName(filename);
console.log(index + ': Input File ... ' + filename);
ffmpeg(filename)
.output(basename + '-1280x720.mp4')
.videoCodec('libx264')
.size('1280x720')
.output(basename + '-1920x1080.mp4')
.videoCodec('libx264')
.size('1920x1080')
.on('error', function(err) {
console.log('An error occurred: ' + err.message);
})
.on('progress', function(progress) {
console.log('... frames: ' + progress.frames);
})
.on('end', function() {
console.log('Finished processing');
})
.run();
});
(来源:https://gist.github.com/dkarchmer/635496ff9280011b3eef)
您不需要任何节点包即可运行ffmpeg,可以在node.js中使用child_process
API。
必须在运行您的应用程序的服务器上安装ffmpeg软件包。