UNPKG

zego-express-engine-webrtc

Version:

zego webrtc express sdk

1,826 lines (1,825 loc) 60.4 kB
import { ExceptionData } from './../../src/common/zego.entity.web'; import { QualityGrade } from './../../src/common/zego.entity'; import { ZegoRTMEvent, ZegoUser } from './ZegoExpressEntity.rtm'; /** * 低照度增强模式。 * */ export declare enum ZegoLowlightEnhancementMode { Off = 0, On = 1 } /** * 背景处理分割模式 */ export declare enum Segmentation { PortraitSegmentation = 0 } /** * 地理围栏类型。 */ export declare enum ZegoGeoFenceType { /** * 不使用地理围栏。 */ ZegoGeoFenceTypeNone = 0, /** * 包括指定的地理围栏信息。 */ ZegoGeoFenceTypeInclude = 1, /** * 排除指定的地理围栏信息。 */ ZegoGeoFenceTypeExclude = 2 } /** * 详情描述:SEI 类型。 * */ export declare enum ZegoSEIType { /** * 采用 SEI (nalu type = 6,payload type = 243) 类型打包,此类型是 SEI 标准未规定的类型,跟视频编码器或者视频文件中的 SEI 不存在冲突性,用户不需要根据 SEI 的内容做过滤。 * SDK 默认发送 SEI 采用此种类型 */ ZegoDefined = 0, /** * 采用 SEI (nalu type = 6,payload type = 5) 类型打包,H.264 标准对于此类型有规定的格式:startcode + nalu type(6) + payload type(5) + len + pay load(uuid + context)+ trailing bits; * 因为视频编码器自身会产生 payload type 为 5 的 SEI,或者使用视频文件推流时,视频文件中也可能存在这样的 SEI,所以使用此类型时,用户把 uuid + context 当作一段 buffer 塞给次媒体的发送接口; * 此时为了区别视频编码器自身产生的 SEI, App 在发送此类型 SEI 时,可以填写业务特定的uuid(uuid长度为16字节),接收方使用SDK 解析payload type为 5的SEI时,会根据设置的过滤字符串过滤出 uuid相符的 SEI 抛给业务,如果没有设置过滤字符串,SDK会把所有收到的SEI都抛给业务方; * uuid过滤字符串设置接口,setSEIConfig设置的uuid过滤字符串。 */ UserUnregister = 1 } /** * ZegoCamera及ZegoSreen的分辨率、码率等配置的约束扩展。 * * 详细描述:约束对象,当ZegoCamera和ZegoSreen的参数videoQuality 为4时,对分辨率、码率等进行设置。 * * 业务场景:创建预览音视频流时约束扩展。 * * 注意事项: * 对于四种形式,优先级为 exact > ideal >= max = min。即: * 1. 出现exact时,忽略其他选项。若无法满足,则采集失败 * 2. 出现ideal,没有min、max时,尽量靠近ideal * ⅰ. 若能达到,则可以浮动在 ideal ± 10 * ⅱ. 若不能达到,则选用最靠近的值 * 3. 不出现exact,出现ideal,有min时,尽量靠近ideal的同时,大于min。若无法满足大于min,则采集失败 * 4. 不出现exact,出现ideal,有max时,尽量靠近ideal的同时,小于max。若无法满足小于max,则采集失败 * 5. 不出现exact,出现ideal,有min和max时,尽量靠近ideal的同时,大于min且小于max。若无法满足,则采集失败 * 6. 不出现exact,不出现ideal,出现min时,大于min。若无法满足大于min,则采集失败 * 7. 不出现exact,不出现ideal,出现max时,小于max。若无法满足小于max,则采集失败 * 8. 不出现exact,不出现ideal,出现min和max时,大于min且小于max。若无法满足,则采集失败。 * */ export interface ConstraintExtend { /** * 可选参数,出现该选项时忽略其他选项。严格指定采集设备最终输出的值,如果设备不支持指定的值,采集会失败。 */ exact?: number; /** * 可选参数,期望采集设备最终输出的值,如果设备不支持指定的值,会尽量输出一个最靠近的值。 */ ideal?: number; /** * 可选参数,采集设备最终输出的值上限。 */ max?: number; /** * 可选参数,采集设备最终输出的值下限。 */ min?: number; } /** * 音浪回调设置选项。 * */ export interface SoundLevelDelegateOptions { /** * 详情描述:设置在页面隐藏时是否保持开启获取获取音浪和回调音浪回调,2.18.0 及以后版本默认为关闭。 * 业务场景:在页面隐藏时关闭获取音浪可以减少性能消耗。 */ enableInBackground?: boolean; } /** * 音效播放器设置选项。 * */ export interface ZegoAudioEffectPlayOptions { /** * 指定加载在线音频资源地址,如果 audioEffectID 上已经加载了音效,会直接使用加载好的音效。 * 1. 在线音频文件需要符合 [浏览器的同源策略](https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy)。 * 2. 支持 MP3、AAC 以及浏览器支持的其他音频格式。 */ path?: string; } /** * 自动切换摄像头接口相关配置约束 * */ export interface ZegoAutoSwitchDeviceConfig { /** * 详情描述:是否开启摄像头设备的自动切换 * * 是否必填:否 */ camera?: boolean; /** * 详情描述:是否开启麦克风设备的自动切换 * * 是否必填:否 */ microphone?: boolean; } /** * 创建摄像头媒体流相关参数约束 * * Note: 详情描述:该类用于约束接口 createStream 的参数 source.camera。 * * Note: 业务场景:创建摄像头音视频流。 * * Note: 注意事项: * 1. 创建流成功后拿到的 stream 为 mediaStream 对象,开发者可通过赋值给 <video> 或 <audio> 对象的 srcObject 属性进行渲染。 * 2. audioInput 和 videoInput 不指定时使用默认设备。 * 3. 降噪、自动增益、回声消除三者默认为开启,若无特殊情况,建议客户保持这三项取值为 true。 * 4. 当 camera 的 videoQuality 为 4 时,camera 增加 width / height / frameRate / bitrate 属性,这几个参数只支持正整数,必须要把这四个属性也传递给 SDK。 * 5. 如果设置了 facingMode 参数,会忽略 videoInput 参数。 * */ export interface ZegoCamera { /** * 是否需要音频,默认为 true */ audio?: boolean; /** * 音频输入设备,不传则为浏览器选择的默认设备 */ audioInput?: string; /** * 音频码率,默认为 48kbps */ audioBitrate?: number; /** * 是否需要视频 */ video?: boolean; /** * 视频输入设备,不传则为浏览器选择的默认设备 */ videoInput?: string; /** * 视频质量等级,默认质量等级为 2: * 1:分辨率 320 * 240,帧率 15,码率 300 kbps * 2:分辨率 640 * 480,帧率:15,码率 800 kbps * 3:分辨率 1280 * 720,帧率:20,码率 1500 kbps * 4:分辨率 width * height,帧率 frameRate,码率: bitrate(kbps) * 注:当 videoQuality 为 4 时,width、height、frameRate 和 bitrate 四个参数必填。 */ videoQuality?: 1 | 2 | 3 | 4; /** * 摄像头朝向,“user” 表示前置摄像头,“environment” 表示后置摄像头 */ facingMode?: 'user' | 'environment'; /** * 声道数,1 为单声道,2 为双声道,默认为单声道 */ channelCount?: 1 | 2; /** * 是否开启降噪,默认 */ ANS?: boolean; /** * 是否开启自动增益,默认开启 */ AGC?: boolean; /** * 是否开启回声消除,默认开启 */ AEC?: boolean; /** * 分辨率宽,videoQuality 为 4 时生效 */ width?: number | ConstraintExtend; /** * 分辨率高,videoQuality 为 4 时生效 */ height?: number | ConstraintExtend; /** * 码率,videoQuality 为 4 时生效 */ bitrate?: number; /** * 帧率,videoQuality 为 4 时生效 */ frameRate?: number | ConstraintExtend; /** * 开始码率,默认为 “default”,环境要求:谷歌内核浏览器及 2.7.0 以上版本的 SDK 。 * 值为 “default” 表示使用 webrtc 默认开始码率 300kbps 然后慢慢上升;值为 “target” 表示快速上升到已设置的目标码率。 */ startBitrate?: 'default' | 'target'; /** * 视频优化模式,默认为 “default“ ; * 值为 “motion” 表示流畅模式,在大多数情况下,SDK 不会降低帧率,但是可能会降低发送分辨率。 * 值为 ”detail“ 表示清晰模式,在大多数情况,SDK 不会降低发送分辨率,但是可能会降低帧率。 */ videoOptimizationMode?: 'default' | 'motion' | 'detail'; /** * 详情描述:推流码率最小值。当网络较差的时候可接受的视频质量下降码率的最小值。 * * 业务场景:期望视频持续高质量则把 minBitrate设置为接近目标码率的值。视频质量要求不高的推流可以把 minBitrate 设置得较低。 * * 默认值:默认最低码率是目标码率的 60%。 */ minBitrate?: number; /** * 详情描述:视频关键帧间隔时长,单位秒。 * * 默认值:2 秒。 * * 取值范围: [2, 6]。 */ keyFrameInterval?: number; } export interface ZegoCapabilityDetection { /** * 是否支持webRTC协议,true代表可以使用webRTC协议传输流 */ webRTC?: boolean; /** * 是否支持自定义流(不通过摄像头或者屏幕捕捉采集到的其他流, 比如video标签播放的mp4等) */ customCapture?: boolean; /** * 摄像头是否有权限调用 */ camera?: boolean; /** * 麦克风是否有权限调用 */ microphone?: boolean; /** * 是否支持屏幕共享功能 */ screenSharing?: boolean; /** * 浏览器支持的视频编码格式; 需要注意的是有些浏览器检测会支持某一种编码格式,但实际系统阉割了该功能, 所以如果某个编码格式返回false,则一定不支持, true 不一定100%支持 */ videoCodec?: ZegoVideoCodec; /** * 检测失败相关错误信息,设备相关的错误说明可以参考 [MediaDevices.getUserMedia](https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia#%E5%BC%82%E5%B8%B8) 接口文档的异常说明。 */ errInfo: ZegoCapabilityErrorInfo; /** * 根据传入的类型判断是否支持 */ result?: boolean; } export interface ZegoCapabilityError { /** * 错误名称 */ name?: string; /** * 错误描述信息 */ message?: string; } /** * 检测结果相关错误信息。 * */ export interface ZegoCapabilityErrorInfo { webRTC?: ZegoCapabilityError; customCapture?: ZegoCapabilityError; /** * 具体错误说明可以参考 [MediaDevices.getUserMedia](https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia#%E5%BC%82%E5%B8%B8) 接口文档的异常说明。 */ camera?: ZegoCapabilityError; /** * 具体错误说明可以参考 [MediaDevices.getUserMedia](https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia#%E5%BC%82%E5%B8%B8) 接口文档的异常说明。 */ microphone?: ZegoCapabilityError; extendedDate?: string; } export interface ZegoCheckSingleType { /** * 检测浏览器是否支持 webRTC */ webRTC: 'webRTC'; /** * 检测浏览器是否支持 自定义流 */ customCapture: 'customCapture'; /** * 检测摄像头是否有权限调用 */ camera: 'camera'; /** * 检测麦克风是否有权限调用 */ microphone: 'microphone'; /** * 检测是否支持屏幕共享 */ screenSharing: 'screenSharing'; /** * 检测是否支持H264编码格式 */ H264: 'H264'; /** * 检测是否支持VP8编码格式 */ VP8: 'VP8'; /** * 检测是否支持H265编码格式 */ H265: 'H265'; } /** * 创建第三方媒体流相关参数约束 * * Note: 详情描述:该类用于约束接口 createStream 的参数 source.custom。 * * Note: 业务场景:分享网络或本地的视频资源。 * */ export interface ZegoCustom { /** * 第三方源,<video>或<audio>媒体对象或MediaStream */ source: HTMLMediaElement | MediaStream; /** * 视频码率 */ bitrate?: number; /** * 音频码率,默认为 48kbps */ audioBitrate?: number; /** * 声道数,1为单声道,2为双声道,默认单声道 */ channelCount?: number; /** * 开始码率,默认为 “default”,环境要求:谷歌内核浏览器及 2.7.0 以上版本的 SDK 。 * 值为 “default” 表示使用 webrtc 默认开始码率 300kbps 然后慢慢上升;值为 “target” 表示快速上升到已设置的目标码率。 */ startBitrate?: 'default' | 'target'; /** * 视频优化模式,默认为 “default“ ; * 值为 “motion” 表示流畅模式,在大多数情况下,SDK 不会降低帧率,但是可能会降低发送分辨率。 * 值为 ”detail“ 表示清晰模式,在大多数情况,SDK 不会降低发送分辨率,但是可能会降低帧率 */ videoOptimizationMode?: 'default' | 'motion' | 'detail'; /** * 详情描述:推流码率最小值。当网络较差的时候可接受的视频质量下降码率的最小值。 * * 业务场景:期望视频持续高质量则把 minBitrate设置为接近目标码率的值。视频质量要求不高的推流可以把 minBitrate 设置得较低。 * * 默认值:默认最低码率是目标码率的 60%。 */ minBitrate?: number; /** * 详情描述:视频关键帧间隔时长,单位秒。 * * 默认值:2 秒。 * * 取值范围: [2, 6]。 */ keyFrameInterval?: number; } /** * 实时有序数据功能相关事件集合。 * * Note: 详情描述:描述事件名及其对应的回调参数。 * * Note: 业务场景:用于约束注册事件接口 on 和注销事件接口 off 的参数。 * */ export interface ZegoDataChannelEvent { /** * 实时信令接收更新事件。 */ receiveRealTimeSequentialData: PlayerRecvRealtimeSequentialDataCallBack; } export interface ZegoDeviceInfo { deviceName: string; deviceID: string; } export interface ZegoDeviceInfos { microphones: ZegoDeviceInfo[]; speakers: ZegoDeviceInfo[]; cameras: ZegoDeviceInfo[]; } /** * 基础美颜参数选项。 * */ export interface ZegoEffectsBeautyParam { /** * 美白强度,取值范围 [0,100],默认值 50。 */ whitenIntensity?: number; /** * 红润强度,取值范围 [0,100],默认值 50。 */ rosyIntensity?: number; /** * 磨皮强度,取值范围 [0,100],默认值 50。 */ smoothIntensity?: number; /** * 锐化强度,取值范围 [0,100],默认值 50。 */ sharpenIntensity?: number; } export interface ZegoElectronScreenSource { /** * id */ id: string; /** * 屏幕名称 */ name: string; /** * 屏幕快照 */ thumbnail: any; } /** * createStream 接口的配置参数约束 * * Note: 详情描述:该类用于约束接口 createStream 的配置参数。 * * Note: 业务场景:创建预览音视频流。 * * Note: 注意事项:camera、screen 和 custom 三个参数在每次调用接口 createStream 时只能选填其中一个。 * */ export interface ZegoLocalStreamConfig { /** * 摄像头麦克风采集流相关配置 */ camera?: ZegoCamera; /** * 屏幕捕捉采集流相关配置 */ screen?: boolean | ZegoScreen; /** * 第三方流采集相关配置 */ custom?: ZegoCustom; } export interface ZegoMixStreamAdvance { /** * 混流背景颜色; backgroundColor 为十六进制的 RGB,输入格式必须为 0xRRGGBB00。例如纯白色则传 0xffffff00。 */ backgroundColor?: number; /** * 混流背景图片; backgroundImage 需要提前在即构后台预设 imageId,输入格式为 preset-id://xxx */ backgroundImage?: string; /** * 混流视频编码,'vp8'(string) 或 ' h264' (string) 或 'h265' (string), 默认 'h264'(string) */ videoCodec?: 'VP8' | 'H264' | 'H265' | 'vp8' | 'h264' | 'h265'; /** * 用户自定义数据,长度不超过 1000 字节,设置后拉流方可通过监听 [onPlayerRecvSEI] 的回调获取 SEI 内容。注意必须使用 [ByteBuffer.allocateDirect] 函数创建,否则数据不能传给SDK */ userData?: Uint8Array; } export interface ZegoPlayAudioStats { /** * 音频码率 */ audioBitrate: number; /** * 音频编码格式"opus" */ audioCodec: string; /** * 网络抖动 */ audioJitter: number; /** * 音量 */ audioLevel: number; /** * 丢包数 */ audioPacketsLost: number; /** * 丢包率 */ audioPacketsLostRate: number; /** * 拉流音频质量,-1 表示未知,0 表示 极好,1 表示好,2 表示中等,3 表示 差,4 表示极差 */ audioQuality: number; /** * 采样率 */ audioSamplingRate: number; /** * 音轨是否被关闭 */ muteState: '0' | '1'; /** * 音频帧率 */ audioFPS: number; /** * 音频发送能量 */ audioSendLevel: number; /** * 音频编码格式 */ googCodecName: string; /** * 详情描述: 累计音频解码时长,单位为毫秒 (2.19.0 及以上版本支持)。 */ audioCumulativeDecodeTime: number; /** * 详情描述: 累计视频卡顿时长,单位为毫秒 (2.19.0 及以上版本支持)。 */ audioCumulativeBreakTime: number; /** * 详情描述: 累计视频卡顿率,单位为 1,取值范围 [0,1](2.19.0 及以上版本支持)。 */ audioCumulativeBreakRate: number; } /** * 拉流质量回调详细信息 * */ export interface ZegoPlayStats { /** * 视频相关描述 */ video: ZegoPlayVideoStats; /** * 音频相关描述 */ audio: ZegoPlayAudioStats; /** * 端到端延迟,单位为 ms。 */ peerToPeerDelay: number | undefined; /** * 端到端丢包率,单位 1。(2.13.0 及以前版本单位为 %) */ peerToPeerPacketLostRate: number | undefined; } export interface ZegoPlayVideoStats { /** * 接收视频高 */ frameHeight: number; /** * 接收视频宽 */ frameWidth: number; /** * 视频编码格式 */ googCodecName: string; /** * 视轨是否被关闭 */ muteState: '0' | '1'; /** * 视频码率 */ videoBitrate: number; /** * 视频转码帧率 */ videoFPS: number; /** * 视频渲染帧率 */ videoRenderFPS: number; /** * 视频丢包数 */ videoPacketsLost: number; /** * 视频丢包率 */ videoPacketsLostRate: number; /** * 视频解码帧率 */ videoTransferFPS: number; /** * 拉流视频质量,-1 表示未知,0 表示 极好,1 表示好,2 表示中等,3 表示 差,4 表示极差 */ videoQuality: number; /** * 视频解码总大小 */ videoFramesDecoded: number; /** * 当前实际接收的视频帧丢失数 */ videoFramesDropped: number; /** * 累计视频解码时长,单位为毫秒 (2.19.0 及以上版本支持)。 */ videoCumulativeDecodeTime: number; /** * 详情描述: 累计视频卡顿时长,单位为毫秒 (2.19.0 及以上版本支持) */ videoCumulativeBreakTime: number; /** * 详情描述: 累计视频卡顿率,单位为百分比,0.0 ~ 1.0 (2.9.0 及以上版本支持) */ videoCumulativeBreakRate: number; } /** * 拉流状态 * */ export interface ZegoPlayerState { /** * 流id */ streamID: string; /** * NO_PLAY:未拉流状态,PLAY_REQUESTING:正在请求拉流状态,PLAYING:正在拉流状态 */ state: 'NO_PLAY' | 'PLAY_REQUESTING' | 'PLAYING'; /** * 错误码 */ errorCode: number; /** * 扩展信息 */ extendedData: string; } export interface ZegoPublishAudioStats { /** * 音频码率 */ audioBitrate: number; /** * 音频编码格式 */ audioCodec: string; /** * 音频丢包数 */ audioPacketsLost: number; /** * 音频丢包率 */ audioPacketsLostRate: number; /** * 音频编码格式 */ googCodecName: string; /** * 音轨是否被关闭 */ muteState: '0' | '1'; /** * 音频帧率 */ audioFPS: number; /** * 推流音频质量,-1 表示未知,0 表示 极好,1 表示好,2 表示中等,3 表示 差,4 表示极差 */ audioQuality: number; } export interface ZegoPublishStats { /** * 推流视频数据 */ video: ZegoPublishVideoStats; /** * 推流音频数据 */ audio: ZegoPublishAudioStats; } export interface ZegoPublishStreamAudioConfig { /** * 是否开启降噪 */ ANS?: boolean; /** * 是否开启自动增益 */ AGC?: boolean; /** * 是否开启回声消除 */ AEC?: boolean; } export interface ZegoPublishStreamConfig { /** * 分辨率宽 */ width?: number | ConstraintExtend; /** * 分辨率高 */ height?: number | ConstraintExtend; /** * 帧率 */ frameRate?: number | ConstraintExtend; /** * 最大码率 */ maxBitrate?: number; /** * 视频质量等级,默认质量等级为 2 */ videoQuality?: number; } export interface ZegoPublishVideoStats { /** * 采集视频高 */ frameHeight: number; /** * 采集视频宽 */ frameWidth: number; /** * 视频编码格式 */ googCodecName: string; /** * 视轨是否被关闭 */ muteState: '0' | '1'; /** * 视频码率 */ videoBitrate: number; /** * 视频转码帧率 */ videoFPS: number; /** * 视频丢包数 */ videoPacketsLost: number; /** * 视频丢包率 */ videoPacketsLostRate: number; /** * 视频编码帧率 */ videoTransferFPS: number; /** * 推流质量,-1 表示未知,0 表示 极好,1 表示好,2 表示中等,3 表示 差,4 表示极差 */ videoQuality: number; /** * 是否开启硬编,true 为开启,false 为关闭,undefined 为未知。 */ isHardwareEncode?: boolean; } /** * 推流状态 * */ export interface ZegoPublisherState { /** * 流ID */ streamID: string; /** * NO_PUBLISH:未推流状态,PUBLISH_REQUESTING:正在请求推流状态,PUBLISHING:正在推流状态 */ state: 'PUBLISHING' | 'NO_PUBLISH' | 'PUBLISH_REQUESTING'; /** * 错误码 */ errorCode: number; /** * 扩展信息 */ extendedData: string; } /** * 媒体服务相关事件集合 * * Note: 详情描述:描述事件名及其对应的回调参数。 * * Note: 业务场景:用于约束注册事件接口 on 和注销事件接口 off 的参数。 * */ export interface ZegoRTCEvent { /** * 推流质量回调 */ publishQualityUpdate: PublishQualityUpdateCallBack; /** * 推流状态回调 */ publisherStateUpdate: PublisherStateUpdateCallBack; /** * 屏幕共享中断回调 */ screenSharingEnded: ScreenSharingEndedCallBack; /** * 拉流质量回调,每次回调间隔3s */ playQualityUpdate: PlayQualityUpdateCallBack; /** * 接收对端设置的流附加信息 */ streamExtraInfoUpdate: StreamExtraInfoUpdateCallBack; /** * 拉流状态回调 */ playerStateUpdate: PlayerStateUpdateCallBack; /** * 推流端的摄像头状态发生改变时触发 */ remoteCameraStatusUpdate: RemoteCameraStatusUpdateCallBack; /** * 推流端的麦克风状态改变时触发 */ remoteMicStatusUpdate: RemoteMicStatusUpdateCallBack; /** * 音浪回调 */ soundLevelUpdate: SoundLevelUpdateCallBack; /** * 监听视频设备状态变化 */ videoDeviceStateChanged: videoDeviceStateChangedCallBack; /** * 监听音频设备状态变化 */ audioDeviceStateChanged: audioDeviceStateChangedCallBack; /** * 监听设备异常 */ deviceError: deviceErrorCallBack; /** * 本地采集音频声浪回调 */ capturedSoundLevelUpdate: CapturedSoundLevelUpdateCallBack; /** * 收到远端流的 SEI 内容 */ playerRecvSEI: PlayerRecvSEICallBack; /** * 美颜功能发生异常错误。 */ beautyEffectError: BeautyEffectErrorCallBack; /** * 房间内流变化回调 * * 收到流删除通知时,开发者可将 extendedData 由字符串转为 json 对象得到 stream_delete_reason 字段,该字段为流删除原因的数组,stream_delete_reason[].code 字段可能为如下值:1(用户主动停止推流); 2(用户心跳超时); 3(用户重复登录); 4(用户被踢出); 5(用户断线); 6(被服务端移除) */ roomStreamUpdate: RoomStreamUpdateCallBack; /** * 异常事件状态更新回调 */ exceptionUpdate: ExceptionUpdateCallBack; /** * 房间内正在推流的用户的网络质量回调 */ networkQuality: NetworkQualityCallBack; /** * 混流中的每条单流的声浪更新通知。 */ mixerSoundLevelUpdate: MixerSoundLevelUpdateCallBack; /** * 自动混流中的每条单流的声浪更新通知。 */ autoMixerSoundLevelUpdate: AutoMixerSoundLevelUpdateCallBack; /** * 背景虚化、虚拟的功能发生异常错误。 */ backgroundEffectError: BackgroundEffectErrorCallBack; /** * 实验性 API 回调 */ recvExperimentalAPI: RecvExperimentalAPICallBack; /** * 混流转推 CDN 状态回调 */ mixerRelayCDNStateUpdate: MixerRelayCDNStateUpdateCallBack; /** * 拉流的视轨发生改变时触发 * 使用场景:当需要单独拿拉流得到的视轨进行视频渲染处理时使用。大部分场景推荐用 ZegoStreamView 渲染,不推荐使用该事件回调。 */ playerVideoTrackUpdate: PlayerTrackUpdateCallBack; /** * 拉流的音轨发生改变时触发 * 使用场景:当需要单独拿拉流得到的音轨进行音频渲染处理时使用。大部分场景推荐用 ZegoStreamView 渲染,不推荐使用该事件回调。 */ playerAudioTrackUpdate: PlayerTrackUpdateCallBack; /** * 推流编码更新回调 */ publisherVideoEncoderChanged: PublisherVideoEncoderChangedCallBack; } /** * Note: 支持版本:2.16.0 * */ export interface ZegoSEIConfig { /** * 详情描述:采用 H.264 的 SEI (nalu type = 6,payload type = 5) 类型打包,因为视频编码器自身会产生 payload type 为 5 的 SEI,或者使用视频文件推流时,视频文件中也可能存在这样的 SEI,所以使用此类型时,用户需要把 uuid + content 当作 buffer 塞给 SEI 发送接口;此时为了区别视频编码器自身产生的 SEI, App 在发送此类型 SEI 时,可以填写业务特定的 uuid(uuid长度为16字节),接收方使用 SDK 解析 payload type 为 5 的 SEI 时,会根据设置的过滤字符串过滤出 uuid 相符的 SEI 抛给业务,如果没有设置过滤字符串,SDK 会把所有收到的 SEI 都抛给开发者。 * * 业务场景:发送 SEI,采用 H.264 的 SEI (nalu type = 6,payload type = 5) 类型打包 。 */ unregisterSEIFilter?: string; SEIPass?: boolean; emulationPreventionByte?: boolean; } /** * 创建屏幕共享媒体流相关参数约束 * * Note: 详情描述:该类用于约束接口 createStream 的参数 source.screen。 * * Note: 业务场景:创建屏幕共享媒体流。 * * Note: 注意事项: 当 videoQuality 为 4 时,camera 增加 width / height / frameRate / bitrate 属性,这几个参数只支持正整数,必须要把这四个属性也传递给 SDK。 * */ export interface ZegoScreen { /** * 是否需要音频,默认为 false */ audio?: boolean; /** * 一般而言,屏幕共享视频质量的选择要根据实际情况和场景来确定,screen 中的 videoQuality 提供三种预设值: * * 1:帧率较大,适合对流畅度要求较高的场景。 * 2:适合在流畅度和清晰度之间取得平衡的场景。 * 3:码率较大,适合对清晰度要求较高的场景。 * 除了以上三种预设值,videoQuality 还提供一种自定义取值 4,可自定义帧率、码率,screen 增加 frameRate / bitrate 属性,使用时需要把这两个属性也传递给 SDK。 * * 视频质量等级,默认质量等级为 2 * 1 帧率:20 码率: 800K * 2 帧率:15 码率: 1500K * 3 帧率:5 码率: 2000K * 4 帧率:frameRate 码率: bitrate(k) */ videoQuality?: 1 | 2 | 3 | 4; /** * 分辨率宽 */ width?: number | ConstraintExtend; /** * 分辨率高 */ height?: number | ConstraintExtend; /** * 码率 */ bitrate?: number; /** * 帧率 */ frameRate?: number | ConstraintExtend; /** * 码率(旧写法,建议使用 bitrate) */ bitRate?: number; /** * 开始码率,默认为 “default”,环境要求:谷歌内核浏览器及 2.7.0 以上版本的 SDK 。 * 值为 “default” 表示使用 webrtc 默认开始码率 300kbps 然后慢慢上升;值为 “target” 表示快速上升到已设置的目标码率。 */ startBitrate?: 'default' | 'target'; /** * 视频优化模式,默认为 “default“ ; * 值为 “motion” 表示流畅模式,在大多数情况下,SDK 不会降低帧率,但是可能会降低发送分辨率。 * 值为 ”detail“ 表示清晰模式,在大多数情况,SDK 不会降低发送分辨率,但是可能会降低帧率 */ videoOptimizationMode?: 'default' | 'motion' | 'detail'; /** * 指定屏幕共享画面 ID , 仅限chrome 内核浏览器使用 */ sourceID?: string; /** * 详情描述:推流码率最小值。当网络较差的时候可接受的视频质量下降码率的最小值。 * * 业务场景:期望视频持续高质量则把 minBitrate设置为接近目标码率的值。视频质量要求不高的推流可以把 minBitrate 设置得较低。 * * 默认值:默认最小码率是目标码率的 60%。 */ minBitrate?: number; /** * 详情描述:视频关键帧间隔时长,单位秒。屏幕共享可以通过调大关键帧的间隔时长以减少视频编码性能压力。 * * 默认值:2 秒。 * * 取值范围: [2, 6]。 */ keyFrameInterval?: number; /** * 是否开启自动增益,默认关闭。 */ ANS?: boolean; /** * 是否开启自动增益,默认关闭。 */ AGC?: boolean; /** * 是否开启回声消除,默认开启。 */ AEC?: boolean; } export interface ZegoServerResponse { /** * 返回错误码,为 0 则是成功 */ errorCode: number; /** * 扩展信息 */ extendedData?: string; } /** * 截图相关配置选项 * */ export interface ZegoSnapshotOptions { /** * 详情描述:图片格式,支持 png 和 jpeg,默认为png。 * * 业务场景:指定截图的图片格式。 */ imageType?: string; /** * 详情描述:图片质量,0-1,默认1。 * * 业务场景:指定截图的图片质量。 */ quality?: number; /** * 详情描述:是否把截图保存下载到本地文件。 */ save?: boolean; /** * 详情描述:保存文件的名称,只在 save 设置为 true 时生效。 */ fileName?: string; } export interface AudioFrameOptions { /** * frameSize 每次回调的音频数据中每个声道在 AudioContext 原采样率下包含的采样数据个数,只能设为下列值:256, 512, 1024, 2048, 4096, 8192, 16384。默认为 4096。 * 只在首次设置生效 */ frameSize?: number; /** * 指定回调音频数据转换采样率,只能设为下列值:8000、16000、22050、24000、32000、44100、48000。默认是根据 AudioContext 的原采样率来设置。 */ sampleRate?: 8000 | 16000 | 22050 | 24000 | 32000 | 44100 | 48000; /** * 指定回调音频数据的声道数,只能设为下列值:1、2。默认是根据原数据的声道数决定。 */ channelCount?: 1 | 2; /** * 音频数据位深,只能设为下列值: 32 即 32-bit float、16 即 16-bit。默认值为 32。 */ bitDepth?: 32 | 16; } export interface ZegoAudioFrame { /** * 各个声道的音频原始数据, 类型 AudioFrameOptions.bitDepth 的设置返回对应位深类型的音频数据,默认是 Float32Array。 */ channels: Float32Array[] | Int16Array[]; /** * 声道数 */ channelCount: number; /** * 采样率 */ sampleRate: number; } /** * 音浪信息 * */ export interface ZegoSoundLevelInfo { /** * 流ID */ streamID: string; /** * 音浪大小,取值范围 [0,100],通常一个人正常说话时麦克风音浪会波动到 10 以上。 */ soundLevel: number; /** * 用于区分推拉流,“push” 表示推流,“pull” 表示拉流。 */ type: 'push' | 'pull'; } /** * 流信息 * */ export interface ZegoStreamList { /** * 流 ID */ streamID: string; /** * 流对应的用户 */ user: ZegoUser; /** * 流附加信息 */ extraInfo: string; /** * flv 播放地址 */ urlsFLV: string; /** * rtmp 播放地址 */ urlsRTMP: string; /** * hls 播放地址 */ urlsHLS: string; /** * https 协议的 flv 播放地址 */ urlsHttpsFLV: string; /** * https 协议的 hls 播放地址 */ urlsHttpsHLS: string; } /** * 媒体流播放组件选项。 * */ export interface ZegoStreamViewOptions { /** * 镜像显示,true 为开启,false 为关闭,默认是关闭。 */ mirror?: boolean; /** * 视频画面显示模式,"cover" 为覆盖容器;"contain" 为显示全部内容;"fill" 为拉伸填充。默认是 "contain"。 */ objectFit?: 'cover' | 'contain' | 'fill'; /** * 是否静音,true 为开启静音,false 为关闭静音。本地流的播放默认是静音,远端流的播放默认是关闭静音。 */ muted?: boolean; /** * 自动播放失败弹窗,默认开启,当出现自动播放失败时,SDK 会弹窗引导用户点击页面,来恢复音视频播放。可设置为 false 关闭。 */ enableAutoplayDialog?: boolean; /** * 当视频数据中断时是否去掉最后一帧画面。true 为清除,false 为保留,默认是 true。 */ clearLastFrame?: boolean; } /** * 媒体流播放组件选项。 * */ export interface ZegoLocalViewOptions { /** * 镜像显示,true 为开启,false 为关闭,默认是关闭。 */ mirror?: boolean; /** * 视频画面显示模式,"cover" 为覆盖容器;"contain" 为显示全部内容;"fill" 为拉伸填充。默认是 "contain"。 */ objectFit?: 'cover' | 'contain' | 'fill'; /** * 自动播放失败弹窗,默认开启,当出现自动播放失败时,SDK 会弹窗引导用户点击页面,来恢复音视频播放。可设置为 false 关闭。 */ enableAutoplayDialog?: boolean; /** * 当视频数据中断时是否去掉最后一帧画面。true 为清除,false 为保留,默认是 true。 */ clearLastFrame?: boolean; } export interface ZegoLocalAduioOptions { /** * 自动播放失败弹窗,默认开启,当出现自动播放失败时,SDK 会弹窗引导用户点击页面,来恢复音视频播放。可设置为 false 关闭。 */ enableAutoplayDialog?: boolean; } export interface ZegoLocalStreamEvent { autoplayFailed: (player: HTMLMediaElement, e?: any) => void; canPlayAudio: (e: Event) => void; canPlayVideo: (e: Event) => void; canPlayCaptureVideo: (e: Event) => void; canPlayCaptureAudio: (e: Event) => void; autoplayCaptureFailed: (player: HTMLMediaElement, e?: any) => void; videoTrackChanged: (videoTrack: MediaStreamTrack) => void; audioTrackChanged: (audioTrack: MediaStreamTrack) => void; captureVideoTrackChanged: (videoTrack: MediaStreamTrack) => void; captureAudioTrackChanged: (audioTrack: MediaStreamTrack) => void; } export interface ZegoVideoCodec { /** * 是否支持H264编解码能力 */ H264: boolean; /** * 是否支持VP8编解码能力 */ VP8: boolean; /** * 是否支持H265编解码能力 */ H265: boolean; } /** * 拉流模式,默认为 0。0 表示仅从 RTC 拉流;1 表示仅从 CDN 拉流;2 表示仅从 L3 拉流;5 表示自定义模式,SDK根据推流设置的customResourceConfig参数选择推流资源。 */ type ZegoResourceType = 0 | 1 | 2 | 5; /** * 自定义拉流资源类型配置。3.7.0 版本开始支持。 */ export interface ZegoCustomPlayerResourceConfig { /** * 开始推流前拉流选择的资源类型。0 表示仅从 RTC 拉流;1 表示仅从 CDN 拉流;2 表示仅从 L3。 */ beforePublish: ZegoResourceType; /** * 推流中拉流选择的资源类型。0 表示仅从 RTC 拉流;1 表示仅从 CDN 拉流;2 表示仅从 L3。 */ publishing: ZegoResourceType; /** * 停止推流后拉流选择的资源类型。0 表示仅从 RTC 拉流;1 表示仅从 CDN 拉流;2 表示仅从 L3。 */ afterPublish: ZegoResourceType; } export interface ZegoWebPlayOption { /** * 是否需要拉取视频,默认为 true; * 通常情况下建议不填,SDK 默认会根据拉到的实际设备状态选择是否拉音视频 */ video?: boolean; /** * 是否需要拉取音频,默认为 true; * 通常情况下建议不填,SDK 默认会根据拉到的实际设备状态选择是否拉音视频 */ audio?: boolean; /** * 拉流额外参数;鉴权参数 streamParams 格式如下:'zg_expired=XX&zg_nonce=XX&zg_token=XX',只有需要配置鉴权时才传入,否则请忽略 */ streamParams?: string; /** * 拉流模式,默认为 0。0 表示仅从 RTC 拉流;1 表示仅从 CDN 拉流;2 表示仅从 L3 拉流;5 表示自定义模式,SDK根据推流设置的customResourceConfig参数选择推流资源。 */ resourceMode?: ZegoResourceType; /** * 详情描述:是否发送 SEI */ isSEIStart?: boolean; /** * 拉流大小流类型 0 为小流,1为大流,2为自动 */ streamType?: 0 | 1 | 2; /** * ZegoCDNPlayer 实例对象,目前仅支持flv格式。 */ CDNPlayer?: any; /** * 用于播放 CDN 资源的 <video> 标签元素。 */ CDNVideo?: HTMLVideoElement; /** * @deprecated 已废弃, 请使用jitterBufferTarget进行设置 * 设置拉流音视频播放延迟,单位为秒,取值[1, 4]secs。如果网络状况不佳,浏览器可能会增加播放延迟以减少卡顿。 * 如果将enableLowLatency设置为true,则此参数不起作用。 */ playoutDelayHint?: number; /** * 设置拉流音视频播放延迟,单位为毫秒,取值(0, 4000]ms。如果网络状况不佳,浏览器可能会增加播放延迟以减少卡顿。 * 如果将enableLowLatency设置为true,则此参数不起作用。 */ jitterBufferTarget?: number; /** * 是否允许超低延迟,默认为 false; * 当设置为true,则playoutDelayHint和jitterBufferTarget参数不起作用。 */ enableLowLatency?: boolean; /** * 当 [resourceMode] 为5 即自定义拉流资源策略时的拉流资源类型配置。 * 自 3.7.0 版本起支持该参数。 */ customResourceConfig?: ZegoCustomPlayerResourceConfig; /** * 码率模板ID,用于拉取指定码率模板的流。 取值大于 100 的整数,ID 必须唯一 */ codecTemplateID?: number; /** * 是否开启流的自适应切换,1 表示开启,0 表示关闭。仅 [resourceMode] 为 L3 时有效。 * 若需要使用请联系 ZEGO 技术支持,否则可以忽略此参数。 */ adaptiveSwitch?: boolean; /** * 流的自适应转码模板ID列表。仅 [resourceMode] 为 L3 时有效。 * 若需要使用请联系 ZEGO 技术支持,否则可以忽略此参数。 */ adaptiveTemplateIDList?: number[]; /** * 允许在视频解码失败时自动使用单流转码 h264 或者 codecTemplateID 指定的编码模版。 */ transcodeOnDecodeFail?: boolean; /** * post type: 0 key frame only, 1 gop, 2 关闭 poster */ posterType?: 0 | 1 | 2; } /** * 详情描述:触发推流流量控制的因素。 * */ export declare enum TrafficControlFocusOnMode { /** * 只关注本地网络 */ TrafficControlFocusOnLocalOnly = 0, /** * 关注本地网络, 同时也兼顾远端网络,目前只在 1v1 场景下有效 */ TrafficControlFocusOnRemote = 1 } export declare enum TrafficControlMinVideoBitrateMode { /** * 低于设置的最低码率时,停止视频发送, 默认最低码率为50kbps */ NoVideo = 0 } export interface ZegoWebPublishOption { /** * 推流备选参数 ; 备选参数 streamParams 格式如下:'zg_expired=XX&zg_nonce=XX&zg_token=XX',只有需要配置鉴权才传入(可选功能) */ streamParams?: string; /** * 流附加信息 */ extraInfo?: string; /** * 推流视频编码,只能传入 'VP8' (string) 或 'H264' (string) 或 'H265' (string),默认值为 'H264' 。 */ videoCodec?: 'VP8' | 'H264' | 'H265'; /** * 房间ID,开启多房间功能后必填,选择在哪个房间推流。 */ roomID?: string; /** * 是否开启 SEI */ isSEIStart?: boolean; /** * SEI 类型 */ SEIType?: ZegoSEIType; /** * 是否开启 DTX 静音检测,用于减少不发声时推流的音频码率。默认是关闭 DTX。 */ enableDTX?: boolean; /** * 是否允许对该流进行审核,默认为允许, 0:允许, 1:不允许。 */ inspectFlag?: ZegoInspectFlagType; /** * 触发流量控制的因素, 默认为TrafficControlFocusOnRemote */ trafficControlFocusOnMode?: TrafficControlFocusOnMode; /** * 最低视频码率,单位为 kbps */ trafficControlMinVideoBitrate?: number; /** * 流控触发最低码率时的视频发送模式 */ trafficControlMinVideoMode?: TrafficControlMinVideoBitrateMode; /** * 流控开关,默认为开启, true:开启, false:关闭。 */ enableTrafficControl?: boolean; /** * 当 videoCodec 不可用时,是否自动切换为可用的 videoCodec, 默认false。 比如:当前设备不支持H264,开启该配置后,SDK 会自动切换至VP8 */ enableAutoSwitchVideoCodec?: boolean; /** * 推流时是否同步网络时间。且必须与 setStreamAlignmentProperty 方法配合使用。用于在混流服务或拉流端对多条流进行对齐,比如 KTV 的合唱场景。传 1 为开启,0 为关闭,默认是关闭。 */ forceSynchronousNetworkTime?: 0 | 1; } export declare enum ZegoInspectFlagType { Allow = 0, NotAllow = 1 } /** * 更新推流的类型 */ export declare enum ZegoStreamUpdateType { video = 0, audio = 1, videoAndAudio = 2 } /** * 背景虚化、虚拟功能发生异常错误时触发事件。 * * @param stream 开启背景虚化、虚拟功能对应的媒体流对象。 * @param errorCode 错误码。 * @param extendedData 错误描述信息。 */ type BackgroundEffectErrorCallBack = (stream: MediaStream, errorCode: number, extendedData: string) => void; /** * 美颜功能发生异常错误时触发事件。 * * @param stream 开启美颜功能对应的媒体流对象。 * @param errorCode 错误码。 * @param extendedData 错误描述信息。 */ type BeautyEffectErrorCallBack = (stream: MediaStream, errorCode: number, extendedData: string) => void; /** * @param content 回调的内容,JSON 对象 */ type RecvExperimentalAPICallBack = (content: Record<string, any>) => void; /** * 详情描述: 包括转推 CDN 的 URL、转推状态等 */ export interface ZegoStreamRelayCDNInfo { url: string; state: 'NO_RELAY' | 'RELAY_REQUESTING' | 'RELAYING'; updateReason: string; stateTime: number; } export declare const enum ZegoVideoCodecID { ZegoVideoCodecIDDefault = 0, ZegoVideoCodecIDVp8 = 2, ZegoVideoCodecIDH265 = 4 } export type PublisherVideoEncoderChangedCallBack = (fromCodecID: ZegoVideoCodecID, toCodecID: ZegoVideoCodecID, streamID: string) => void; /** * 混流转推 CDN 状态更新通知。 * 在 ZEGO RTC 服务器的混流任务的一般情况会以 RTMP 协议将输出流向 CDN 推送,推送过程中出现的状态的变化会从该回调函数通知出来。 * @param taskID 混流任务 ID。取值范围:长度不超过256。注意事项:该参数为字符串格式,不可以包含 URL 关键字,例如 'http', '?' 等,否则推拉流失败。仅支持数字,英文字符 和 '~', '!', '@', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '\'。 * @param infoList 当前 CDN 正在混流的信息列表。 */ type MixerRelayCDNStateUpdateCallBack = (taskID: string, infoList: Array<ZegoStreamRelayCDNInfo>) => void; /** * 本地采集音频声浪回调,该接口目前不兼容 safari * * @param soundLevel 本地采集的声浪值,取值范围为 0.0 ~ 100.0 。 */ type CapturedSoundLevelUpdateCallBack = (soundLevel: number) => void; /** * 拉流质量回调,拉流成功后开始触发 * * Note: 详情描述:订阅拉流质量回调 * * Note: 触发条件:拉流成功后 * * Note: 限制频率:无 * * Note: 关注回调:无 * * Note: 重点提示:每 3 秒回调一次 * * Note: 支持版本:1.0.0 * * Note: 废弃时间:无 * * @param streamID 流 ID * @param stats 拉流质量回调信息 */ type PlayQualityUpdateCallBack = (streamID: string, stats: ZegoPlayStats) => void; /** * 实时有序数据更新回调 * * Note: 详情描述:实时有序数据更新回调。 * * Note: 触发条件:收到了对端发送的 实时数据。 * * Note: 重点提示:必须在 startSubscribing 接口调用前监听。 * * Note: 支持版本:2.12.0 * * @param byte 实时数据 * @param dataLength 数据长度 * @param streamID 数据相关流ID */ type PlayerRecvRealtimeSequentialDataCallBack = (byte: ArrayBuffer, dataLength: number, streamID: string) => void; /** * 收到远端流的 SEI 内容 * 拉流成功后,当远端流调用 sendSEI 后,本端会收到此回调 * 若只拉纯音频流,将收不到推流端发送的 SEI 信息 * * @param streamID 流 ID * @param data SEI 内容 */ type PlayerRecvSEICallBack = (streamID: string, data: Uint8Array) => void; /** * 拉流状态发生变化时回调 * * Note: 详情描述:拉流的状态通知,拉流是异步过程,中间的状态切换都通过该接口回调。监听该回调,对重试依旧不能成功的情况,做错误日志收集,提示客户 * * Note: 触发条件:开始拉流后 * * Note: 限制频率:无 * * Note: 关注回调:无 * * Note: 重点提示:必须在拉流前监听 * * Note: 支持版本:1.0.0 * * Note: 废弃时间:无 * * @param result 拉流状态结果 */ type PlayerStateUpdateCallBack = (result: ZegoPlayerState) => void; /** * 订阅推流质量回调 * * Note: 详情描述:订阅推流质量回调 * * Note: 触发条件:推流成功后 * * Note: 限制频率:无 * * Note: 关注回调:无 * * Note: 重点提示:每 3 秒回调一次 * * Note: 支持版本:1.0.0 * * Note: 废弃时间:无 * * @param streamID 推流流ID * @param stats 推流质量描述 */ type PublishQualityUpdateCallBack = (streamID: string, stats: ZegoPublishStats) => void; /** * 推流状态回调 * * Note: 详情描述:推流的状态通知,推流是异步过程,中间的状态切换都通过该接口回调。监听该回调,对重试依旧不能成功的情况,做错误日志收集,提示客户 * * Note: 触发条件:开始推流后 * * Note: 限制频率:无 * * Note: 关注回调:无 * * Note: 重点提示:必须在推流前监听 * * Note: 支持版本:1.0.0 * * Note: 废弃时间:无 * * @param result 推流状态结果 */ type PublisherStateUpdateCallBack = (result: ZegoPublisherState) => void; /** * 拉流摄像头状态回调 * * @param streamID 流 ID * @param status 所拉流的摄像头状态 'OPEN'表示开启 'MUTE'表示关闭 */ type RemoteCameraStatusUpdateCallBack = (streamID: string, status: 'OPEN' | 'MUTE') => void; /** * 拉流麦克风状态回调 * * @param streamID 流 ID * @param status 所拉流的麦克风状态 'OPEN'表示开启 'MUTE'表示关闭 */ type RemoteMicStatusUpdateCallBack = (streamID: string, status: 'OPEN' | 'MUTE') => void; /** * 监听已登录房间内流的变化(增加,删除) * * Note: 详情描述:监听已登录房间内流的变化(增加,删除) * * Note: 触发条件:房间内有流新增或删除 * * Note: 限制频率:无 * * Note: 重点提示:需要在登录房间前调用 * * Note: 支持版本:1.0.0 * * Note: 废弃时间:无 * * @param roomID 房间ID * @param updateType DELETE:流删除,ADD:流新增 * @param streamList 更新流列表,数组顺序是以服务器接收到的时间进行排序。 * @param extendedData 扩展信息 */ type RoomStreamUpdateCallBack = (roomID: string, updateType: 'DELETE' | 'ADD', streamList: ZegoStreamList[], extendedData: string) => void; /** * 监听已推拉流采集、编码解码异常 * * Note: 详情描述:监听已推拉流采集、编码解码异常 * * Note: 触发条件:流质量开始更新 * * Note: 限制频率:无 * * Note: 重点提示:需要在推拉流前绑定 * * Note: 支持版本:2.23.0 * * Note: 废弃时间:无 * * @param streamID 流ID * @param eventData 事件相关信息 */ type ExceptionUpdateCallBack = (streamID: string, eventDate: ExceptionData) => void; /** * 房间内正在推流的用户的网络质量回调 * * Note: 详情描述:房间内正在推流的用户的网络质量回调 * * Note: 触发条件:流质量开始更新 * * Note: 限制频率:无 * * Note: 重点提示:需要在推拉流前绑定 * * Note: 支持版本:2.24.0 * * Note: 废弃时间:无 * * @param userID 用户id * @param upstreamQuality 上行质量 * @param downstreamQuality 下行质量 */ type NetworkQualityCallBack = (userID: string, upstreamQuality: QualityGrade, downstreamQuality: QualityGrade) => void; /** * 屏幕共享中断回调 * * Note: 详情描述:监听因为点击系统停止按钮,或者关闭捕捉进程等导致的屏幕共享流被动关闭 * * Note: 触发条件:屏幕共享后点击系统停止或者关闭捕捉进程等 * * Note: 限制频率:无 * * Note: 重点提示:必须在屏幕共享前监听 * * Note: 支持版本:1.0.0 * * Note: 废弃时间:无 * * @param mediaStream 创建屏幕共享流得到的流对象 */ type ScreenSharingEndedCallBack = (mediaStream: MediaStream) => void; /** * 推拉流音浪回调,该接口目前不兼容safari * * @param soundLevelList 声浪信息列表,包括流id,声浪大小,及流状态 */ type SoundLevelUpdateCallBack = (soundLevelList: ZegoSoundLevelInfo[]) => void; /** * 流附加消息变化时回调 * * Note: 详情描述:接收对端设置的流附加信息 * * Note: 触发条件:流附加消息更新 * * Note: 支持版本:1.0.0 * * Note: 废弃时间:无 * * @param roomID 房间ID * @param streamList 流信息 */ type StreamExtraInfoUpdateCallBack = (roomID: string, streamList: { streamID: string; user: ZegoUser; extraInfo: string; }[]) => void; /** * 音频设备状态变化回调 * * Note: 详情描述:监测到系统中有音频设备添加或移除时,会触发此回调。通过监听此回调,用户可在必要的时候更新使用特定设备进行音频采集。 * * Note: 触发条件:音频设备添加或移除时触发 * * Note: 限制频率:无 * * Note: 关注回调:无 * * Note: 重点提示: * 需要浏览器授权麦克风摄像头后才能触发回调; * 由于设备和浏览器的限制,部分浏览器在使用某些设备时可能不会触发该回调 * * Note: 支持版本:1.16.0 * * Note: 废弃时间:无 * * @param updateType 'DELETE' 表示设备删除, 'ADD'表示设备增加 * @param deviceType 'Input'表示输入设备, 'Output'表示输出设备 * @param deviceInfo 设备信息 */ type audioDeviceStateChangedCallBack = (updateType: 'DELETE' | 'ADD', deviceType: 'Input' | 'Output', deviceInfo: { deviceName: string; deviceID: string; }) => void; /** * 设备异常回调 * * Note: 详情描述:当本地推流的音频或视频设备读写出现异常时会触发此回调 * * Note: 触发条件:推流使用的音视频设备出现异常(如松动时)触发 * * Note: 限制频率:无 * * Note: 关注回调:无 * * Note: 重点提示: * 推流后才可能触发; * 由于设备和浏览器的限制,部分浏览器在使用某些设备时可能不会触发该回调 * * Note: 支持版本:1.16.0 * * Note: 废弃时间:无 * * @param errorCode 错误码 * @param deviceName 发生异常的设备名称 */ type deviceErrorCallBack = (errorCode: number, deviceName: string) => void; /** * 视频设备状态变化更新回调 * * Note: 详情描述:监测到系统中有视频设备添加或移除时,会触发此回调。通过监听此回调,用户可在必要的时候更新使用特定设备进行视频采集。 * * Note: 触发条件:视频设备添加或移除时触发 * * Note: 限制频率:无 * * Note: 关注回调:无 * * Note: 重点提示: * 需要浏览器授权麦克风摄像头后才能触发回调; * 由于设备和浏览器的限制,部分浏览器在使用某些设备时可能不会触发该回调 * * Note: 支持版本:1.16.0 * * Note: 废弃时间:无 * * @param updateType 'DELETE' 为设备被移除, 'ADD'表示设备增加 * @param deviceInfo 设备信息,deviceName为设备名称,deviceID为设备ID */ type videoDeviceStateChangedCallBack = (updateType: 'DELETE' | 'ADD', deviceInfo: { deviceName: string; deviceID: string; }) => void; /** * 混流中的每条单流的声浪更新通知。 * * Note: 详情描述:开发者可根据此回调在观众拉混流的 UI 界面显示哪条流的主播在说话的效果。 * * Note: 业务场景:常用于需要多个视频画面合成一个视频时使用混流,比如教育类,直播老师和学生的画面。 * * Note: 触发条件:开发者调用 [startPlayingStream] 函数并且拉流选项开启接收 SEI,开始拉混流后触发回调,回调通知周期为 100 ms。 * * Note: 支持版本:3.0.0 * * Note: 废弃时间:无 * * @param soundLevels 混流中每条单流的声浪键值对,key 为每条单流的 soundLevelID,value 为对应的单流的声浪值。取值范围:value 的取值范围为 0.0 ~ 100.0。 */ type MixerSoundLevelUpdateCallBack = (soundLevels: Map<number, number>) => void; /** * 自动混流中的每条单流的声浪更新通知。 * * Note: 详情描述:开发者可根据此回调在观众拉混流的 UI 界面显示哪条流的主播在说话的效果。 * * Note: 业务场景:常用于需要多个视频画面合成一个视频时使用混流,比如教育类,直播老师和学生的画面。 * * Note: 触发条件:开发者调用 [startPlayingStream] 函数并且拉流选项开启接收 SEI,开始拉混流后触发回调,回调通知周期为 100 ms。 * * Note: 支持版本:3.0.0 * * Note: 废弃时间:无 * * @param soundLevels 混流中每条单流的声浪键值对,key 为每条单流的 streamID,value 为对应的单流的声浪值,value 的取值范围为 0.0 ~ 100.0。 */ type AutoMixerSoundLevelUpdateCallBack = (soundLevels: Map<string, number>) => void; /** * 拉流音轨或视轨更新回调 * * @param streamID 流 ID * @param track 拉流上的音轨或视轨 */ type PlayerTrackUpdateCallBack = (streamID: string, track: MediaStreamTrack) => void; export interface ZegoEvent extends ZegoRTCEvent, ZegoRTMEvent { } export * from './ZegoRangeAudioEntity.web'; export * from './ZegoCopyrightedMusicEntity.web'; export * from './ZegoBackgroundProcessEntity.web'; export * from './ZegoVoiceChangerEntity.web'; export * from './ZegoMixStreamEntity';