Mix
该示例程序演示如何对多路输入源进行画面混合并输出。
同时,该示例也演示了如何进行音频混音的操作。
准备工作
•参照用户手册搭建开发环境、编译3531D工程、配置网络启动参数。
•将带有HDMI音视频输出功能的设备(如摄像机、笔记本、机顶盒等)接入评估板的HDMI-A、HDMI-B接口
•将评估板的HDMI-OUT接电视机或带有耳机孔的显示器(支持1080P即可,程序默认输出1080P60)。
•上电,进入/root/demo目录
•运行Mix程序
运行结果
源程序
//main.cpp
#include <QCoreApplication>
#include "Link.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Link::init();
LinkObject *ai_1=Link::create("InputAi");
QVariantMap dataAi_1;
dataAi_1["interface"]="HDMI-A";
ai_1->start(dataAi_1);
LinkObject *ai_2=Link::create("InputAi");
QVariantMap dataAi_2;
dataAi_2["interface"]="HDMI-B";
ai_2->start(dataAi_2);
LinkObject *vi_1=Link::create("InputVi");
QVariantMap dataVi_1;
dataVi_1["interface"]="HDMI-A";
vi_1->start(dataVi_1);
LinkObject *vi_2=Link::create("InputVi");
QVariantMap dataVi_2;
dataVi_2["interface"]="HDMI-B";
vi_2->start(dataVi_2);
LinkObject *mixA=Link::create("MixA");
QVariantMap dataMixA;
dataMixA["main"]=ai_1->name();
mixA->start(dataMixA);
LinkObject *mixV=Link::create("MixV");
QVariantMap dataMixV;
QVariantList srcs;
QVariantList layouts;
QVariantMap lay;
lay["x"]=0;
lay["y"]=0;
lay["w"]=0.6;
lay["h"]=0.6;
lay["a"]=1;
lay["index"]=0;
layouts<<lay;
lay["x"]=0.4;
lay["y"]=0.4;
lay["index"]=1;
layouts<<lay;
dataMixV["layout"]=layouts;
srcs<<vi_1->name()<<vi_2->name();
dataMixV["src"]=srcs;
mixV->start(dataMixV);
LinkObject *vo=Link::create("OutputVo");
QVariantMap dataVo;
dataVo["type"]="hdmi";
vo->start(dataVo);
LinkObject *ao=Link::create("OutputAo");
QVariantMap dataAo;
dataAo["interface"]="HDMI-OUT";
ao->start(dataAo);
ai_1->linkA(mixA);
ai_2->linkA(mixA)->linkA(ao);
vi_1->linkV(mixV);
vi_2->linkV(mixV)->linkV(vo);
return a.exec();
}