做
视频会议系统的时候,会出现将
多路视频合并后
推流输出的功能需求,要直接底层实现这样的功能还是不算容易的,如果借助
ffmpeg就方便很多了,使用
ffmpeg的滤镜功能就能实现
多路合并的效果。
首先说明需要用到的
ffmpeg的哪些对象,以及一些必要的字段。
所用到的头文件:
#include <libavutil/avassert.h>
#include <libavutil/opt.h>
#include <libavfilter/avfilter.h>
Unix shell内核安装:
参考如下两个网址,shell内核用于执行.sh脚本,实现多路视频的同时推流,而不是多源视频合并。
https://www.bbsmax.com/A/Gkz1aDqjzR/
https://www.ibm.com/developerworks/cn/aix/library/au-spunix_cygwin/index.html
shell 脚本(ffmpeg.sh):...
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[out]" -map "[out]" -f flv rtmp://your_streaming_server_url
这个命令将会把两个mp4文件(input1.mp4和input2.mp4)合并成一个
视频流进行
推流。其中`-filter_complex`参数指定了合并
视频并混合音频的操作,`concat`过滤器将两个
视频流合并,`n=2`表示有两个输入
视频流,`v=1`表示输出一个
视频流,`a=1`表示输出一个音频流,`[out]`表示输出流的名字。`-map`参数指定了输出流的名字。最后,`-f`参数指定了输出格式,这里是FLV,然后指定了
推流地址。
你可以根据需要进行修改,例如添加更多的输入
视频流,或者更改输出格式和
推流地址。
【SpringBoot项目集成Swagger2启动报错: Failed to start bean ‘documentationPluginsBootstrapper‘; nested except】