当前位置:主页 > 查看内容

实时音视频 TRTCCalling API(小程序) - 场景实践

发布时间:2021-10-24 00:00| 位朋友查看

简介:组件介绍 TRTCCalling 小程序组件是基于腾讯云实时音视频(TRTC)和腾讯云信令 SDK(TSignalling)组合而成,支持1V1,多人场景下的视频通话。TRTCCalling 是一个开源组件,依赖闭源的信令 SDK(TSignalling)进行状态管理,通过 C2C 通信,完成信令传递。组……

组件介绍

TRTCCalling 小程序组件是基于腾讯云实时音视频(TRTC)和腾讯云信令 SDK(TSignalling)组合而成,支持1V1,多人场景下的视频通话。TRTCCalling 是一个开源组件,依赖闭源的信令 SDK(TSignalling)进行状态管理,通过 C2C 通信,完成信令传递。组件可快速服务线上客服,咨询,医疗问诊,跨端实时通话等应用场景。您可前往 【Github】或单击 【ZIP】,下载相关 SDK 及配套的 Demo 源码。

TRTCCalling API 概览

事件订阅/取消订阅

本组件基于事件分发进行管理,应用层可以根据组件下发的事件进行上层交互的改变。

API 描述
on(eventCode, handler, context) 订阅事件。
off(eventCode, handler) 取消事件订阅。

邀请方函数

邀请方拨打后,会收到该邀请的对端处理结果,详情可在 事件表 查询。

API 描述
call({userID, type}) 发出 C2C 通话邀请。
groupCall({userIDList, type, groupID}) 群组邀请通话(请先 创建 IM 群组)。

被邀请方函数

被邀请方如果超过30s对邀请为做出处理,将会做超时处理。

API 描述
accept() 接受通话邀请。
reject() 拒绝通话邀请。

通用功能函数

