模块
// esModule
import * as QNRTC from 'pili-rtc-wxapp'
// CommonJS
const QNRTC = require('pili-rtc-wxapp')
QNRTC
QNRTC.RoomSession
QNRTC
的静态属性。
QNRTC.log
QNRTC
的静态属性。
可以用于设置日志的开关。
QNRTC.version
QNRTC
的静态属性,
符合 semver 规范的 string,如 1.0.0
。
RoomSession
核心类 RoomSession
EventEmitter
RoomSession ⇐ 构造函数 new RoomSession()
导出类
继承: EventEmitter
users
表示房间当前的用户列表。如果没有加入房间,将会返回空列表。
RoomSession
实例的属性
属性:
Property | Type | Description |
---|---|---|
users | user[] | user列表 |
user.playerid | String | 加入房间的用户ID |
user.playerdata | String | 用户自定义 userData |
tracks
表示房间中当前所有其他人的 TrackInfo。
RoomSession
实例的属性
属性:
Property | Type | Description |
---|---|---|
tracks | track[] | track列表 |
track.kind | String | 只有2种可能的值,audio或者video。标记这个Track是音频轨还是视频轨 |
track.master | Boolean | 该Track是否为master |
track.muted | Boolean | 表示这Track当前是不是出于静音或者黑屏状态 |
track.playerid | String | 发布这个Track的用户ID |
track.tag | String | tag是在这个Track被采集时用户自己指定的,用来标示区分不同的Track |
track.trackid | String | Track的ID |
RoomSession
实例的属性
joinRoomWithToken(token, userData)
加入房间。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
token | String | 参见 RoomToken 签发服务 |
userData | String | undefined | 用户的额外信息 |
返回值: Promise<void>
publish()
获取rtmp推流地址。
RoomSession
实例的方法
返回值: String
subscribe(userId)
获取rtmp拉流地址。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
userId | String | 请求加入房间的用户 ID,需满足正则 ^[a-zA-Z0-9_-]{3,50}$ |
返回值: String
getSubscribeAddressList(userId)
获取rtmp拉流地址列表。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
userId | String | 请求加入房间的用户 ID,需满足正则 ^[a-zA-Z0-9_-]{3,50}$ |
返回值: object[]
object
的具体格式为:
Param | Type | Description |
---|---|---|
url | String | rtmp拉流地址 |
master | Boolean | 为true表示以该拉流地址为主,存在audio和video。为false只能存在video |
muteTracks(tracks)
将本地已经发布的 track
对象静音或取消静音,这个静音动作会广播给全房间,其他用户可以通过 mute-tracks
事件来感知。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
tracks | track[] | track 列表,每个列表项内会有一个 trackid 和 muted |
track.trackid | String | 设置静音状态的 trackid |
track.muted | Boolean | 是否静音。为 true 表示静音,为 false 表示取消静音 |
注意:视频 track 和音频 track 都可以设置静音,静音的本质是保留数据通道但不发送数据。当音频 track 静音时会听不到声音,视频 track 静音时视频画面不会再更新。
createMergeJob(options)
创建合流任务。有 publish 权限才能发送此消息。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
publishUrl | String | 合流发布地址 |
id | String | 合流任务ID,由客户端设置,不可为空,若已存在相同的 id 和 job,更新 job 相关信息,但不会清除合流信息 |
stretchMode | String | 画面填充方式(包括水印)。aspectFill 在保持长宽比的前提下,缩放视频,使其充满容器(默认);aspectFit 在保持长宽比的前提下,缩放视频,使其在容器内完整显示,边缘部分填充黑色;scaleToFit 缩放视频,使其填充满容器,可能导致拉伸变形 |
watermarks | watermark[] | 水印配置,为可选项 |
watermark.url | String | 水印图片地址 |
watermark.h | Number | 水印高度 |
watermark.w | Number | 水印宽度 |
watermark.x | Number | 水印横轴偏移 |
watermark.y | Number | 水印纵轴偏移 |
background | Object | 背景图片配置,为可选项 |
background.url | String | 背景图片地址 |
background.h | Number | 背景图片高度 |
background.w | Number | 背景图片宽度 |
background.x | Number | 背景图片横轴偏移 |
background.y | Number | 背景图片纵轴偏移 |
audioOnly | Boolean | 为 true 时,服务端会按照默认方式处理height,width,fps,kbps,stretchMode这些参数 |
kbps | String | 码率,指的是平均码率,真实码率是波动的 |
fps | String | 帧率 |
maxRate | String | 最高码率,为可选项 |
minRate | String | 最低码率,为可选项 |
holdLastFrame | Boolean | 是否保留 track 断开连接前最后一帧,默认值是 false |
width | Number | 输出画面的宽度 |
height | Number | 输出画面的高度 |
返回值: Promise<MergeJobRes>
updateMergeTracks(options)
更新合流中的 tracks (包含添加和删除操作)。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
id | String | 合流 ID |
add | track[] | 在合流中添加的 track |
remove | track[] | 从合流中删除的 track |
track.trackid | String | 媒体 trackid |
track.h | Number | track 高度 |
track.w | Number | track 宽度 |
track.x | Number | track 横轴偏移 |
track.y | Number | track 纵轴偏移 |
track.z | Number | track 深度偏移 |
stretchMode | String | 画面填充方式(为可选值)。为空时继承 createMergeJob 中 stretchMode 的值。不为空时,有三个可选值:aspectFill / aspectFit / scaleToFit。aspectFill 在保持长宽比的前提下,缩放视频,使其充满容器;aspectFit 在保持长宽比的前提下,缩放视频,使其在容器内完整显示,边缘部分填充黑色;scaleToFit 缩放视频,使其填充满容器,可能导致拉伸变形 |
返回值: Promise<UpdateTracksRes>
addMergeTracks(options, jobid)
在合流中添加 tracks 。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
jobid | String | 合流 ID |
options | track[] | 在合流中添加的 track |
track.trackid | String | 媒体 trackid |
track.h | Number | track 高度 |
track.w | Number | track 宽度 |
track.x | Number | track 横轴偏移 |
track.y | Number | track 纵轴偏移 |
track.z | Number | track 深度偏移 |
stretchMode | String | 画面填充方式(为可选值)。为空时继承 createMergeJob 中 stretchMode 的值。不为空时,有三个可选值:aspectFill / aspectFit / scaleToFit。aspectFill 在保持长宽比的前提下,缩放视频,使其充满容器;aspectFit 在保持长宽比的前提下,缩放视频,使其在容器内完整显示,边缘部分填充黑色;scaleToFit 缩放视频,使其填充满容器,可能导致拉伸变形 |
返回值: Promise<UpdateTracksRes>
removeMergeTracks(options, jobid)
在合流中删除 tracks 。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
jobid | String | 合流 ID |
options | track[] | 在合流中删除的 track |
track.trackid | String | 媒体 trackid |
track.h | Number | track 高度 |
track.w | Number | track 宽度 |
track.x | Number | track 横轴偏移 |
track.y | Number | track 纵轴偏移 |
track.z | Number | track 深度偏移 |
stretchMode | String | 画面填充方式(为可选值)。为空时继承 createMergeJob 中 stretchMode 的值。不为空时,有三个可选值:aspectFill / aspectFit / scaleToFit。aspectFill 在保持长宽比的前提下,缩放视频,使其充满容器;aspectFit 在保持长宽比的前提下,缩放视频,使其在容器内完整显示,边缘部分填充黑色;scaleToFit 缩放视频,使其填充满容器,可能导致拉伸变形 |
返回值: Promise<UpdateTracksRes>
stopMerge(jobid)
停止合流。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
jobid | String | 停止合流的 jobid |
返回值: Promise<StopTracksRes>
sendMessage(target, text)
发送自定义消息。
RoomSession
实例的方法
参数:
Param | Type | Description |
---|---|---|
target | String[] | 消息发送对象,不指定则发送给房间内所有人 |
text | String | 消息内容 |
返回值: Promise<endMessageRes>
leaveRoom()
离开房间。
RoomSession
实例的方法
on('user-join', user => any)
监听事件 user-join
回调参数:
Param | Type | Description |
---|---|---|
user | Object | 用户信息 |
user.playerid | String | 加入房间的用户ID |
user.playerdata | String | 用户自定义 userData |
on('user-leave', user => any)
监听事件 user-leave
回调参数:
Param | Type | Description |
---|---|---|
user | Object | 用户信息 |
user.playerid | String | 加入房间的用户ID |
on('track-add', tracks => any)
监听事件 track-add
回调参数:
Param | Type | Description |
---|---|---|
tracks | track[] | track list |
track | Object | track 信息 |
user.trackid | String | trackid |
user.playerid | String | 用户ID |
user.kind | "audio" | "video" | kind |
user.tag | String | tag |
on('track-remove', tracks => any)
监听事件 track-remove
回调参数:
Param | Type | Description |
---|---|---|
tracks | track[] | track list |
track | Object | track 信息 |
user.trackid | String | trackid |
user.playerid | String | 用户ID |
user.kind | "audio" | "video" | kind |
user.tag | String | tag |
on('local-track-add', tracks => any)
监听事件 local-track-add
回调参数:
Param | Type | Description |
---|---|---|
tracks | track[] | local track list |
track | Object | track 信息 |
user.trackid | String | trackid |
user.playerid | String | 用户ID |
user.kind | "audio" | "video" | kind |
user.tag | String | tag |
on('local-track-remove', tracks => any)
监听事件 local-track-remove
回调参数:
Param | Type | Description |
---|---|---|
tracks | track[] | local track list |
track | Object | track 信息 |
user.trackid | String | trackid |
user.playerid | String | 用户ID |
user.kind | "audio" | "video" | kind |
user.tag | String | tag |
on('mute-tracks', tracks => any)
监听事件 mute-tracks
回调参数:
Param | Type | Description |
---|---|---|
tracks | track[] | mute track list |
track.trackid | String | 远端用户发生静音状态的 trackid |
track.muted | Boolean | 远端用户的静音状态,为 true 表示静音,为 false 表示取消静音 |
on('message-recv', msgData => any)
监听事件 message-recv
回调参数:
Param | Type | Description |
---|---|---|
messages | message[] | message list |
message | Object | message 信息 |
message.msgid | String | 消息唯一ID |
message.playerid | String | 消息发送者ID |
message.type | String | 消息类型,当前支持 normal 和 notify 类型(notify 类型为服务端通知消息,此时 playerid 为空) |
message.text | String | 消息内容 |
message.msgts | String | 消息时间戳 |
message.msgsn | String | 当前消息序列号 |
on('merge-job-create', (newMergeJob, mergeJobs) => any)
监听事件 merge-job-create
回调参数:
Param | Type | Description |
---|---|---|
mergeJobs | mergeJob[] | 所有的合流任务 |
newMergeJob | mergeJob | 新创建的合流任务 |
mergeJob.id | String | 合流任务的 ID |
mergeJob.publishUrl | String | 合流任务的发布url |
on('merge-update', (updatedMergeJob, mergeJobs) => any)
监听事件 merge-update
回调参数:
Param | Type | Description |
---|---|---|
mergeJobs | mergeJob[] | 所有的合流任务 |
updatedMergeJob | mergeJob | 更新后的合流任务 |
mergeJob.id | String | 合流任务的 ID |
mergeJob.publishUrl | String | 合流任务的发布url |
on('merge-stop', (stopedMergeJob, mergeJobs) => any)
监听事件 merge-stop
回调参数:
Param | Type | Description |
---|---|---|
mergeJobs | mergeJob[] | 所有的合流任务 |
newMergeJob | mergeJob | 停止的合流任务 |
mergeJob.id | String | 合流任务的 ID |
mergeJob.publishUrl | String | 合流任务的发布url |
on('connecting', () => any)
监听事件 connecting
,收到此事件表示sdk正在重连
on('connected', () => any)
监听事件 connected
,收到此事件表示sdk重连成功。此时应该调用重新推流和拉流的API
on('disconnect', (res) => any)
与房间断开链接房间。 res.code
为 10006
时表示被踢出房间。
回调参数:
Param | Type | Description |
---|---|---|
code | Number | 错误码 |
data | Object | 信息 |
data.userId | String | undefined | 踢人的用户,只有 code 为 10006 时存在 |
on('error', () => any)
监听事件 error
,收到此事件表示 sdk 重连发生错误离开房间,一般是超时,此时应该重新走 joinRoomWithToken。
off(event , callback)
Param | Type | Description |
---|---|---|
event | String | 事件名 |
callback | Function | 回调函数 |
log
日志对象
setLevel(level)
通过该方法设置 SDK 打印 log 的等级,一共有 4 个等级 disable
warning
debug
log
设置为 disable
后将不会打印数据, 默认为 log
log
对象的方法
参数:
Param | Type | Description |
---|---|---|
level | String | log 的等级 |
返回值: void