FFmpeg将两个视频放在一个画布并以rtmp流输出
程序员文章站
2022-03-17 14:32:57
...
1、将其中一个视频置于画布右下角(这种情况直播用的最多,这也是我用FFmpeg想要实现的效果)
命令如下:
./ffmpeg -i 飞驰人生HD国语中字.mkv -i 小丑BD中英双字.mp4 -filter_complex \
"[0:v]scale=1080:720[a];[1:v]scale=250*200[b];[a][b]overlay=(main_w-overlay_w):(main_h-overlay_h-100)" \
-f flv rtmp://132.232.44.239:1945/live/345
其中两个视频文件.mkv和.mp4视频文件可自定义,也可换成两个视频输入流rtmp流。
(1)./ffmpeg我是用的srs下面的ffmpeg,没有通过源代码单独编译安装。
(2)-i参数是设置输入文件
(3)-filter_complex 参数是设置复杂过滤器
(4)[0:v]scale=1080:720[a]的意思是0表示第一个文件,而v表示视频文件(a表示音频),因此合在一起表示第一个视频文件,scale就是字面意思,表示大小,这个表达式的意思就是将第一个视频文件的大小设为1080*720,后面的[a]表示将大小设定后的视频文件标记为a(主要是方便后面引用这个视频文件)。
(5)[1:v]scale=250*200[b]同上面(4)
(6)[a][b]overlay=(main_w-overlay_w):(main_h-overlay_h-100):overlay的意思就是覆盖,[a]在[b]的前面表示b覆盖在a的上面并设定覆盖视频文件的位置坐标是(main_w-overlay_w):(main_h-overlay_h-100),其中main_w表示被覆盖视频的宽度(a的宽度),overlay_w表示覆盖视频的宽度(b的宽度),后面高度同理。这个位置坐标可根据自己需求自行设定。
(7)将转换的视频通过rtmp输出到rtmp://132.232.44.239:1945/live/345这个地址。