前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实时音视频(TRTC)通话前如何进行网络测速?

实时音视频(TRTC)通话前如何进行网络测速?

原创
作者头像
腾讯云-yyuanchen
修改2019-09-30 11:41:17
2.9K0
修改2019-09-30 11:41:17
举报

因为用户的网络环境各不相同,所以推荐您在用户首次通话前先进行一次测速,这将有助于我们选择最佳的服务器。具体实现代码如下:

1.初始化

创建一个 TRTCCloud 的实例对象,并注册监听 SDK 事件的回调

Android

private TRTCCloud trtcCloud;              /// TRTC SDK 实例对象
private TRTCCloudListener trtcListener;    /// TRTC SDK 回调监听

// 创建 trtcCloud 实例
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ....
    trtcListener = new TRTCCloudListenerImpl(this);
    trtcCloud = TRTCCloud.sharedInstance(this);
    trtcCloud.setListener(trtcListener);
}

// 继承 TRTCCloudListener 回调 
static class TRTCCloudListenerImpl extends TRTCCloudListener {
    private WeakReference<TRTCMainActivity> mContext;
    public TRTCCloudListenerImpl(TRTCMainActivity activity) {
        super();
        mContext = new WeakReference<>(activity);
    }
    ....
    // 错误通知是要监听的,错误通知意味着 SDK 不能继续运行了
    @Override
    public void onError(int errCode, String errMsg, Bundle extraInfo) {
        Log.d(TAG, "sdk callback onError");
    }
}

2.获取进视频通话房间的参数

获取网络测速的三个必要字段: SDKAppiduserIduserSig

Android

// 创建 trtcCloud 实例
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ....
    trtcListener = new TRTCCloudListenerImpl(this);
    trtcCloud = TRTCCloud.sharedInstance(this);
    trtcCloud.setListener(trtcListener);

    // TRTC SDK 视频通话房间进入所必须的参数
	Intent intent       = getIntent();
	int sdkAppId        = intent.getIntExtra("sdkAppId", 0);
	int roomId          = intent.getIntExtra("roomId", 0);
	String selfUserId   = intent.getStringExtra("userId");
	String userSig      = intent.getStringExtra("userSig");
    // 测速
	trtcCloud.startSpeedTest(sdkAppId, selfUserId, userSig);
}

3. 监听回调

实现 TRTCCloudListener 回调中的方法 onSpeedTest()

Android

// 继承 TRTCCloudListener 回调 
static class TRTCCloudListenerImpl extends TRTCCloudListener {
    private WeakReference<TRTCMainActivity> mContext;
    public TRTCCloudListenerImpl(TRTCMainActivity activity) {
        super();
        mContext = new WeakReference<>(activity);
    }
    ....
    // 错误通知是要监听的,错误通知意味着 SDK 不能继续运行了
    @Override
    public void onError(int errCode, String errMsg, Bundle extraInfo) {
        Log.d(TAG, "sdk callback onError");
    }

    /**
     * 服务器测速的回调,SDK 对多个服务器IP做测速,每个IP的测速结果通过这个回调通知
     * @param currentResult 当前完成的测速结果
     * @param finishedCount 已完成测速的服务器数量
     * @param totalCount 需要测速的服务器总数量
     */
    public void onSpeedTest(TRTCCloudDef.TRTCSpeedTestResult currentResult, int finishedCount, int totalCount) {
        Log.i(TAG, "ip = "+currentResult.ip + " | quality = "+currentResult.quality
                + " | upLostRate = "+currentResult.upLostRate + " | upLostRate = "+currentResult.upLostRate
                + " | rtt = "+currentResult.rtt  + " ||| finishedCount = "+finishedCount  + " | totalCount = "+totalCount);
    }
}

具体细节见文档: 通话前网络测速

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.初始化
  • 2.获取进视频通话房间的参数
  • 3. 监听回调
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档