rtc-room 实时音视频通话房间

基础库 v3.200.106 起支持,默认为同层渲染

解释:实时音视频 RTC 房间,内部由多个 rtc-room-item 组件。该组件还提供丰富的 API 来控制登录、退出房间,发布 / 取消发布本地流,订阅 / 取消订阅远端流,控制远端流音视频等,详见 swan.createRtcRomContext 。只针对以下一级类目及其二级类目开放,详见支持服务类目。需要先通过类目审核,再在小程序管理后台,“开发管理 -> 功能管理”页面的“实时音视频通话”模块中自助开通该组件权限,详见接入流程
Web 态说明:Web 态使用降级方案支持 rtc 实时音视频。设置 rtc-room 组件的相关属性和方法无效。

支持服务类目

一级类目
快递业与邮政教育政务民生生活交通房地产IT 科技旅行
时政新闻娱乐商家自营电商商业服务公益汽车健康

接入流程

1.【小程序】支持在“开发者平台 -> 开发管理 -> 功能管理 -> 实时音视频通话”开通使用。
rtc-room 实时音视频通话房间 - 图1
当该小程序类目不属于上述类目时,暂不支持开通该服务,支持服务类目见文中支持服务类目
rtc-room 实时音视频通话房间 - 图2
2. 【小程序】符合类目要求时,点击开通后引导进入智能云平台进行登录。
rtc-room 实时音视频通话房间 - 图3
3. 注册完成后进“云资源访问授权页面”,点击授权后进行实名认证判断
rtc-room 实时音视频通话房间 - 图4
3.1 当实名认证已完成后,则跳转至小程序开发者平台,表示开通完成;
rtc-room 实时音视频通话房间 - 图5
3.2 当实名认证未完成时,则跳转至实名认证页面进行认证,按照页面指引进行认证。
rtc-room 实时音视频通话房间 - 图6
认证申请提交后等待审核结果,预计半小时左右。
rtc-room 实时音视频通话房间 - 图7
(1)审核通过后智能云短信通知,重新打开小程序开发者平台,表示开通完成。
rtc-room 实时音视频通话房间 - 图8
(2)审核未通过后智能云短信通知,重新打开小程序开发者平台,表示未审核成功,点击『立即认证』查看认证失败原因并重新认证。
rtc-room 实时音视频通话房间 - 图9
4. 在开发者平台点击『实时音视频通话』进入智能云 RTC 控制台,创建应用获取 SDKAppID ,按照操作指南进行开发。
rtc-room 实时音视频通话房间 - 图10
5. 开发完成后可在小程序平台进行 RTC 更多操作和查看

  • 查看费用:跳转到智能云平台快速查看消耗费用明细情况。
  • 关闭:快速暂停该能力使用,暂停后不再耗费费用,该能力也无法使用。
  • 开通:重新使用该能力,开通后该能力可以继续使用,随着使用开始消耗费用。

属性说明

属性名类型默认值必填说明Web 态说明

id

String

rtc-room 组件的唯一标识符

enable-camera

Boolean

true

是否开启摄像头

enable-auto-focus

Boolean

true

是否开启摄像头自动对焦

enable-zoom

Boolean

false

是否支持双手滑动调整摄像头聚焦

device-position

String

front

设置前置还是后置摄像头,有效值:front、back

enable-mic

Boolean

true

是否开启麦克风

enable-agc

Boolean

false

是否开启音频自动增益

enable-ans

Boolean

false

是否开启音频噪声抑制

bitrate

Number

900

最大码率

video-width

Number

360

视频分辨率宽

video-height

Number

640

视频分辨率高

enable-remote-mirror

Boolean

false

设置远端看到的画面的镜像效果,该属性的变化不会影响到本地画面,仅影响远端看到的画面效果

local-mirror

String

auto

设置本地摄像头预览画面的镜像效果,有效值:auto、enable、disable

sound-mode

String

speaker

设置声音输出方式,有效值:speaker、ear

bindstatechange

Eventhandle

房间状态变化事件,参考下方状态码detail = { code, msg, userInfo }

binderror

Eventhandle

错误事件。参考下方错误码detail = { errMsg, errCode }

device-position 有效值

说明
front前置摄像头
back后置摄像头

local-mirror 有效值

说明
auto前置摄像头镜像,后置摄像头不镜像(系统相机的表现)
enable前置摄像头和后置摄像头都镜像
disable前置摄像头和后置摄像头都不镜像

sound-mode 有效值

说明
speaker扬声器
ear听筒

状态码

codemsguserInfo说明最低版本
1001LOCAL_JOIN{ userId, displayName }成功进入房间3.200.106
1002REMOTE_USER_JOIN{ userId, displayName }远端用户进入房间3.200.106
1003REMOTE_USER_LEAVE{ userId, displayName }远端用户离开房间3.200.106
1004REMOTE_USER_KICKOUT{ userId }有成员被踢出房间3.250.12
2001REMOTE_STREAM_ADD{ userId, displayName }远端用户发布音视频流3.200.106
3002REMOTE_STREAM_REMOVE{ userId, displayName }远端用户取消发布音视频流3.200.106

错误码

