草庐IT

基于华为云会议SDK 24行代码打造企业专属会议室

华为云官方博客 2023-03-28 原文

华为已经有着超过20年的视频会议产品研发经验,拥有1000多项视频会议、音视频相关的国际和国内专利技术。华为云会议基于全开放的产品定位,将华为云会议的所有产品能力都开放给伙伴,伙伴可以通过集成华为云会议SDK,拥有与华为同等的音视频会议产品能力,然后在自己擅长的领域进行广泛应用,满足教育、医疗、政府、金融、交通等各行业的需求。

本文介绍下如何通过仅24行代码,就将华为近30年音视频领域探索的结晶集成到您自己的应用中。

华为云会议开发性初了解:

华为云会议从服务端和终端两个方面开放了接口。服务端已REST API的方式开放,终端以SDK的方式开放。

华为云会议当前已经提供16类150个左右的接口,涵盖了会议管理、会议控制、云会议室管理、企业管理、用户管理、终端管理等会议业务涉及的方方面面。基于这些REST API您可以将华为云会议的调度管理能力集成到自己的业务系统中。

这些REST API都是无状态的接口,不涉及到复杂的接口组合的问题,可以根据自己的业务需要选择对应接口调用即可。接口的详细说明请参考华为云会议帮助中心上的《服务端API参考》(https://support.huaweicloud.com/api-meeting/meeting_21_0202.html)。

在华为云的API Explorer

https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=Meeting)上可以直接调试这些REST API,不再需要使用postman或者CURL命令。

为了进一步简化后台在Java和Python中调用这些接口的实现难度,我们还对这些API接口封装了Java和Python的函数接口,可以从华为云SDK中心(https://sdkcenter.developer.huaweicloud.com/)下载华为云会议的服务端SDK。

本文余下章节主要介绍华为云会议终端侧的SDK。

华为云会议终端SDK介绍

会议终端侧由于要涉及用户界面、终端外设、音视频媒体、会议流程等很多方面,集成难度上与服务端集成相比要复杂不少。

华为云会议的终端SDK将处理最复杂的音视频媒体、外设管理全部封装起来,为您提供了带会议UI控件的SDK,您也不用关注具体的会议流程。只需要调用大约30行代码调用10个接口即可完成华为云会议终端音视频能力的集成。

华为云会议提供Android、iOS和Windows平台的终端SDK,Mac平台的SDK也即将发布。SDK的详细介绍请参考华为云会议帮助中心上的《客户端SDK参考》(https://support.huaweicloud.com/sdkreference-meeting/meeting_22_0001.html)。

终端SDK提供的能力包括:

1、 视频会议

2、 数据共享

3、 点对点通话

华为云会议终端SDK在简化开发难度的基础上,兼顾了灵活性。会议终端按钮和菜单可以自定义;联系人也可以自定义。

基于华为云会议SDK的开发流程介绍

开发流程介绍:

步骤1:创建企业。需要有华为云会议企业管理员帐号后,才能进行二次开发。参考《开发指南》中的“开发前准备”(https://support.huaweicloud.com/devg-meeting/meeting_20_0002.html)。

步骤2:下载SDK。下载地址:https://support.huaweicloud.com/sdkreference-meeting/meeting_22_0002.html

步骤3:学习《客户端SDK参考》。学习地址:https://support.huaweicloud.com/sdkreference-meeting/meeting_22_0001.html

步骤4:根据接口文档将SDK集成到您自己的App中。

步骤5:调试。

步骤6:发布。

如何基于华为云会议Windows SDK开发一个自己的会议客户端?

下面以Windows平台的终端SDK为例,说明如何将华为云会议的终端侧能力集成到您自己的App中。

1****、初始化示例代码

hwmsdkagent::HwmInitInfo initParam;

strncpy_s(initParam.appId, "hwm_ui_demo", HWM_MAX_APPID_LEN);

strncpy_s(initParam.exePath, "D:\demo\SDK", HWM_MAX_FILE_PATH_LEN);

initParam.notify = notifyObj;

initParam.callback = callbackObj;

//调用初始化接口

int ret = hwmsdkagent::Init(&initParam);

//初始化回调函数
{
//初始化成功后的处理
}

2****、登录示例代码

hwmsdkagent::HwmLoginInfo loginParam;
strncpy_s(loginParam.accountAndPasswordAuthInfo.account, "139571854984

", HWM_MAX_ACCOUNT_LEN);
strncpy_s(loginParam.accountAndPasswordAuthInfo.password, "Change_Me"

, HWM_MAX_PASSWORD_LEN);
loginParam.authType = hwmsdkagent::HWM_AUTH_TYPE_ACCOUNT_AND_PASSWORD;
//调用登录接口
int ret = hwmsdkagent::Login(&loginParam);

//登录回调函数
void demoCallbackProc::OnLoginResult(hwmsdk::HwmErrCode ret, const char* msg)
{
//登录成功后的处理
}

3****、创建会议例代码
hwmsdkagent::HwmCreateConfInfo data;

//设置会议主题
strncpy_s(data.subject, CTools::UNICODE2UTF(CString("我的会议")), HWM_MAX_SUBJECT_LEN);

//设置会议类型
data.mediaType = hwmsdkagent::HWM_VIDEO_AND_DATA
//设置会议是否需要来宾密码
data.needPassword = true;
//调用创会接口
int ret = hwmsdkagent::CreateConf(&data, NULL, 0);

//创会回调函数
void demoCallbackProc::OnCreateConfResult(hwmsdk::HwmErrCode ret, const char* msg)
{
//创会成功后的处理
}

//会议状态通知
void demoNotifyProc::OnConfInfo(HwmConfInfo *confInfo)

{
    //根据会议状态处理自己的业务逻辑
}

创建会议成功后,创会者自动就加入会议了。

4****、加入会议例代码
strncpy_s(data.confId,"989156631", HWM_MAX_CONF_ID_LEN);
strncpy_s(data.password, "807766", HWM_MAX_PASSWORD_LEN);
strncpy_s(data.name, CTools::UNICODE2UTF(CString("杭州会场")), HWM_MAX_DISPLAY_NAME_LEN);
int ret = hwmsdkagent::JoinConfById(&data);

//入会回调函数
void demoCallbackProc::OnJoinConfByIdResult(hwmsdk::HwmErrCode ret, const char* msg)
{
//入会成功后的处理
}

调用上述4个接口,并处理6个回调函数,大约30行左右的代码(不含App本身的业务代码和非会中界面代码),即可集成华为云会议的Windows SDK。

登录界面(仅Demo,实际由您的App提供):

创建会议和加入会议界面(仅Demo,实际由您的App提供):

会中界面(SDK提供):

通过本文,你是否对华为云会议开放性有了一定了解呢?

本文由华为云发布。

有关基于华为云会议SDK 24行代码打造企业专属会议室的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  3. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

  4. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  5. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  6. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  7. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

  8. 程序员如何提高代码能力? - 2

    前言作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以程序员在程序开发过程中的代码能力也是根据平时开发中的业务实践来积累和提升的。提高代码能力核心要素程序员要想提高自身代码能力,尤其是新晋程序员的代码能力有很大的提升空间的时候,需要针对性的去提高自己的代码能力。提高代码能力其实有几个比较关键的点,只要把握住这些方面,就能很好的、快速的提高自己的一部分代码能力。1、多去阅读开源项目,如有机会可以亲自参与开源

  9. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  10. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

随机推荐