@rongcloud/plugin-wechat-rtc
Version:
@rongcloud/plugin-wechat-rtc
340 lines • 8.71 kB
TypeScript
import { RCAudioOutputDevice } from '../components/enum';
import { RCKickReason } from './enums/RCKickReason';
import { RCMediaType } from './enums/RCMediaType';
import { RCResourceState } from './enums/RCResourceState';
import { RCRemoteStream } from './RCRemoteStream';
/**
* RTC api ----> live-pusher、live-player 属性变化或调用 api
*/
export interface ICoreContextEventListener {
/**
* 设置 livePusher 的推流 url
* @param url
*/
setPusherUrl?(url: string): void;
/**
* 显示推流组件 live-pusher
*/
showComponent?(): void;
/**
* 预览
*/
startPreview?(): void;
/**
* 停止预览
*/
stopPreview?(): void;
/**
* 打开摄像头
*/
openCamera?(): void;
/**
* 关闭摄像头
*/
closeCamera?(): void;
/**
* 切换前后置摄像头
*/
switchCamera?(): void;
/**
* 打开麦克风
*/
openMicphone?(): void;
/**
* 关闭麦克风
*/
closeMicphone?(): void;
/**
* 设置 liveplayer 观看 src
* @param src
*/
setPlayerSrc?(msId: string, src: string): void;
/**
* 使 liveplayer 静音
*/
mute?(msId: string): void;
/**
* 取消 liveplayer 静音
*/
unmute?(msId: string): void;
/**
* 指定 liveplayer 的声音输出设备
* @param mode 扬声器或听筒
*/
setSoundMode?(mode: RCAudioOutputDevice): void;
}
/**
* 小程序推流网络数据
*/
export interface ILivePusherNetStatus {
/**
* 当前视频编/码器输出的比特率,单位 kbps
*/
videoBitrate: number;
/**
* 当前音频编/码器输出的比特率,单位 kbps
*/
audioBitrate: number;
/**
* 当前视频帧率
*/
videoFPS: number;
/**
* 当前视频 GOP,也就是每两个关键帧(I帧)间隔时长,单位 s
*/
videoGOP: number;
/**
* 当前的发送/接收速度
*/
netSpeed: number;
/**
* 网络抖动情况,抖动越大,网络越不稳定
*/
netJitter: number;
/**
* 网络质量:0:未定义 1:最好 2:好 3:一般 4:差 5:很差 6:不可用
*/
netQualityLevel: number;
/**
* 视频画面的宽度
*/
videoWidth: number;
/**
* 视频画面的高度
*/
videoHeight: number;
/**
* 主播端堆积的视频帧数
*/
videoCache: number;
/**
* 主播端堆积的音频帧数
*/
audioCache: number;
}
/**
* 小程序拉流网络数据
*/
export interface ILivePlayerNetStatus extends ILivePusherNetStatus {
/**
* 解码器中缓存的视频帧数 (Android 端硬解码时存在)
*/
vDecCacheSize: number;
/**
* 缓冲的总视频帧数,该数值越大,播放延迟越高
*/
vSumCacheSize: number;
/**
* 音画同步错位时间(播放),单位 ms,此数值越小,音画同步越好
*/
avPlayInterval: number;
/**
* 音画同步错位时间(网络),单位 ms,此数值越小,音画同步越好
*/
avRecvInterval: number;
/**
* 音频缓冲时长阈值,缓冲超过该阈值后,播放器会开始调控延时
*/
audioCacheThreshold: number;
}
/**
* 小程序上下行网络数据
*/
export interface IResourceNetStatus {
/**
* 上行网络数据
*/
sender?: ILivePusherNetStatus;
/**
* 下行网络数据
*/
receiver?: {
[msid: string]: ILivePlayerNetStatus;
};
}
/**
* live-pusher ----> RTC 监听
*/
export interface IPusherContextEventListener {
/**
* 状态变化事件
*/
stateChange(data: any): void;
/**
* 网络状态通知
*/
netStatus: ((data: ILivePusherNetStatus) => void)[];
/**
* 渲染错误事件
*/
renderError(data: any): void;
/**
* 背景音开始播放时触发
*/
bgmStart(data: any): void;
/**
* 背景音进度变化时触发
*/
bgmProgress(data: any): void;
/**
* 背景音播放完成时触发
*/
bgmComplete(data: any): void;
/**
* 麦克风采集的音量大小通知
*/
audioVolumeNotify: ((volume: number) => void)[];
}
/**
* live-player ----> RTC 监听
*/
export interface IPlayerContextEventListener {
/**
* 播放状态变化事件
*/
stateChange?(id: string, data: any): void;
/**
* 全屏变化事件
*/
fullScreenChange?(id: string, data: any): void;
/**
* 网络状态通知
*/
netStatus?: ((id: string, data: ILivePlayerNetStatus) => void)[];
/**
* 播放音量大小通知
*/
audioVolumeNotify?: ((id: string, volume: number) => void)[];
/**
* 播放器进入小窗
*/
enterPictureInPicture?(id: string, data: any): void;
/**
* 播放器退出小窗
*/
leavePictureInPicture?(id: string, data: any): void;
}
/**
* MediaServer 返回的媒体资源数据
*/
export interface IResource {
/**
* 媒体类型
*/
mediaType: RCMediaType.AUDIO_ONLY | RCMediaType.VIDEO_ONLY;
/**
* MediaStream Id,基本为 `userId` 与 `tag` 以 `_` 拼接而来。该值无法直接作为资源的唯一性标识属性,
* 需与 mediaType 拼接使用
*/
msid: string;
/**
* MediaServer 返回的资源地址
* @example 举例如下:
* `{"clusterId":"rtc-data-bdcbj.ronghub.com:80","serverId":"172.28.76.215:40080","resourceId":"13111111111_5vls_web_RongCloudRTC_1","connectionId":"AAYxMDAzNjgAFDEzMTExMTExMTExXzV2bHNfd2ViAAMzMzMA","ssrc":1716229921,"serviceProvider":"bdc","userTimestamp":1604994044706}`
*/
uri: string;
/**
* 资源特征,simulcast 代表这道流支持大小流
* @description 此参数存疑,MediaServer 似乎并未下发此字段,Web 端暂不启用
* @deprecated
*/
features?: ['simulcast'] | [];
/**
* 小程序发布的资源携带 rtmp 播放地址
*/
rtmpUri?: string;
}
/**
* 向房间内发布的媒体数据
*/
export interface IPublishedResource extends IResource {
/**
* 资源禁用/启用标识,用于向 signal 同步本端资源状态,1 为启用,0 为禁用
*/
state: RCResourceState;
/**
* 资源标识,同标识的资源将视作同道流,标识不可重复
*/
tag: string;
}
/**
* 房间资源数据
*/
export type RoomData = {
[userId: string]: IPublishedResource[];
};
/**
* 房间资源、状态回调
*/
export interface IRoomEventListener {
/**
* 当本端被剔出房间时触发
* @description 被踢出房间可能是由于服务端超出一定时间未能收到 rtcPing 消息,所以认为己方离线。
* 另一种可能是己方 rtcPing 失败次数超出上限
* @param byServer 当值为 `false` 时,说明本端 rtcPing 超时;当值为 `true` 时,说明本端收到被踢出房间通知
*/
onKickOff?(byServer: boolean, state?: RCKickReason): void;
/**
* 接收到房间信令时回调,用户可通过房间实例的 sendMessage 接口发送信令
* @param name 信令名
* @param content 信令内容
* @param senderUserId 发送者 Id
* @param messageUId 消息唯一标识
*/
onMessageReceive?(name: string, content: any, senderUserId: string, messageUId: string): void;
/**
* 房间属性变更回调
* @param name
* @param content
*/
onRoomAttributeChange?(name: string, content?: string): void;
/**
* 房间用户禁用/启用音频
*/
onAudioMuteChange?(stream: RCRemoteStream): void;
/**
* 房间用户禁用/启用视频
*/
onVideoMuteChange?(stream: RCRemoteStream): void;
/**
* 房间内用户发布资源
*/
onStreamPublish?(streams: RCRemoteStream[]): void;
/**
* 房间用户取消发布资源
*/
onStreamUnpublish?(streams: RCRemoteStream[]): void;
/**
* 人员加入
* @param userIds 加入的人员 id 列表
*/
onUserJoin?(userIds: string[]): void;
/**
* 人员退出
* @param userIds
*/
onUserLeave?(userIds: string[]): void;
}
/**
* 订阅参数
*/
export interface ISubParams {
/**
* 订阅的远端流
*/
stream: RCRemoteStream;
/**
* 是否订阅小流,默认订阅小流
*/
subTiny?: boolean;
}
/**
* RCRTCMessageType.KICK content
*/
export interface IRCRTCKickContent {
users: {
userId: string;
type: RCKickReason;
}[];
}
//# sourceMappingURL=interfaces.d.ts.map