从零到一,使用实时音视频 SDK 一起开发一款 Zoom 吧

zoom(zoom.us) 是一款受到广泛使用的在线会议软件。相信各位一定在办公、会议、聊天等各种场景下体验或者使用过,作为一款成熟的商业软件,zoom 提供了稳定的实时音视频通话质量,以及白板、聊天、屏幕共享、PPT放映等常用功能。但是在当今浏览器成为端上主流的时代,实时音视频又怎甘于落后呢?相比于需要安装包的 Zoom,直接在网页上开发一款类似的会议软件肯定会受到更多的关注。当需要开会的时候,直接通过一个链接,大家就可以接入并开始会议了。现在,使用七牛实时音视频的 Web SDK,我们可以将您的想法轻松变为现实。

首先,让我们梳理一下一款Web的在线会议产品需要哪些关键点需要攻破

  • 浏览器兼容性要好,需要支持大部分主流桌面浏览器。

七牛实时音视频基于 Google 在 Chrome 上推行的 WebRTC 协议,目前该协议已经正式写入 Web 标准之中,所有的现代浏览器对其都有很好的兼容性。

  • 通话质量要好,延迟低,清晰度高

不同于传统 WebRTC 采用用户和用户 P2P 的形式进行通信,我们使用了在全球范围内部署的节点作为低延迟的实时互动网络来和各个端上进行 P2P 通信,在保证延迟的同时也保证了通话的质量。

  • 会议功能要丰富,ppt演示、白板、屏幕共享等等我都要

我们的 SDK 提供了丰富的功能列表,满足绝大多数会议场景的需求,理论上使用 SDK 可以完全复刻一个 Web 版本的 zoom。

  • 说了这么多,接入难不难?有没有示例和文档?

当然!目前就可以去体验我们 Web 的 Demo(在桌面浏览器下打开)。https://demo-rtc.qnsdk.com。Demo 的源码也开源在 Github 上供各位参考 https://github.com/pili-engineering/QNRTC-Web

这个 Demo 实现了绝大多数 SDK 直接提供的功能,集成白板/PPT共享/聊天等场景的 Demo 目前还在准备上线中,敬请期待哦。关于接入的具体过程我们下面将会简单地介绍一遍,详细的说明和参考可以移步我们的文档站 https://developer.qiniu.com/rtn/sdk/4412/description-of-web-sdk

开发流程

一个简单的会议产品,一般是通过如下流程:

  • 用户注册/登陆 (开发者自己集成,SDK 只需要用于区分用户的 userID)
  • 创建一个会议房间/加入一个会议房间
  • 采集自己的摄像头/麦克风数据
  • 将采集到的媒体数据发布到房间中
  • 订阅房间里其他人的媒体数据并实时播放
  • 处理用户加入/离开,发布/取消发布

这里简化到 SDK 的各个功能,其实就是 加入房间-采集本地媒体流-发布媒体流-订阅媒体流-事件处理,SDK 对每个步骤都做了简单的封装,使用几行代码即可搞定。

引入 SDK

推荐使用 npm 引入我们的 SDK,直接 npm i pili-rtc-web 即可,或者可以选择直接引入打包好的 js 文件 https://github.com/pili-engineering/QNRTC-Web/blob/master/Release/pili-rtc-web.js

异步处理

实时音视频是一个强异步的场景,各种各样的操作因为涉及到网络都是异步相关的,为了让开发者能够更好地控制代码编写过程中的异步逻辑。SDK 没有使用繁琐的 callback 模式,而是使用了现代 Javascript 的 async/await 或者是 Promise 特性来编写异步代码,尽量避免了开发过程中回调地狱的情况(以下所有 await 代码都假定在一个 async 函数包裹之下)。

加入房间

准备完毕后,第一步,加入房间。说是加入房间,抽象后的说法其实是“什么用户以什么身份加入什么房间”。这里有 3 个未知量:用户标识、身份标识(权限)、房间标识。其实整个加入房间的过程需要的未知量还有很多,比如房间隶属于哪个 APP(应用,不同应用中房间独立)&#

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是基于腾讯实时音视频SDK的Demo,包含UI界面: 1. 首先,你需要在腾讯官网注册账号,开通实时音视频服务,并创建一个应用,获取到SDKAppID和密钥信息。 2. 在Android Studio中创建一个新的项目,并在app/build.gradle文件中添加依赖: ``` dependencies { implementation 'com.tencent.liteav:liteav:latest_version' } ``` 其中,latest_version为实时音视频SDK的最新版本号。 3. 在MainActivity中添加以下代码,初始化腾讯实时音视频SDK: ``` public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private TXLivePlayer mPlayer; private TXLivePusher mPusher; private TXCloudProxy mCloudProxy; private String mSdkAppId = "YOUR_SDK_APP_ID"; private String mUserId = "YOUR_USER_ID"; private String mUserSig = "YOUR_USER_SIG"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化SDK TXLiveBase.getInstance().setLicence(this, "YOUR_LICENCE_URL", "YOUR_LICENCE_KEY"); TXLiveBase.getInstance().setConsoleEnabled(true); mPlayer = new TXLivePlayer(this); mPusher = new TXLivePusher(this); mCloudProxy = new TXCloudProxy(this, mSdkAppId, mUserId, mUserSig); // 设置播放器和推流器的配置 TXLivePlayConfig playConfig = new TXLivePlayConfig(); playConfig.setAutoAdjustCacheTime(true); playConfig.setMaxAutoAdjustCacheTime(5); mPlayer.setConfig(playConfig); TXLivePushConfig pushConfig = new TXLivePushConfig(); pushConfig.setVideoFPS(15); pushConfig.setVideoBitrate(800); pushConfig.setVideoResolution(TXLiveConstants.VIDEO_RESOLUTION_TYPE_360_640); pushConfig.setAudioSampleRate(TXLiveConstants.AUDIO_SAMPLE_RATE_48000); mPusher.setConfig(pushConfig); // 开始预览 TXCloudView cloudView = findViewById(R.id.cloud_view); mPusher.startCameraPreview(cloudView); } @Override protected void onDestroy() { super.onDestroy(); // 释放资源 mPlayer.stopPlay(true); mPlayer = null; mPusher.stopCameraPreview(true); mPusher.stopPusher(); mPusher = null; mCloudProxy.logout(); mCloudProxy = null; } } ``` 在上面的代码中,我们使用TXLivePlayer和TXLivePusher来进行播放和推流操作,使用TXCloudProxy来进行用户登录和注销操作。你需要将YOUR_SDK_APP_ID、YOUR_USER_ID和YOUR_USER_SIG替换为你自己的SDKAppID和密钥信息。你还需要在腾讯官网获取到有效的licence_url和licence_key,并将其替换到上面的代码中。 4. 在布局文件中添加一个TXCloudView,用于预览摄像头的画面: ``` <com.tencent.rtmp.TXCloudView android:id="@+id/cloud_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 5. 运行应用,你将看到摄像头的预览画面。你可以使用TXLivePlayer来播放实时音视频流,使用TXLivePusher来进行推流操作。 以上就是一个基于腾讯实时音视频SDK的Demo,包含UI界面的实现方式。如果你需要更多的功能,可以参考腾讯官方文档或在官方论坛中寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值