本文镜像:https://blog.csdn.net/weixin_45326556/article/details/95302329
本文链接:https://www.linkpi.cn/archives/439
描述
海思的芯片功能越来越强大,性能越来越高,性能比已经把国外的同类芯片甩了好几条街。但海思的SDK相对偏向硬件的,对软件人员不算很友好,尤其是初学者,面对纷繁复杂的各种结构体,更是无从下手;网上也有人吐槽说连视频采集时信号采样率是单沿还是双沿都需要软件人员指定,这对于纯软件人员来说,那是一脸懵。想起造就普及型手机辉煌时代的联发科,他们不仅做了芯片,还把软件全都给做了,用户拿回去套个壳就能出货了。灵派科技也许受到了联发科的启发,他们开发了LinkLib
,对海思的SDK
进行了高度封装,并把海思SDK
并不提供的视音频合成(MUX
),还有网络流输出,以及各种视频叠加(OSD
)等等都加入了LinkLib
。灵派科技还提供了基于LinkLib
开发的高清编码器
,并公开了高清编码器
源代码(包括前台和后台的代码),客户可以直接拿高清编码器
的源代码进行修改成自己的产品,或者直接改个LOGO就直接出货也是可行的。
代码示例
下面这42行代码就轻松实现了音视频采集,并对视频进行H264编码压缩,对音频进行AAC编码压缩,然后输出RTMP网络流。如果是在海思SDK上进行开发,没有上万行代码,是搞不定的;海思的sample_venc.c
代码行就有1500,这个例子只是处理视频采集压缩,但并没有处理音频,更不会帮你处理视频和音频的同步问题,网络流输出更无从谈起。因此LinkLib确实大大减少了偏底层的开发工作量,让软件人员专注于业务逻辑。
#include
#include "Link.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Link::init();
LinkObject *vi=Link::create("InputVi");
QVariantMap dataVi;
dataVi["interface"]="HDMI-A";
vi->start(dataVi);
LinkObject *ai=Link::create("InputAi");
QVariantMap dataAi;
dataAi["interface"]="HDMI-A";
ai->start(dataAi);
LinkObject *encv=Link::create("EncodeV");
QVariantMap dataEncV;
dataEncV["codec"]="h264";
dataEncV["bitrate"]=2000;
dataEncV["width"]=1280;
dataEncV["height"]=720;
encv->start(dataEncV);
LinkObject *enca=Link::create("EncodeA");
QVariantMap dataEncA;
dataEncA["codec"]="aac";
dataEncA["bitrate"]=128000;
dataEncA["samplerate"]=48000;;
enca->start(dataEncA);
LinkObject *mux=Link::create("Mux");
QVariantMap dataMux;
dataMux["path"]="rtmp://127.0.0.1/live/test";
mux->start(dataMux);
vi->linkV(encv)->linkV(mux);
ai->linkA(enca)->linkA(mux);
return a.exec();
}
参考
开源高清编码器
源代码:https://gitee.com/LinkPi/Encoder
开源高清编码器
使用说明书: https://gitee.com/LinkPi/Encoder/wikis/pages
开源高清编码器
基于LinkLib编写,LinkLib API
说明参见:https://gitee.com/LinkPi/LinkLib/wikis/pages
开源高清编码器
评估板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-18827270222.6.fa7e6ffdktaeqz&id=579544624529