fluent-ffmpeg图片合成视频

2019-10-19 11:16:46

1.思路

  1. 一张图片做背景图,生成视频总长度的视频

  2. 分别将需要添加的视频逐一添加到视频内

代码如下

生成视频

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]这样使用。

  • 2018-06-04 10:06:43

    mysql查询数据的同时对它进行删除操作

    今天遇见一个问题,需要把mysql数据库里面的 商品主表 和它的每一个条目对应不上的数据给全部删除(数据如下图);也就是整理一下数据库里的数据保证数据的可用;

  • 2018-06-19 16:39:03

    java缩放图片、java裁剪图片代码工具类

    在系统的上传图片功能中,我们无法控制用户上传图片的大小,用户可能会上传大到几十M小到1k的的图片,一方面图片太大占据了太多的空间,另一方面,我们没办法在页面上显示统一大小的图片。所以我们需要对用户上传的图片进行缩放和裁剪,这里的缩放和平常的压缩不是一个意思,因为要实现小的图片会放大,大的图片会缩小,而且是等比例变的,图片不会显示挤压的效果。而这种操作Java完全可以实现。下面分享下java缩放、裁剪图片的工具类。