UNPKG

zego-express-engine-webrtc

Version:

zego webrtc express sdk

2,208 lines 73.2 kB
import { ExceptionData, 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 } /** * 混流视频渲染模式 * * 详情描述:混流视频渲染模式。 * */ export declare enum ZegoMixStreamRenderMode { /** * 填充模式,等比填充布局,画面可能有部分被裁剪。 */ AspectFill = 0, /** * 适应模式,等比缩放画面,布局内可能有留白。 */ AspectFit = 1 } /** * 混流中单条输入流的图片信息 * * Note: 支持版本:2.24.0 及以上。 * * Note: 详情描述:为单条输入流的内容设置图片,用于替代视频,即当使用图片时不显示视频。图片复用的 [ZegoMixerInput] 中的 layout 布局。 * * Note: 业务场景:开发者在视频连麦过程中,需要暂时关闭摄像头显示图像,或音频连麦时,显示图片等。 * * Note: 使用限制:图片大小限制在 1M 以内。 * */ export interface ZegoMixerImageInfo { /** * 详情描述:图片路径,不为空显示图片,否则显示视频。支持 JPG 和 PNG 格式。支持 2 种使用方式:1. URI:将图片提供给 ZEGO 技术支持进行配置,配置完成后会提供图片 URI,例如:preset-id://xxx.jpg。2. URL:仅支持 HTTP 协议。 */ url: string; /** * 图片显示模式。 * 0:默认值。当 url 不为空时,覆盖视频内容,显示图片。 * 1:根据摄像头状态,判断是否显示图片。摄像头关闭,显示图片。摄像头打开,显示视频内容(无需手动清空 url 参数)。 * 2:根据输入流是否为空流,判断是否显示图片。输入流连续3秒为空流时,显示图片。判断空流时长默认为3秒,若需额外配置请联系 ZEGO 技术支持。输入流有视频数据时,显示视频内容。 */ displayMode?: number; } /** * 字体类型。 * */ export declare enum ZegoFontType { /** * 思源黑体。 */ ZegoFontTypeSourceHanSans = 0, /** * 阿里巴巴普惠体。 */ ZegoFontTypeAlibabaSans = 1, /** * 旁门正道标题体。 */ ZegoFontTypePangMenZhengDaoTitle = 2, /** * 站酷快乐体。 */ ZegoFontTypeHappyZcool = 3 } /** * 字体风格。 * * 详情描述: 字体风格配置,可用于配置字体类型、字体大小、字体颜色、字体透明度。 * * 业务场景: 手动混流场景时,设置文字水印,比如多人连麦直播。 * */ export interface ZegoFontStyle { /** * 是否必填: 否。 * * 默认值: 思源黑体 [ZegoFontTypeSourceHanSans]。 */ type?: ZegoFontType; /** * 是否必填: 否。 * * 默认值: 24。 * * 取值范围: [12,100] 的整数。 */ size?: number; /** * 是否必填: 否。 * * 默认值: 16777215(白色)。 * * 取值范围: [0,16777215] 的整数。 */ color?: number; /** * 是否必填: 否。 * * 默认值: 0。 * * 取值范围: [0,100],100 为完全不透明,0 为完全透明。 */ transparency?: number; /** * 是否必填: 否。 * 默认值: 否。 * 取值范围: 是/否。 */ border?: boolean; /** * 是否必填: 否。 * 默认值: 0。 * 取值范围: [0,16777215]。 */ borderColor?: number; } /** * 文本信息。 * * 详情描述: 文本信息配置,可用于配置文本内容、文本位置、文本风格。 * * 业务场景: 手动混流场景时,设置文字水印,比如多人连麦直播。 * */ export interface ZegoLabelInfo { /** * 是否必填: 是。 * * 取值范围: 最大支持显示100个中文字符,300 个英文字符。 */ text: string; /** * 是否必填: 否。 * * 默认值: 0。 */ left?: number; /** * 是否必填: 否。 * * 默认值: 0。 */ top?: number; /** * 是否必填: 否。 */ font?: ZegoFontStyle; } /** * 详情描述: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"; } /** * 创建第三方媒体流相关参数约束 * * 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),默认 'h264'(string) */ videoCodec?: "VP8" | "H264" | "vp8" | "h264"; /** * 用户自定义数据,长度不超过 1000 字节,设置后拉流方可通过监听 [onPlayerRecvSEI] 的回调获取 SEI 内容。注意必须使用 [ByteBuffer.allocateDirect] 函数创建,否则数据不能传给SDK */ userData?: Uint8Array; } /** * 混流水印 * * 详情描述: 配置一个水印的图片 URL 以及该水印在画面中的大小方位。 * */ export interface ZegoWatermark { /** * 详情描述: 水印图片路径。支持本地文件绝对路径 (file://xxx)、Asset 资源路径 (asset://xxx) 和 Android URI 路径 (String path = "uri://" + uri.toString();)。 格式支持 png、jpg。 */ imageURL: string; /** * 详情描述: 水印图片的大小方位 */ layout: ZegoMixStreamLayout; } export interface ZegoMixStreamConfig { /** * 混流任务 id(客户自定义,务必保证唯一),必填,最大为256个字符,仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', ' */ taskID: string; /** * 混流输入流列表 */ inputList: ZegoMixStreamInput[]; /** * 混流输出流列表 */ outputList: string[] | ZegoMixStreamOutput[]; /** * 混流输出配置 */ outputConfig: ZegoMixStreamOutputConfig; /** * 混流任务的水印 */ watermark?: ZegoWatermark; /** * 是否开启混流的声浪回调通知,开启后拉混流时可通过 [onMixerSoundLevelUpdate] 回调收到每条单流的声浪信息 */ enableSoundLevel?: boolean; /** * 混流任务的白板输入信息 */ /** * 流对齐模式,0 为关闭,1为开启。需先调用 [setStreamAlignmentProperty] 函数开启指定通道的推流网络时间校准的流对齐。 */ streamAlignmentMode?: number; /** * 混流白板输入对象 */ whiteboard?: ZegoMixerWhiteboard; } export interface ZegoMixStreamInput { /** * 输入流 ID */ streamID: string; /** * 混流内容类型;contentType 取值为'VIDEO'(音视频)、'AUDIO'(纯音频),默认为'VIDEO' */ contentType?: "VIDEO" | "AUDIO" | "VIDEO_ONLY"; /** * 流在输出画布上的布局,当 contentType 为 “AUDIO” 时 layout 参数可不传。 */ layout?: ZegoMixStreamLayout; /** * 渲染模式,0 为填充模式,1 为适应模式。 */ renderMode?: ZegoMixStreamRenderMode; /** * 详情描述:用户图片信息。 */ imageInfo?: ZegoMixerImageInfo; /** * 详情描述:文字水印 */ label?: ZegoLabelInfo; /** * 详情描述: 视频画面圆角半径,单位 px。 * * 是否必填: 否。 * * 取值范围: 不超过 [layout] 参数设置的视频画面的宽高。 * * 默认值: 0。 */ cornerRadius?: number; /** * 混流音浪 ID,用于在 [mixerSoundLevelUpdate] 中找对应输入流的音浪值。 */ soundLevelID?: number; /** * 输入流音量, 有效范围 [0, 200], 默认是 100。 */ volume?: number; /** * 当前输入流是否开启焦点语音,开启了会突出此路流的声音。 */ isAudioFocus?: boolean; } export interface ZegoMixStreamLayout { /** * 目标位置,上 */ top: number; /** * 目标位置,左 */ left: number; /** * 目标位置,下 */ bottom: number; /** * 目标位置,右 */ right: number; } /** * https://doc-zh.zego.im/article/api?doc=express-video-sdk_API~java_android~enum~ZegoAudioCodecID */ export declare enum ZegoAudioCodecID { ZegoAudioCodecIDNormal = 1, ZegoAudioCodecIDNormal2 = 2, ZegoAudioCodecIDLow3 = 6 } export declare enum ZegoAudioMixMode { /** * 默认模式,无特殊行为 */ ZegoAudioMixModeRaw = 0, /** * 音频聚焦模式,可在多路音频流中突出某路流的声音 */ ZegoAudioMixModeFocused = 1 } /** * 详情描述: 配置混流任务的音频码率、声道数、音频编码 */ export interface ZegoMixerAudioConfig { /** * 音频码率,单位为 kbps,默认为 48 kbps,开始混流任务后不能修改 */ bitrate?: number; /** * 音频声道,默认为 Mono 单声道 */ channel?: 1 | 2; codecID?: ZegoAudioCodecID; } /** * 详情描述: 调用 [StartAutoMixerTask] 函数向 ZEGO RTC 服务器发起自动混流任务时,需要通过该参数配置自动混流任务,包括任务 ID、房间 ID、音频配置、输出流列表、是否开启声浪回调通知。 * 业务场景: 当向 ZEGO RTC 服务器发起自动混流任务时,需要这个配置。 * 注意事项: 作为调用 [StartAutoMixerTask] 函数时传入的参数。 */ export interface ZegoAutoMixerTask { /** * 混流任务 id(客户自定义,务必保证唯一),必填,最大为256个字符,仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '', '^', '&', '*', '(', ')', '_', '+', '=', '-', ', ';', '’', ',', ' */ taskID: string; /** * 自动混流任务的房间 ID。必填,仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '\'。如果需要与 Web SDK 互通,请不要使用 '%'。 */ roomID: string; /** * 自动混流任务的音频配置,可配置音频码率、音频声道,编码 ID、多路音频流混音模式。 * 如果对自动混流任务的音频有特殊需求,比如需要调整音频码率,可根据需要调整该参数,否则不用配置。 * 默认音频码率为 "48 kbps", 默认音频声道为 "ZEGO_AUDIO_CHANNEL_MONO", 默认编码 ID 为 "ZEGO_AUDIO_CODEC_ID_DEFAULT",默认多路音频流混音模式为 "ZEGO_AUDIO_MIX_MODE_RAW"。 */ audioConfig?: ZegoMixerAudioConfig; /** * 自动混流任务的输出流列表,列表中为 URL 或者流 ID,若为 URL 格式 目前只支持 RTMP URL 格式:rtmp://xxxxxxxx。 * 当发起自动混流任务时,需要配置该参数指明混流输出目标。Mix stream output target * 必填 */ outputList: ZegoMixStreamOutput[]; /** * 是否开启自动混流的声浪回调通知,开启后拉混流时可通过 [onAutoMixerSoundLevelUpdate] 回调收到每条单流的声浪信息。 * 当发起自动混流任务时,如果需要回调流的声浪信息,需要配置该参数。 * 可选。 */ enableSoundLevel?: boolean; /** * 流对齐模式,0 为关闭,1为开启。需先调用 [setStreamAlignmentProperty] 函数开启指定通道的推流网络时间校准的流对齐。 */ streamAlignmentMode?: number; /** * 设置混流服务器拉流缓存自适应调整的区间范围下限。在实时合唱 KTV 场景下,推流端网络轻微波动可能会导致混流的卡顿,此时观众拉混流的时候,会有比较高概率出现卡顿的问题。通过调节混流服务器拉流缓存自适应调整的区间范围下限,可优化观众端拉混流出现的卡顿问题,但会增大延迟。默认不设置,即服务端使用自身配置值。只会对新的输入流设置生效,对于已经开始混流的输入流不生效。 * [0,10000],超过最大值混流会失败。 */ minPlayStreamBufferLength?: number; } export declare enum ZegoEncodeProfile { ZegoEncodeProfileDefault = 0, ZegoEncodeProfileBaseline = 1, ZegoEncodeProfileMain = 2, ZegoEncodeProfileHigh = 3 } export interface ZegoMixerOutputVideoConfig { videoCodecID?: string; bitrate?: number; encodeProfile?: ZegoEncodeProfile; encodeLatency?: number; enableLowBitrateHD?: boolean; } export interface ZegoMixStreamOutput { /** * 混流输出流 ID 或 URL */ target: string; /** * 混流输出视频设置。 */ videoConfig?: ZegoMixerOutputVideoConfig; } export interface ZegoMixStreamOutputConfig { /** * 混流输出视频码率,kbps * 数值 (必须,且大于 0) */ outputBitrate: number; /** * 混流输出视频帧率 */ outputFPS: number; /** * 混流输出视频分辨率宽度 */ outputWidth: number; /** * 混流输出视频分辨率高度 */ outputHeight: number; /** * 混流输出音频编码 * outputAudioCodecID 可选0:HE-AAC,1: LC-AAC,2:MP3,3: OPULS 默认为0 * 注意:如果使用 CDN 录制,音频编码请选择 LC-AAC。这是因为部分浏览器(如 Google Chrome 和 Microsoft Edge)不兼容 HE-AAC 音频编码格式,从而导致录制文件无法播放 */ outputAudioCodecID?: 0 | 1 | 2 | 3; /** * 混流输出音频码率,kbps */ outputAudioBitrate?: number; /** * 混流输出声道数 */ outputAudioChannels?: 1 | 2; /** * 多路音频流混音模式。若 [ZegoAudioMixMode] 选择为 [Focused],SDK 将会选择 4 路已设置 [isAudioFocus] 的输入流作为焦点语音突出,若未选择或选择少于 4 路,则会自动补齐 4 路。 */ audioMixMode?: ZegoAudioMixMode; } /** * 混流输入白板对象 * 配置混流输入的白板 ID、宽高比、布局 */ export interface ZegoMixerWhiteboard { /** * 白板 ID */ whiteboardID: string; /** * 白板原始宽高比(宽),默认宽高比为 16:9 */ horizontalRatio?: number; /** * 白板原始宽高比(高),默认宽高比为 16:9 */ verticalRatio?: number; /** * 白板是否会加载动态 PPT 文件,默认值为 false */ isPPTAnimation?: boolean; /** * 白板的布局 */ layout: ZegoMixStreamLayout; /** * 白板视图层级 */ zOrder?: number; /** * 白板的背景颜色。默认是 0xF1F3F400 (灰色)。 颜色值对应 RGBA 为 0xRRGGBBAA,目前不支持设置背景色的透明度,0xRRGGBBAA 中的 AA 为 00 即可。例如:选取 RGB 为 #87CEFA 作为背景色,此参数传 0x87CEFA00。 */ backgroundColor?: number; } 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 每次回调的音频数据中每个声道包含的采样数据个数,只能设为下列值:256, 512, 1024, 2048, 4096, 8192, 16384。默认为 4096。 * 只在首次设置生效 */ frameSize?: 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; } /** * 拉流模式,默认为 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[]; } /** * 详情描述:触发推流流量控制的因素。 * */ 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),默认值为 'H264' 。 */ videoCodec?: "VP8" | "H264"; /** * 房间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; } 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 } 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; /** * channels 音频数据 * channelCount 音频数据声道数 */ export type AudioFrameCallback = (audioData: { channels: Float32Array[]; channelCount: number; sampleRate: number; }) => 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; /** * 拉流音轨或视轨更新回调