API 描述
login() 初始化信令 SDK,执行后才能正常进行信令收发。
logout() 登出信令 SDK,执行后不再能收发信令。
hangup() 结束当前通话。
startRemoteView(userID) 开启远端画面渲染。
stopRemoteView(userID) 关闭远端画面渲染。
openCamera() 开启摄像头。
closeCamera() 关闭摄像头。
setMicMute(isMute) 设置麦克风状态。
  • 当 isMute 取值为 true:关闭麦克风。
  • 当 isMute 取值为 false:打开麦克风。
  • switchCamera(isFrontCamera) 选择摄像头。
  • 当 isFrontCamera 取值为 true:前置摄像头。
  • 当 isFrontCamera 取值为 false:后置摄像头。
  • setHandsFree(isHandsFree) 设置声音播放状态。
  • 当 isHandsFree 取值为 true:外放模式。
  • 当 isHandsFree 取值为 false: 听筒模式。
  • 属性表

    <TRTCCalling> 属性

    <trtccalling> 只有 config 一个属性,通过该属性传入以下参数:

    参数 类型 是否必填 说明
    sdkAppID String 开通实时音视频服务创建应用后分配的 SDKAppID。
    userID String 用户 ID,可以由您的帐号体系指定。
    userSig String 身份签名(即相当于登录密码),由 userID 计算得出,具体计算方法请参见 如何计算 UserSig。
    type Number 指定通话类型。1:语音通话,2:视频通话。

    示例代码:

    // index.wxml
    <TRTCCalling id="TRTCCalling-room" config="{{config}}"></TRTCCalling>
    // videocall.js
    trtcConfig = {
    sdkAppID: '1401000123', // 开通实时音视频服务创建应用后分配的 SDKAppID
    userID: 'test_user_001', // 用户 ID,可以由您的帐号系统指定
    userSig: 'xxxxxxxxxxxx', // 身份签名,相当于登录密码的作用
    type: 2, // 通话模式
    }

    组件方法

    selectComponent()

    您可以通过小程序提供的 this.selectComponent() 方法获取组件实例。

    let TRTCCallingContext = this.selectComponent('#TRTCCalling-room')
    TRTCCallingContext.login()

    login()

    登入接口,会建议在页面 onLoad 阶段调用。

    TRTCCallingContext.login()

    logout()

    登出信令 SDK,执行后不再能收发信令。

    TRTCCallingContext.logout()

    on(eventCode, handler, context)

    用于监听组件派发的事件,详细事件请参见 事件表。

    TRTCCallingContext.on(EVENT.INVITED, () => {
     // todo
    })

    off(eventCode, handler)

    用于取消事件监听。

    TRTCCallingContext.off(EVENT.INVITED)

    call({userID, type})

    进行某个 user 进行呼叫。

    参数 含义
    type 通话类型,type = 1:语音通话,type =2:视频通话。
    let userID = 'test'
    let type = 2
    TRTCCallingContext.call({userID, type})

    groupCall({userIDList, type, groupID})

    在调用该接口前需要使用 IM 创建群组,并将 groupID 作为参数传入。

    参数 类型 含义
    userIDList Arrary 拨打的用户列表
    type Number type 为通话类型,1:语音通话,2:视频通话。
    grouID String IM 群组的 groupID。
    TRTCCallingContext.groupCall({userIDList, type, groupID})

    accept()

    当收到邀请后,调用该接口将接受当前的邀请。

    说明:

    当上一个 invitation 未处理完成时,组件会默认占线,之后的邀请都会回复忙线。

    TRTCCallingContext.on(EVENT.INVITED, () => {
    TRTCCallingContext.accept()
    })

    reject()

    当收到邀请后,调用该接口将拒绝当前收到的邀请。

    TRTCCallingContext.on(EVENT.INVITED, () => {
    TRTCCallingContext.reject()
    })

    hangup()

    结束当前通话。

    TRTCCallingContext.hangup()

    startRemoteView(userID)

    开启指定 userID 的远端画面 (默认开启)。

    TRTCCallingContext.startRemoteView(userID)

    stopRemoteView(userID)

    关闭指定 userID 的远端画面。

    TRTCCallingContext.stopRemoteView(userID)

    openCamera()

    开启本地摄像头。

    TRTCCallingContext.openCamera()

    closeCamera()

    关闭摄像头。

    TRTCCallingContext.closeCamera()

    setMicMute(isMute)

    设置麦克风状态。

    参数 含义
    isMute true:关闭麦克风,false: 打开麦克风。
    TRTCCallingContext.setMicMute(true) // 开启麦克风

    switchCamera(isFrontCamera)

    选择摄像头。

    参数 含义
    isFrontCamera true:前置摄像头,false: 后置摄像头。
    TRTCCallingContext.switchCamera(true) // 开启前置摄像头

    setHandsFree(isHandsFree)

    设置声音播放状态。

    参数 含义
    isHandsFree true:外放模式,false: 听筒模式。
    TRTCCallingContext.setHandsFree(true) // 开启外放模式

    事件表

    获取 EVENT 事件。

    const TRTCCallingContext = this.selectComponent('#TRTCCalling-room')
    const EVENT = trtcRoomContext.EVENT // 以下事件均在此EVENT对象下

    邀请方事件

    REJECT

    邀请方发出的邀请被拒绝。

    参数 类型 含义
    invitee String 被邀请人。
    inviteID String 邀请 ID。
    reason String 拒绝理由。

    NO_RESP

    邀请方发出的邀请无人响应(对方不在线)。

    参数 类型 含义
    inviteID String 邀请 ID。
    timeoutUserList Array 超时用户列表。

    CALLING_TIMEOUT

    邀请方发出的邀请无人响应(在线未接受邀请)。

    参数 类型 含义
    inviteID String 邀请 ID。
    timeoutUserList Array 超时用户列表。
    groupID String 群组 ID。
    sponsor String 邀请者。

    LINE_BUSY

    被邀请方正在通话中,忙线。

    参数 类型 含义
    invitee String 被邀请人。
    inviteID String 邀请 ID。
    reason String 拒绝理由。

    CALLING_CANCEL

    接受的邀请被取消。

    参数 类型 含义
    invitee String 被邀请人。
    inviteID String 邀请 ID。

    被邀请方事件

    INVITED

    收到邀请通知。

    参数 类型 含义
    sponsor String 邀请人。
    isFromGroup Boolean 是否是群通话。
    inviteID String 邀请 ID。
    inviteData Object
  • callType:通话类型。
  • roomID:房间号。
  • CALLING_CANCEL

    接受的邀请被取消。

    参数 类型 含义
    invitee String 被邀请人。
    inviteID String 邀请 ID。

    通用事件

    USER_ENTER

    用户进房。

    参数 类型 含义
    userID String 加入的用户。

    USER_LEAVE

    用户退出房间。

    参数 类型 含义
    userID String 离开的用户。

    CALL_END

    本次通话结束。

    参数 类型 含义
    call_end String 通话结束事件。

    USER_VOICE_VOLUME

    本地和远端用户的音量回调。

    参数 类型 含义
    userID String 通话人。
    volume Number 音量。

    HANG_UP

    挂断电话。

    异常捕获

    通过监听 EVENT 里的 ERROR 字段,对组件抛出的错误进行处理。

    let EVENT = trtcRoomContext.EVENT
    trtcRoomContext.on(EVENT.ERROR,(event)=>{
    console.log(event.data)
    })

    常见问题

    为什么拨打不通,或者被踢下线?

    组件暂不支持多实例登入,不支持离线推送信令功能,请您确认账号登入的唯一性。

    • 多实例:一个 userID 重复登入,或在不同端登入,将会引起信令的混乱。
    • 离线推送:实例在线才能接收消息,实例离线时接收到的信令不会在上线后重新推送。即,小程序在后台与离线状态下,无法收到呼入提醒或来电提醒。

    本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

    推荐图文

    • 周排行
    • 月排行
    • 总排行

    随机推荐