前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10——FFmpeg实现多宫格

10——FFmpeg实现多宫格

作者头像
视界音你而不同
发布2020-04-10 15:01:27
1.7K0
发布2020-04-10 15:01:27
举报
你好,欢迎回来,上一期我们学习了如何使用FFmpeg命令行实现画中画的效果!本期,酷炫升级,我们来使用FFmpeg命令行来实现一下画面多宫格的效果!一说到多宫格,相信我们的第一反应是九宫格,不过呢,由于使用FFmpeg命令行实现九宫格的参数实在太臃肿,我们案例中实现四宫格的效果,也足够酷炫哦!好了,接下来言归正传:

一、命令行参数

代码语言:javascript
复制
ffmpeg  -re  -i  test.mp4 -re  -i test.mp4 -re  -i  test.mp4 -re  -i  test.mp4 -filter_complex "nullsrc=size=1920x1080 [base];[0:v] setpts=PTS-STARTPTS,scale=960x540 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=960x540 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=960x540 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=960x540 [lowerright];[base][upperleft] overlay=shortest=1[tmp1]; [tmp1][upperright] overlay=shortest=1:x=960 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=540 [tmp3];[tmp3][lowerright] overlay=shortest=1:x=960:y=540" -c:v libx264 out_1080p.mp4

二、参数解释

-re -i : 在实现多宫格的过程中,如此表示多个输入,其后写视频文件名即可

-filter_complex: 表示使用复合滤镜,其后引号中内容为滤镜的具体参数

nullsrc: 理解为画布,也就是我们要把所有的视频画到该画布上,参数中指定其大小

[n:v]: 表示第n个视频的参数, setpts表示pts的设置方式,scale表示该视频的缩放大小,[upperleft]指出第n个视频所对应的标签,此例中n为0,1,2,3

接下来,请仔细看喽:

首先在[base]上,加入[upperleft]的内容,使用overlay滤镜,滤镜叠加起始位置为(0,0)(不填默认为原点)后,产生新的标签tmp1;

基于[tmp1],与[upperright]使用overlay再次叠加,产生标签[tmp2];

基于[tmp2], 与[lowerleft]使用overlay再次叠加,产生标签[tmp3];

基于[tmp3], 与[lowerright]使用overlay再次叠加,所有4个标签构建完成。

-c:v 指出合成之后的视频使用何种编码方式

三、实战

由于参数臃肿,就不一一手敲了,大家看看命令执行的效果:

四、效果

好了,今天这一期就到这里了,欢迎小伙伴们下期光临,也别忘了多多练习哦!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 视界音你而不同 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档