UNPKG

@rongcloud/plugin-wechat-rtc

Version:

@rongcloud/plugin-wechat-rtc

340 lines 8.71 kB
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