#include <QCoreApplication>#include "Link.h"int main(int argc, char *argv[]){QCoreApplication a(argc, argv);//SDK初始化Link::init();//创建视频输入模块LinkObject *vi=Link::create("InputVi");QVariantMap dataVi;//板卡的第一个视频输入接口,详情见文档中关于board.json的介绍dataVi["interface"]=Link::getConfig()["interfaceV"].toMap().firstKey();vi->start(dataVi);//创建音频输入模块LinkObject *ai=Link::create("InputAi");QVariantMap dataAi;//使用和视频通道对应的音频通道dataAi["interface"]=dataVi["interface"];ai->start(dataAi);//创建视频编码模块LinkObject *encV=Link::create("EncodeV");QVariantMap dataEncV;dataEncV["codec"]="h264";dataEncV["width"]=1920;dataEncV["height"]=1080;dataEncV["bitrate"]=4000;encV->start(dataEncV);//创建音频编码模块LinkObject *encA=Link::create("EncodeA");QVariantMap dataEncA;dataEncA["codec"]="aac";dataEncA["samplerate"]=48000;dataEncA["bitrate"]=128;encA->start(dataEncA);//创建封装模块(rtmp)LinkObject *rtmp=Link::create("Mux");QVariantMap dataRtmp;//推流到本地nginx-rtmp服务dataRtmp["path"]="rtmp://127.0.0.1/live/test";rtmp->start(dataRtmp);//连接音频数据流(音频采集->音频编码->封装推流)ai->linkA(encA)->linkA(rtmp);//连接视频数据流(视频采集->视频编码->封装推流)vi->linkV(encV)->linkV(rtmp);//创建本地rtsp服务LinkObject *rtspServer=Link::create("Rtsp");rtspServer->start();//创建封装模块(rtsp)LinkObject *rtsp=Link::create("Mux");QVariantMap dataRtsp;//本地数据的一个内存传输协议(mem://)dataRtsp["path"]="mem://test";dataRtsp["format"]="rtsp";rtsp->start(dataRtsp);//前面已经完成了采集到编码的连接,这里只需要连接后续的数据流//这里rtsp与rtmp的连接方式不同//rtmp、srt、hls以及文件录制这一类的封装是将数据发送到程序外部,所以在Mux模块填写正确的path就完成了//rtsp、udp、webrtc等协议,由于需要将数据继续传递给进程内相应的服务模块,所以还需要执行一步"mux"到"server"的连接。encA->linkA(rtsp)->linkA(rtspServer);encV->linkV(rtsp)->linkV(rtspServer);return a.exec();}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。