ffmpeg多路视频拼接

https://blog.csdn.net/hjwang1/article/details/108275966

ref:https://blog.csdn.net/a386115360/article/details/89465633

首先放一个两路视频合并的例子

ffmpeg -pix_fmt rgb24 -s 960x960 -i bag_level_7_renderSize_1_960x960_8bits_rgb24i.rgb -pix_fmt rgb24 -s 960x960 -i bag_level_7_renderSize_1_960x960_8bits_rgb24i.rgb -filter_complex "[0:v]pad=iw*2:ih[a];[a][1:v]overlay=w*1" -pix_fmt rgb24 out.rgb

将其拆开一个个解释清楚

-pix_fmt rgb24 -s 960x960 -i bag_level_7_renderSize_1_960x960_8bits_rgb24i.rgb

其作用以次为,指定颜色模式为rgb24、指定分辨率为960x960、指定输入文件名字,第二个输入文件同理

 

-filter_complex "[0:v]pad=iw*2:ih[a];[a][1:v]overlay=w*1"

这个是复杂滤波器的设置,其中[0:v] [1:v]表示输入的第一个和第二个对象的编号。

pad用作边界扩充,iw、ih表示输入视频的width、height。

[0:v]pad=iw*2:ih[a]

此表示将第一个输入视频边界扩充,并将扩充好的命名为[a],方便后面操作。

[a][1:v]overlay=w*1

[a][1:v]表示将[1:v]叠加到[a]上去,并表示其从w*1位置开始,默认是width=w处,h未写,表示为0。

效果如图:

 

参考链接:

1、https://www.jianshu.com/p/1e167271c878

2、https://www.jianshu.com/p/b30f07055e2e

3、http://ffmpeg.org/ffmpeg-filters.html#pad-1

4、http://ffmpeg.org/ffmpeg-filters.html#overlay-1

接下来放一个4个视频组成2x2窗格同时播放的例子

ffmpeg -i indoor.mp4 -i output.mp4 -filter_complex "[0:v]pad=iw*2:ih[a];[a][1:v]overlay=w*1" test.mp4
ffmpeg -i indoor.mp4 -i output.mp4 -filter_complex "[0:v]pad=iw:ih*2[a];[a][1:v]overlay=0:h" test2.mp4

 

ffmpeg -i out1.mp4 -i out2.mp4 -i out3.mp4 -i out4.mp4 -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" out.mp4
[0:v]pad=iw*2:ih*2[a]

将画面扩充为第一个视频的4倍,此时第一个视频放在此画面的左下角,将此时的滤波器命名为[a]。

[a][1:v]overlay=w[b]

将第二个视频叠加在前面已经设好的滤波器之上,其位置x=w,y=0;

[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h

类比可有,第三个视频在左上角,x=0,y=h;第四个视频x=w,y=h。

overlay命令的默认格式就是xy坐标之比,即overlay=x=10:y=10。

如果视频的分辨率不同,可以使用scale函数先将其缩放;如果时间长度不同,可以调用 -t命令控制时间。

[1:v]scale=100:100[video1]

此命令即为尺寸调节命令,将视频尺寸调整为100x100,然后将结果命名为[video1] ,再在此基础上执行后续操作即可。

此处参考文章为https://blog.csdn.net/weiwen12138/article/details/70344681

同时,这是ffmpeg的官方说明手册http://ffmpeg.org/ffmpeg.html,可以直接在网页检索相应的命令,然后查看例程,掌握用法。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告:本课程项目仅供学习参考,请不要直接商用,概不负责任何法律责任。 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习使用FFmpeg开发视频监控项目,并动手操练。具体内容包括: 一、视频监控的架构和流程二、FFmpeg4.3+SDL2+Qt5开发环境的搭建三、FFmpeg的SDK编程回顾总结并操练四、SDL2.0的编程回顾总结并操练五、颜色空间转换RGB和YUV的原理与实战六、Qt5+FFmpeg本地摄像头采集预览实战七、代码封装:摄像头h264/5编码并存储八、Qt5+FFmpeg网络摄像头采集预览九、Qt5+FFmpeg网络摄像头采集预览录制会看十、onvif与GB/T-28181的简介  音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢?   因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。 所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。   梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。  目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值