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,可以直接在网页检索相应的命令,然后查看例程,掌握用法。
play yuv video
ffplay -pixel_format nv12 -video_size 1920x1080 -framerate 30 out.yuv
yuv转mp4
ffmpeg -f rawvideo -vcodec rawvideo -s 1920x1080 -r 25 -pix_fmt yuv420p -i inputfile.yuv -c:v libx264 -preset ultrafast -qp 0 output.mp4
对所有其他参数的一点解释:
-f rawvideo
你输入格式设置为原始视频容器-vcodec rawvideo
你设置输入文件不压缩-i inputfile.yuv
您设置输入文件-c:v libx264
你设置编码器编码的视频libx264.-preset ultrafast
设置仅加快压缩速度,因此您的文件大小将大于设置的大小veryslow
.-qp 0
你设置最高质量.在我们的例子中,0是最好的,51是最差的质量.- 然后
output.mp4
是您的新容器来存储您的数据.