使用fluent-ffmpeg将图片合成视频并简单添加过渡效果(一)
思路
- 一张图片做背景图,生成视频总长度的视频
- 分别将需要添加的视频逐一添加到视频内
code
生成视频
ffmpeg(image1) //图片文件
.loop(5)
.videoBitrate('2048k')
.videoCodec('mpeg4')
.on('end', function() {
console.log('video one end')
})
.on('error', function(error) {
console.log('an error happend: create one video' + error)
})
.save('./images/test_output1.mp4') //输出的第一个视频文件
插入图片到视频
.input(videoOne) //第一个视频
.input(image2)
.complexFilter(["[0:v][1:v]overlay=x='if(gte(t,1), -w+(t-1)*800,NAN)':y=0"]) // 当时间大于1s 图片从左到右
.videoCodec('mpeg4')
.outputOptions('-b:v 4096k')
.on('end', function() {
console.log('video two end')
})
.on('error', function(error) {
console.log('an error happend: create two video' + error)
})
.save(videoTwo)
一个问题
ffmpeg -i ./images/output1.mp4 -loop 1 -t 1 -i ./images/2.jpg -filter_complex "
overlay=x='if(gte(t,1), -w+(t-1)*800,NAN)':y=0" -b:v 2048k -vcodec mpeg4 -y ./images/output3.mp4
如果直接用ffmpeg指令,fliter里直接写overlay就行了,但是使用fluent-ffmpeg同样的写法图片就怎么也合成不到视频中去,只是1s的单独视频,需要
[0:v][1:v]
这样使用。
*ffmpeg 初学当中 *