上周,鱼哥和几个移动开发者吃饭闲聊,都聊到如今开发音视频产品,门槛较之前大大降低。2021年初,随着马斯克在应用 Clubhouse 中开麦输出,谈比特币,谈火星移民,谈脑机接口。Clubhouse 这款语聊房应用迅速在中国市场掀起一股浪潮。在创业公司打拼的老马,一直做的 Android 应用开发。老板希望把类似 Clubhouse 的玩法,作为他们新业务线。他开始了漫漫选型路。
其实,在国内得益于通信云服务商的底层建设,即使没有相关垂直经验,想要做一款语聊房产品切入这个市场也不是天方夜谭。难的是,怎么能达到老板对速度的要求。
语聊房产品要用到IM(即时通讯)RTC(实时音视频) 两大能力,面对的是几百个语焉不详的API。光是集成这两个模块,就已经耗尽了心力、掉光了头发。
不过,老马还能出来跟我们侃大山,是因为他已经找到了捷径,他正对接一家服务商,顺利的话一周就能“完成KPI,奖金到手来”了。
鱼哥以为他吹牛,因为我印象中的音视频业务总体还是很复杂,各种麦位管理,声音实时性,低延时等要求。其实并不怎么相信~
详细追问下,我才了解到是集成了PaaS厂商融云的SDK。说起融云,我是很有印象的,他的创始团队都是以前开发“飞信”的核心人物,在通信领域那是杠杠的。融云基于强大的 IM 和 RTC 优势,很早就推出了封装基础通信能力的SDK,并且在持续打磨精进。为了降低广大开发者的使用难度,融云投入大量资源,开发了针对热门场景的一揽子解决方案。把复杂的事情简单化。
融云语聊房SDK,就是老马选用的解决方案,满足了语聊房场景绝大多数的需求,还覆盖一系列衍生场景的实际需求。【融云全球互联网通信云】公众号有写:
“11月初时,融云基于场景化的语聊房Demo & SDK 2.0正式上线,新增了连麦PK和语音电台二大主流场景,以及房间浮窗显示、滑动切换房间、发送语音消息、礼物全服广播和设置房间屏蔽词等实用功能,覆盖时下所有热门语聊房场景。”
来给大家看看效果是什么样的?
我去他们官网研究了下,的确非常简单,大大降低了开发的时间成本和资金成本。能快速实现业务需求。
比如,第一步直接集成语聊房SDK就行,不用单独集成IM 和 RTC
再比如,核心API不超过20个,核心回调不超过5个
又比如:可以直接在融云的开发者后台找到“开启审核”配置,点击配置,意味着一键接入第三方专业内容审核平台,从根本上杜绝了恶意传播非法内容的可能。
功能强大对开发者来说只是满足了最基本的需要。而最引起鱼哥关注的是“7天上线”。这个速度,简直不可想象。
为此,鱼哥与融云场景化研发负责人臧其龙深入地聊了聊。
臧其龙介绍说,融云可以帮助开发者抢跑赛道的关键点在于,不仅开放源码,还在这之上将混杂无章的源码按语聊房场景的业务逻辑封装成SDK,并提供直观的API接口。这样,开发者无需理解底层技术逻辑,只要对这个业务有基本了解,知道什么是创建房间,离开房间;什么是上麦、什么是下麦,就能够快速完成开发。
鱼哥调看了下融云的开发文档,创建房间的代码是这样的,的确简洁易懂。示例代码如下:
/// 创建一个 RCVoiceRoomInfo 实例

RCVoiceRoomInfo rcVoiceRoomInfo = new RCVoiceRoomInfo();

/// 设置房间名称

rcVoiceRoomInfo.setRoomName(roomName);

/// 设置麦位数量

rcVoiceRoomInfo.setSeatCount(9);

///设置上麦模式(ture是自由上麦 
false
为申请上麦)

rcVoiceRoomInfo.setFreeEnterSeat(
false
);

///设置全麦锁座

rcVoiceRoomInfo.setLockAll(
false
);

///设置全麦锁麦

rcVoiceRoomInfo.setMuteAll(
false
);

// roomId 是您的业务服务器返回的

RCVoiceRoomEngine.getInstance().createAndJoinRoom(roomId, rcVoiceRoomInfo, new  
RCVoiceRoomCallback
() {

    @Override

    public void 
onSuccess
() {

        //创建成功,自动加入房间

    }


    @Override

    public void onError(int code, String message) {

        //创建失败

    }

});

对于开发者最为关心的,一款语聊房如何实现,以及功能的好坏,其关键技术点有三个:KV聊天室属性信令SDKAPI设计,鱼哥也请臧其龙进行了详细解答。

