nodejs结合node-fluent-ffmpeg 进行视频转换,获取视频缩略图
1、在环境变量path中加入“ ffmpeg安装包bin目录所在路径”(一定要配置、否则没有效果)
配置完后在命令行中测试:>ffmpeg
如果没有效果,需要重启机器。
测试:ffmpeg -i myvideo.flv -vcodec mjpeg -qscale 1 -an output.avi
2、下载nodejs操作ffmpeg的模块:node-fluent-ffmpeg
https://github.com/schaermu/node-fluent-ffmpeg
3、上面链接中带有许多实例,可以直接复制粘贴进行测试
4、下面是测试代码:
/**
* Created with JetBrains WebStorm.
* User: tangzq
* Date: 12-10-24
* Time: 上午10:44
*/
//更改视频属性
var ffmpeg = require('fluent-ffmpeg');
var proc = new ffmpeg({ source: 'video_temp.mp4' })
.withAspect('4:3')
.withSize('640x480')
.applyAutopadding(true, 'white')
.saveToFile('video_aaa.mp4', function(retcode, error) {
console.log('file has been converted succesfully');
});
//获取视频元信息
var Metalib = require('fluent-ffmpeg').Metadata;
// make sure you set the correct path to your video file
var metaObject = new Metalib('obm.flv');
metaObject.get(function(metadata, err) {
console.log(require('util').inspect(metadata, false, null));
});
//视频转换1
var ffmpeg = require('fluent-ffmpeg');
var proc = new ffmpeg({ source: '/path/to/your_movie.avi' })
.withVideoBitrate(1024)
.withVideoCodec('divx')
.withAspect('16:9')
.withFps(24)
.withAudioBitrate('128k')
.withAudioCodec('libmp3lame')
.withAudioChannels(2)
.addOption('-vtag', 'DIVX')
.toFormat('avi')
.saveToFile('/path/to/your_target.avi', function(retcode, error) {
console.log('file has been converted succesfully');
});
//视频转换2
var ffmpeg = require('fluent-ffmpeg');
var proc = new ffmpeg({ source:'obm.flv' })
.withVideoCodec('mjpeg')
.toFormat('avi')
.saveToFile('my_target.avi', function (retcode, error) {
console.log('file has been converted succesfully');
});
//生成缩略图1
var ffmpeg = require('fluent-ffmpeg');
var proc = new ffmpeg({ source: 'obm.flv' })
.withSize('600x600')
.takeScreenshots({
count: 2,
timemarks: [ '0.5', '1' ]
}, 'test', function(err, filenames) {
console.log(filenames);
console.log('screenshots were saved');
});
//生成缩略图2
var ffmpeg = require('fluent-ffmpeg');
var proc = new ffmpeg({ source: 'obm.flv' })
.withSize('300x300')
.takeScreenshots({
count: 2,
timemarks: [ '50%', '75%' ],
filename: '%b_screenshot_%w_%i'
}, 'test', function(err, filenames) {
console.log(filenames);
console.log('screenshots were saved');
});
//音频转换
var ffmpeg = require('fluent-ffmpeg');
var proc = new ffmpeg({ source: 'style.mp3', priority: 10 })
.withAudioCodec('libvorbis')
.toFormat('ogg')
.saveToFile('style.ogg', function(retcode, error) {
console.log('file has been converted succesfully');
});