Record
该示例程序演示了如何编码并封装一个可回放的文件,实现一个文件录制的功能。
该示例包含了音视频编码模块,以及音视频编码参数设置的代码片段,可以适用于大量场景。
准备工作
•参照用户手册搭建开发环境、编译3531D工程、配置网络启动参数。
•将带有HDMI音视频输出功能的设备(如摄像机、笔记本、机顶盒等)接入评估板的HDMI-A接口
•上电,进入/root/demo目录
•运行Record程序
•按任意键停止录制
•将得到的test.mp4文件使用播放器播放(VLC、MPlayer等),如播放出现黑屏,可能是虚拟机导致的,可以将文件拷贝到windows主机再播放。
运行结果
源程序
//main.cpp
#include <QCoreApplication>
#include "Link.h"
#include <stdio.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Link::init();
LinkObject *ai=Link::create("InputAi");
QVariantMap dataAi;
dataAi["interface"]="HDMI-A";
ai->start(dataAi);
LinkObject *vi=Link::create("InputVi");
QVariantMap dataVi;
dataVi["interface"]="HDMI-A";
vi->start(dataVi);
LinkObject *encA=Link::create("EncodeA");
QVariantMap dataEncA;
dataEncA["codec"]="aac";
dataEncA["samplerate"]=48000;
dataEncA["bitrate"]=32;
encA->start(dataEncA);
LinkObject *encV=Link::create("EncodeV");
QVariantMap dataEncV;
dataEncV["codec"]="h264";
dataEncV["width"]=1920;
dataEncV["height"]=1080;
dataEncV["bitrate"]=4000;
encV->start(dataEncV);
LinkObject *mp4=Link::create("Mux");
QVariantMap dataMP4;
dataMP4["path"]="test.mp4";
ai->linkA(encA)->linkA(mp4);
vi->linkV(encV)->linkV(mp4);
mp4->start(dataMP4);
qDebug()<<"Press any key to stop";
getchar();
mp4->stop();
return a.exec();
}