Qt 萤石云视频SDK二次开发

一、注册云平台账号,地址为:https://open.ys7.com/

账号分为个人版和企业版本,最主要的差别是:并发数和网络带宽限制

开发和测试阶段 可以使用个人版,无须费用;正式产品发布的时候根据需要购买企业版即可。

二、下载萤石SDK,地址为:https://open.ys7.com/mobile/download.html 

SDK支持多个平台,Windows 、Mac和Linux   本文主要讲述Windows相关开发要点

三、包含相关的头文件

主要文件如下:

OpenNetStreamDefine.h      OpenNetStreamError.h      OpenNetStreamInterFace.h

INS_ErrorCode.h      backward/OpenNetStreamBackwardWarning.h      backward/OpenNetStreamInterfaceBackward.h

四、包含相关的库文件

主要库文件如下:

AnalyzeData.lib  libeay32.lib  OpenNetStream.lib StunClientLib.lib

AudioIntercom.lib libGetHDSign.lib opensslwrap.lib      SystemTransform.lib

hlog.lib libPPVClient2.lib paho-mqtt3c.lib TTSClient.lib      hpr.lib MidPage.lib PlayCtrl.lib pthreadVC2.lib udt.lib

libCASClient.lib miniupnpc.lib PushClient.lib      libcurl.lib NetStream.lib ssleay32.lib streamclient_lib.lib

五、开发流程

1、配置好账号信息:AppKey、Secret【进入注册的账号页面查看】

2、配置平台地址和授权地址:

<authaddress>https://openauth.ys7.com</authaddress>

<platformadress>https://open.ys7.com</platformadress>

3、初始化萤石SDK

示例代码如下:

CDataStoreMgr* pDS  = CDataStoreMgr::GetDataStoreMgrInstance();

CGeneralSettings* pGeneralSettings = pDS->GetGeneralSettings();

CConstSettings* pConstSettings = pDS->GetConstSettings();

QString strAuthAdd = pConstSettings->m_strAuthAddress;

QString strPlatformAdd = pConstSettings->m_strPlatformAddress;

QString strAppKey = pConstSettings->m_strAppKey;

OpenNetStream* pONS = OpenNetStream::getInstance();

int nRet = pONS->initLibrary(strAuthAdd, strPlatformAdd, strAppKey);
//初始化视频窗口

for each (CVideoWnd* var in m_vectVideoWnds)

{

var->InitLib();

}

注:窗口是初始化主要是为每个窗口分配一个Session,建立一个视频链接的

4、访问AccessToken配置,【注册进入的账号页面有个测试token】,在代码中需要动态获取,最好在过期前一天(有效期7天)跟萤石云平台或者一次更新,

特别留意:频繁请求可能导致封账号

请求token示例代码如下:

QString strRet(“”);

QDateTime dtCur = QDateTime::currentDateTime();

qint64 nCurr = dtCur.toMSecsSinceEpoch();

CConstSettings* pCS = CDataStoreMgr::GetDataStoreMgrInstance()->GetConstSettings();

CGeneralSettings* pGS = CDataStoreMgr::GetDataStoreMgrInstance()->GetGeneralSettings();

qint64 nExpire = pGS->m_nTokenExpireTime;

if (nExpire <= nCurr) //重新请求Token

{

QUrl url(“https://open.ys7.com/api/lapp/token/get”);

QNetworkRequest requestURL(url);

QByteArray paramsByte;

QString strParams = QString(“appKey=%1&appSecret=%2”).arg(pGS->m_strAppKey).arg(pGS->m_strSecret);

paramsByte = strParams.toUtf8(); QNetworkReply* pReplay = m_networkMgr.post(requestURL,paramsByte);

}

else

{

strRet = pGS->m_strToken;

}

return strRet;

5、以上步骤都成功了,就可以进行视频控制