KV聊天室属性

KV聊天室属性,提供麦位状态的云端存储和通知的同步能力,可在20-40毫秒内,快速同步任何数据库的增删改查,满足包括直播室连麦、语音聊天室连麦、游戏连麦等各种语聊场景中,不同麦位对应不同角色的同步能力,以及随时切换的时序能力。

信令SDK

信令SDK,保证有序性。在邀请和请求上麦场景中,既能避免因频繁上下麦所产生的杂乱,也能保证申请上麦的先来先上,后到后上,使用户体验更顺畅。
这两点,对自研开发者来说难度都较大,却是一个语聊房产品能否研发成功的关键技术点。
而语聊房产品研发出来,到底好不好用,API设计是第三个关键技术点,臧其龙称其为“产品门面”。

API设计

API设计:核心在于符合用户的使用习惯,最自然的才是最合理的。例如:上麦就应该可以发语音,而下麦则只能听语音。
为了方便使用,融云一方面精简SDK,将API总数控制在20个以内,从而降低用户的学习成本。另一方面,在模型的设计上给予了用户极大自由度的扩展属性,从而满足用户的各种创意十足的需求,使功能的强大性和覆盖场景的多样性,二者兼得。
鱼哥发现,自今年6月融云语聊房1.0推出以来,市场上已经开始出现不同名称,但本质趋同的产品形态,比如voice Demo、k歌房Demo等。
对于开发者来说,又该如何评判和选择呢?融云还有优势吗?鱼哥仔细查看了这些Demo的实现逻辑,发现融云还是有一定优势的。在开发难度上,“第三代 SDK 只需理解产品概念即可,无论是基于 SDK 开发,还是基于样例开发,都能轻松掌握。”
意思就是说,融云的场景化语聊房 SDK 是第三代解决方案,最大的特点就是:将与场景相关的所有能力集合封装,不用再分别调用IMRTC SDK
而第二代解决方案,是目前其他厂商在用的方式,开发难度上,是需要开发者先理解IM 和RTC的底层逻辑,然后还要面对几百个API,在源码基础上再进行二次开发。
在实现逻辑上,第三代比第二代更简单,省去了大量的对底层逻辑学习的过程。
鱼哥还了解到一个真实的小案例:
“开发者先用某厂提供的第二代方案进行二开,过程中却发现很多问题难以解决,切换成融云语聊房 SDK 2.0,结果,之前将近三个月都没搞定的项目,只用两周就完成了产品上线。”
臧其龙说,语聊房1.0上线以来,短短5个月的时间里,对接的20家客户中,就有10款APP应用交付上线。他自己每天都在技术支持群里与开发者交流,最大的欣慰是开发者的反馈:
“只阅读注释和 API的名字,就能基本掌握用法,学习成本真的很低,开发效率真的很高。”

融云语聊房3.0还将有哪些新功能?

接下来,融云语聊房3.0还将有哪些新功能?大家搬好小板凳坐好,鱼哥现在可以“透露”下~ 与上半界面麦位用户相关的发送礼物、发送表情、聊天室信息接收等相关功能,会进一步完善,推出一系列高性能的Kit组件,比如礼物Kit、异步渲染的聊天室Kit
这里重点可以关注下融云自研的聊天室全异步渲染框架,利用这个框架,可以保证在非常低端的手机上也能跑满帧,带给用户非常流畅的APP使用交互体验。出海的开发者要考虑不同区域的终端用户手机的差异会非常大,如果在不发达国家,低端手机占有率比较高,那么全异步渲染框架会是一个很好的选择。
未来6个月内,融云还将开源8-10个高性能的UI框架,同时满足iOS端和Android端,让开发者可以更方便地对接场景化SDK,快速构建高质量的产品。
除了语聊房3.0之外,会议Meeting、1V1在线陪聊、在线教育的场景化SDK 都在融云下一阶段的产品路线图上。
最后,如果让鱼哥用一个词总结这样的开发体验,那就是“搭积木”。融云提供源码及之上封装好的SDK,相当于提供的积木,让开发者可以真正实现“开箱,即插即用”,从0-1,最短7天,一般三周也可以上线一款功能完整的语聊房产品。
开发者,尤其是中小企业的开发者,不必自建,不再为复杂的逻辑架构绞尽脑汁,更无需把时间耗费在反复的写代码、改Bug中。一句话,天空飘来五个字,coding不是事儿。
有兴趣的开发者可以免费注册体验。扫码即可体验~
继续阅读
阅读原文