errCodeerrMsg说明
10001internal error内部错误
10002network error网络请求失败
10003user deny用户拒绝
10004user not logged in账号失效
10005system deny系统拒绝
20001NO_SUCH_ROOM房间不存在
20001USERID_ALREADY_EXIST_ERROR用户已存在
20001login fail : execute fail执行失败
20001login fail : init rtc sdk fail初始化 rtc sdk 失败
20001login fail : so download failedso 下载失败
20001login fail : so load failedso 加载失败
20001login fail : error登陆失败
20001login fail : timeout登陆超时
20002ROOM_ALREADY_EXISTroom 组件已经有房间在登陆
20003DEVICE_IS_NOT_SUPPORTED安卓 5.0 以下的设备不支持 rtc 功能
30001ROOM_CONNECTION_LOST与服务器连接丢失
30002MEDIA_CONNECTION_LOST媒体通道连接丢失
40001OPEN_CAMERA_FAIL相机打开失败
40002REMOTE_ITEM_ALREADY_PLAYINGrtc-room-item 已经被占用
40003PUBLISH_FAIL本地发布流失败

示例

跳转编辑工具

在开发者工具中打开

在 WEB IDE 中打开

扫码体验

代码示例

百度智能小程序

请使用百度APP扫码

图片示例

rtc-room 实时音视频通话房间 - 图12

代码示例

  • SWAN
  • JS
  1. <view class="doubleroom-container">
  2. <rtc-room
  3. id="doubleRoom"
  4. class="rtc-room"
  5. enable-camera="{{enableCamera}}"
  6. enable-auto-focus="{{enableAutoFocus}}"
  7. enable-zoom="{{enableZoom}}"
  8. device-position="{{devicePosition}}"
  9. enable-mic="{{enableMic}}"
  10. enable-agc="{{enableAgc}}"
  11. enable-ans="{{enableAns}}"
  12. bitrate="{{bitrate}}"
  13. video-width="{{videoWidth}}"
  14. video-height="{{videoHeight}}"
  15. enable-remote-mirror="{{enableRemoteMirror}}"
  16. local-mirror="{{localMirror}}"
  17. sound-mode="{{soundMode}}"
  18. bindstatechange="handleStateChange"
  19. binderror="handleError">
  20. <rtc-room-item
  21. id="localView"
  22. type="local"
  23. user-id="{{localUserId}}"
  24. data-key="local"
  25. class="{{isLocalMainView ? 'main-view' : 'small-view'}}"
  26. bindtap="toggleMainView">
  27. <view class="loading" s-if="{{streamList.length === 0}}">
  28. <image
  29. src="https://b.bdstatic.com/searchbox/icms/searchbox/img/loading-icon.png"
  30. class="rotate-img">
  31. </image>
  32. <view class="loading-text">等待接听...</view>
  33. </view>
  34. <view s-if="{{!enableCamera}}" class="camera-off-container">
  35. <image
  36. class="camera-off-image"
  37. src="https://b.bdstatic.com/searchbox/icms/searchbox/img/off-camera.png">
  38. </image>
  39. <view class="camera-off-text">本地摄像头未打开</view>
  40. </view>
  41. </rtc-room-item>
  42. <rtc-room-item
  43. id="remoteView"
  44. s-if="streamList.length !== 0"
  45. type="remote"
  46. user-id="{{streamList[0].userId}}"
  47. data-key="remote"
  48. class="{{isLocalMainView ? 'small-view' : 'main-view'}}"
  49. bindtap="toggleMainView">
  50. </rtc-room-item>
  51. </rtc-room>
  52. <view class="handle-btns">
  53. <view class="btn-normal {{enableMic ? '' : 'btn-active'}}" bindtap="toggleAudio">
  54. <image
  55. class="btn-image"
  56. src="{{enableMic
  57. ? 'https://b.bdstatic.com/searchbox/icms/searchbox/img/audio-off.png'
  58. : 'https://b.bdstatic.com/searchbox/icms/searchbox/img/audio-on.png'
  59. }} ">
  60. </image>
  61. </view>
  62. <view class="btn-normal {{soundMode === 'ear' ? 'btn-active' : ''}}" bindtap="toggleSoundMode">
  63. <image
  64. class="btn-image"
  65. src="{{soundMode === 'ear'
  66. ? 'https://b.bdstatic.com/searchbox/icms/searchbox/img/speaker-off.png'
  67. : 'https://b.bdstatic.com/searchbox/icms/searchbox/img/speaker-on.png'}} ">
  68. </image>
  69. </view>
  70. <view class="btn-normal btn-hangup" bindtap="hangUp">
  71. <image
  72. class="btn-image"
  73. src="https://b.bdstatic.com/searchbox/icms/searchbox/img/hangup.png">
  74. </image>
  75. </view>
  76. <view class="btn-normal {{enableCamera ? '' : 'btn-active'}}" bindtap="toggleVideo">
  77. <image
  78. class="btn-image"
  79. src="{{enableCamera
  80. ? 'https://b.bdstatic.com/searchbox/icms/searchbox/img/camera-off.png'
  81. : 'https://b.bdstatic.com/searchbox/icms/searchbox/img/camera-on.png'}} ">
  82. </image>
  83. </view>
  84. <view class="btn-normal" bindtap="switchCamera" >
  85. <image
  86. class="btn-image"
  87. src="https://b.bdstatic.com/searchbox/icms/searchbox/img/switch.png">
  88. </image>
  89. </view>
  90. </view>
  91. <view class="top-mask"></view>
  92. <view class="bottom-mask"></view>
  93. </view>