1.思路
一张图片做背景图,生成视频总长度的视频
分别将需要添加的视频逐一添加到视频内
代码如下
生成视频
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]
这样使用。