import { IAudioProcessor } from 'agora-rte-extension';
import { IBaseProcessor } from 'agora-rte-extension';
import { IExtension } from 'agora-rte-extension';
declare const AgoraRTC: IAgoraRTC;
export default AgoraRTC;
/**
* @ignore
*/
declare class AgoraRTCError extends AgoraRTCError_2 {
readonly name: string;
constructor(code: AgoraRTCErrorCode, message?: string, data?: any);
print(level?: "error" | "warning"): AgoraRTCError;
throw(): never;
}
/**
* @ignore
*/
declare class AgoraRTCError_2 extends Error implements IAgoraRTCError {
readonly code: AgoraRTCErrorCode;
readonly message: string;
readonly data?: any;
readonly name: string;
constructor(code: AgoraRTCErrorCode, message?: string, data?: any);
toString(): string;
print(level?: "error" | "warning", logger?: any): AgoraRTCError_2;
throw(logger?: any): never;
}
/**
* AgoraSDK 抛出的错误的 Code
* @ignore
*/
export declare enum AgoraRTCErrorCode {
/**
* 所有用户无法处理的、非预期的错误都使用这个错误码
*/
UNEXPECTED_ERROR = "UNEXPECTED_ERROR",
/** 服务端返回了非预期的响应 */
UNEXPECTED_RESPONSE = "UNEXPECTED_RESPONSE",
TIMEOUT = "TIMEOUT",
/** 非法参数 */
INVALID_PARAMS = "INVALID_PARAMS",
/** 当前设备不可读 */
NOT_READABLE = "NOT_READABLE",
/** 浏览器不支持 */
NOT_SUPPORTED = "NOT_SUPPORTED",
/** 非法操作,比如在加入房间之前发布 */
INVALID_OPERATION = "INVALID_OPERATION",
/** 操作中止,比如在加入房间的中途离开房间 */
OPERATION_ABORTED = "OPERATION_ABORTED",
/** 安全策略限制 */
WEB_SECURITY_RESTRICT = "WEB_SECURITY_RESTRICT",
/** P2P信令交互过程中出现异常 */
EXCHANGE_SDP_FAILED = "EXCHANGE_SDP_FAILED",
/** P2P添加候选人过程中出现异常 */
ADD_CANDIDATE_FAILED = "ADD_CANDIDATE_FAILED",
/** DataChannel交互过程中出现异常 */
DATACHANNEL_FAILED = "DATACHANNEL_FAILED",
/**
* http post 请求相关
*/
NETWORK_ERROR = "NETWORK_ERROR",
NETWORK_TIMEOUT = "NETWORK_TIMEOUT",
NETWORK_RESPONSE_ERROR = "NETWORK_RESPONSE_ERROR",
/**
* report 相关
*/
API_INVOKE_TIMEOUT = "API_INVOKE_TIMEOUT",
/**
* Device 模块相关
*/
/** 枚举本地设备失败 */
ENUMERATE_DEVICES_FAILED = "ENUMERATE_DEVICES_FAILED",
/** 找不到指定设备 */
DEVICE_NOT_FOUND = "DEVICE_NOT_FOUND",
/**
* Electron 相关
*/
/** 无法获取 Electron 对象 */
ELECTRON_IS_NULL = "ELECTRON_IS_NULL",
/** 无法通过 Electron 获取屏幕共享源 */
ELECTRON_DESKTOP_CAPTURER_GET_SOURCES_ERROR = "ELECTRON_DESKTOP_CAPTURER_GET_SOURCES_ERROR",
/**
* Stream 相关
*/
/** init 因为其他的 init 操作而中止 */
/** chrome 屏幕共享插件没有响应 */
CHROME_PLUGIN_NO_RESPONSE = "CHROME_PLUGIN_NO_RESPONSE",
/** chrome 屏幕共享插件没有安装 */
CHROME_PLUGIN_NOT_INSTALL = "CHROME_PLUGIN_NOT_INSTALL",
/** 媒体采集的参数不支持 */
MEDIA_OPTION_INVALID = "MEDIA_OPTION_INVALID",
/** 获取媒体设备权限被拒绝 */
PERMISSION_DENIED = "PERMISSION_DENIED",
/** 浏览器不支持该 constraint */
CONSTRAINT_NOT_SATISFIED = "CONSTRAINT_NOT_SATISFIED",
/** 播放时被浏览器自动播放策略阻止 */
/** 创建小流时检测到大流没有视频轨 */
/** 屏幕共享不允许使用大小流 */
/** 轨道被禁用 */
TRACK_IS_DISABLED = "TRACK_IS_DISABLED",
/** 获取 video element 可见状态失败*/
GET_VIDEO_ELEMENT_VISIBLE_ERROR = "GET_VIDEO_ELEMENT_VISIBLE_ERROR",
/** 屏幕共享音频时用户没有点击 **分享音频** */
SHARE_AUDIO_NOT_ALLOWED = "SHARE_AUDIO_NOT_ALLOWED",
/** 使用RTCRtpEncodingParameters 进行小流编码失败*/
LOW_STREAM_ENCODING_ERROR = "LOW_STREAM_ENCODING_ERROR",
/** 设置 rtp encoding parameters 失败 */
SET_ENCODING_PARAMETER_ERROR = "SET_ENCODING_PARAMETER_ERROR",
/** Track 状态不可达 */
TRACK_STATE_UNREACHABLE = "TRACK_STATE_UNREACHABLE",
/**
* Client join 相关
*/
/** 用户提供的 Token 生成函数运行时出现错误 */
/** 通过 string uid allocate 服务返回了非法的 int uid */
INVALID_UINT_UID_FROM_STRING_UID = "INVALID_UINT_UID_FROM_STRING_UID",
/** 尝试了数次均无法获取云代理服务 */
CAN_NOT_GET_PROXY_SERVER = "CAN_NOT_GET_PROXY_SERVER",
/** 尝试了数次均无法获取 gateway 地址 */
CAN_NOT_GET_GATEWAY_SERVER = "CAN_NOT_GET_GATEWAY_SERVER",
/** 从 AP 拿到的网关列表为空 (obsolete after 4.7.0)*/
VOID_GATEWAY_ADDRESS = "VOID_GATEWAY_ADDRESS",
/** UID 冲突,重复的 UID */
UID_CONFLICT = "UID_CONFLICT",
/** multi unilbs 服务,响应解析错误 */
MULTI_UNILBS_RESPONSE_ERROR = "MULTI_UNILBS_RESPONSE_ERROR",
/** 更新 Ticket 请求失败 */
UPDATE_TICKET_FAILED = "UPDATE_TICKET_FAILED",
/** join 过程中 TOKEN 过期了 */
TOKEN_EXPIRE = "TOKEN_EXPIRE",
/**
* Client publish/unpublish 相关
*/
/** 传入了非法的 local track */
INVALID_LOCAL_TRACK = "INVALID_LOCAL_TRACK",
/** 传入了非法的 track */
INVALID_TRACK = "INVALID_TRACK",
/** replaceTrack 等操作时找不到指定的 sender */
SENDER_NOT_FOUND = "SENDER_NOT_FOUND",
/** p2p 建立相关 */
CREATE_OFFER_FAILED = "CREATE_OFFER_FAILED",
SET_ANSWER_FAILED = "SET_ANSWER_FAILED",
ICE_FAILED = "ICE_FAILED",
PC_CLOSED = "PC_CLOSED",
SENDER_REPLACE_FAILED = "SENDER_REPLACE_FAILED",
/** 获取本地RTP能力失败 */
GET_LOCAL_CAPABILITIES_FAILED = "GET_LOCAL_CAPABILITIES_FAILED",
GET_LOCAL_CONNECTION_PARAMS_FAILED = "GET_LOCAL_CONNECTION_PARAMS_FAILED",
SUBSCRIBE_FAILED = "SUBSCRIBE_FAILED",
UNSUBSCRIBE_FAILED = "UNSUBSCRIBE_FAILED",
/** 网关抛出的 P2P 断开 */
GATEWAY_P2P_LOST = "GATEWAY_P2P_LOST",
NO_ICE_CANDIDATE = "NO_ICE_CANDIDATE",
/** 不允许发布多个视频轨道 */
CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS = "CAN_NOT_PUBLISH_MULTIPLE_VIDEO_TRACKS",
EXIST_DISABLED_VIDEO_TRACK = "EXIST_DISABLED_VIDEO_TRACK",
/**
* Client subscribe/unsubscribe 相关
*/
/** 找不到指定的订阅用户 */
INVALID_REMOTE_USER = "INVALID_REMOTE_USER",
/** 远端用户没有发布 */
REMOTE_USER_IS_NOT_PUBLISHED = "REMOTE_USER_IS_NOT_PUBLISHED",
/** 相同流的上一个订阅还没有完成 */
/**
* Client 其他
*/
/** 自定义事件上报失败,通常是因为网络原因 */
CUSTOM_REPORT_SEND_FAILED = "CUSTOM_REPORT_SEND_FAILED",
/** 自定义上报太频繁 */
CUSTOM_REPORT_FREQUENCY_TOO_HIGH = "CUSTOM_REPORT_FREQUENCY_TOO_HIGH",
/**
* Stream 混音相关
*/
/** 下载在线音频文件失败 */
FETCH_AUDIO_FILE_FAILED = "FETCH_AUDIO_FILE_FAILED",
/** 读取本地 音频文件失败*/
READ_LOCAL_AUDIO_FILE_ERROR = "READ_LOCAL_AUDIO_FILE_ERROR",
/** 解码音频文件失败 */
DECODE_AUDIO_FILE_FAILED = "DECODE_AUDIO_FILE_FAILED",
/** 音效的 `soundID` 发生冲突 */
/** 找不到指定的音效 ID */
/**
* Gateway 操作相关
*/
/** 请求网关时 WS 断开 */
WS_ABORT = "WS_ABORT",
/** 请求网关前网关就已经断开 */
WS_DISCONNECT = "WS_DISCONNECT",
WS_ERR = "WS_ERR",
/** p2p 拓展通道断开 */
EXTERNAL_SIGNAL_ABORT = "EXTERNAL_SIGNAL_ABORT",
/**
* Live Streaming 相关
*/
/** 无法和推流后台建立连接 */
/** 推流任务已经存在 */
LIVE_STREAMING_TASK_CONFLICT = "LIVE_STREAMING_TASK_CONFLICT",
/** 推流/拉流参数错误 */
LIVE_STREAMING_INVALID_ARGUMENT = "LIVE_STREAMING_INVALID_ARGUMENT",
/** 推流/拉流服务内部错误 */
LIVE_STREAMING_INTERNAL_SERVER_ERROR = "LIVE_STREAMING_INTERNAL_SERVER_ERROR",
/** 推流 URL 被占用 */
LIVE_STREAMING_PUBLISH_STREAM_NOT_AUTHORIZED = "LIVE_STREAMING_PUBLISH_STREAM_NOT_AUTHORIZED",
/** 在非转码推流中调用了转码参数 */
LIVE_STREAMING_TRANSCODING_NOT_SUPPORTED = "LIVE_STREAMING_TRANSCODING_NOT_SUPPORTED",
/** 推流的目标 CDN 出现错误导致推流失败 */
LIVE_STREAMING_CDN_ERROR = "LIVE_STREAMING_CDN_ERROR",
/** 推流超时,请确认目标流是否存在 */
LIVE_STREAMING_INVALID_RAW_STREAM = "LIVE_STREAMING_INVALID_RAW_STREAM",
/** 推流超过 10 路流 */
LIVE_STREAMING_WARN_STREAM_NUM_REACH_LIMIT = "LIVE_STREAMING_WARN_STREAM_NUM_REACH_LIMIT",
/** 推流中的背景图片或者水印地址无法拉取(不影响推流流程) */
LIVE_STREAMING_WARN_FAILED_LOAD_IMAGE = "LIVE_STREAMING_WARN_FAILED_LOAD_IMAGE",
/** 推流请求太频繁(不影响推流流程) */
LIVE_STREAMING_WARN_FREQUENT_REQUEST = "LIVE_STREAMING_WARN_FREQUENT_REQUEST",
/**
* WebGL/美颜相关
*/
/** WebGL 内部错误 */
WEBGL_INTERNAL_ERROR = "WEBGL_INTERNAL_ERROR",
/** 美颜内部错误 */
BEAUTY_PROCESSOR_INTERNAL_ERROR = "BEAUTY_PROCESSOR_INTERNAL_ERROR",
/**
* Cross Channel 相关
*/
/** 等待 status 回调出错 */
CROSS_CHANNEL_WAIT_STATUS_ERROR = "CROSS_CHANNEL_WAIT_STATUS_ERROR",
/** 服务器加入源频道失败 */
CROSS_CHANNEL_FAILED_JOIN_SRC = "CROSS_CHANNEL_FAILED_JOIN_SEC",
/** 服务器加入目标频道失败 */
CROSS_CHANNEL_FAILED_JOIN_DEST = "CROSS_CHANNEL_FAILED_JOIN_DEST",
/** 源频道发送数据失败 */
CROSS_CHANNEL_FAILED_PACKET_SENT_TO_DEST = "CROSS_CHANNEL_FAILED_PACKET_SENT_TO_DEST",
/** 服务器回应出错 */
CROSS_CHANNEL_SERVER_ERROR_RESPONSE = "CROSS_CHANNEL_SERVER_ERROR_RESPONSE",
/**
* AVC SEI 相关
*/
/** 需要编码的 SEI 数据超过了最大大小 */
METADATA_OUT_OF_RANGE = "METADATA_OUT_OF_RANGE",
LOCAL_AEC_ERROR = "LOCAL_AEC_ERROR",
/** 插件不合法 */
INVALID_PLUGIN = "INVALID_PLUGIN",
/** 抛出断开P2P的错误来让未执行完成的P2P操作结束*/
DISCONNECT_P2P = "DISCONNECT_P2P",
/** imageData转换为Blob时失败 */
CONVERTING_IMAGEDATA_TO_BLOB_FAILED = "CONVERTING_IMAGEDATA_TO_BLOB_FAILED",
CONVERTING_VIDEO_FRAME_TO_BLOB_FAILED = "CONVERTING_VIDEO_FRAME_TO_BLOB_FAILED",
/** datachannel相关 */
INIT_DATACHANNEL_TIMEOUT = "INIT_DATACHANNEL_TIMEOUT",
CREATE_DATACHANNEL_ERROR = "CREATE_DATACHANNEL_ERROR",
DATACHANNEL_CONNECTION_TIMEOUT = "DATACHANNEL_CONNECTION_TIMEOUT",
PROHIBITED_OPERATION = "PROHIBITED_OPERATION",
/** 鉴黄上传失败 */
IMAGE_MODERATION_UPLOAD_FAILED = "IMAGE_MODERATION_UPLOAD_FAILED",
/** p2p datastream传输消息失败 */
P2P_MESSAGE_FAILED = "P2P_MESSAGE_FAILED"
}
/**
* 当前通话的统计信息,可以通过 [AgoraRTCClient.getRTCStats]{@link IAgoraRTCClient.getRTCStats} 获取。
* @public
*/
export declare interface AgoraRTCStats {
/**
* 在当前频道内的时长,单位为秒。
*/
Duration: number;
/**
* 音视频总接收码率,单位为 bps,瞬间值。
*/
RecvBitrate: number;
/**
* 接收字节数,累计值。
*/
RecvBytes: number;
/**
* 音视频总发送码率,单位为 bps,瞬间值。
*/
SendBitrate: number;
/**
* 发送字节数,累计值。
*/
SendBytes: number;
/**
* 通信场景下,该值为当前频道内的用户人数。
*
* 直播场景下,如果本地用户为主播,该值为当前频道内的主播人数;如果本地用户为观众,该值为当前频道内的主播人数 + 1。
*/
UserCount: number;
/**
* SDK 到声网边缘服务器的 RTT (Round-Trip Time),单位 ms。
*/
RTT: number;
/**
* 上行可用带宽估计,单位为 Kbps。
*/
OutgoingAvailableBandwidth: number;
}
declare enum AppType {
APP_TYPE_INVALID_VALUE = -1,
APP_TYPE_NATIVE = 0,
APP_TYPE_NATIVE_COCOS = 1,
APP_TYPE_NATIVE_UNITY = 2,
APP_TYPE_NATIVE_ELECTRON = 3,
APP_TYPE_NATIVE_FLUTTER = 4,
APP_TYPE_NATIVE_UNREAL = 5,
APP_TYPE_NATIVE_XAMARIN = 6,
APP_TYPE_NATIVE_API_CLOUD = 7,
APP_TYPE_NATIVE_REACT_NATIVE = 8,
APP_TYPE_NATIVE_PYTHON = 9,
APP_TYPE_NATIVE_COCOS_CREATOR = 10,
APP_TYPE_NATIVE_RUST = 11,
APP_TYPE_NATIVE_C_SHARP = 12,
APP_TYPE_NATIVE_CEF = 13,
APP_TYPE_NATIVE_UNI_APP = 14,
APP_TYPE_WEBRTC = 1000,
APP_TYPE_WEBRTC_REACT = 1001,
APP_TYPE_WEBRTC_VUE = 1002,
APP_TYPE_WEBRTC_ANGULAR = 1003
}
/**
* 服务器的访问区域。用于设置 [AgoraRTC.setArea]{@link IAgoraRTC.setArea}。
* @public
*/
export declare enum AREAS {
/**
* 中国。
*/
CHINA = "CHINA",
/**
* 亚洲区域(中国大陆除外)。
*/
ASIA = "ASIA",
/**
* 北美区域。
*/
NORTH_AMERICA = "NORTH_AMERICA",
/**
* 欧洲区域。
*/
EUROPE = "EUROPE",
/**
* 日本。
*/
JAPAN = "JAPAN",
/**
* 印度。
*/
INDIA = "INDIA",
/**
* @ignore
*/
KOREA = "KOREA",
/**
* @ignore
*/
HKMC = "HKMC",
/**
* @ignore
*/
US = "US",
/**
* @ignore
*/
OCEANIA = "OCEANIA",
/**
* @ignore
*/
SOUTH_AMERICA = "SOUTH_AMERICA",
/**
* @ignore
*/
AFRICA = "AFRICA",
/**
* @ignore
*/
OVERSEA = "OVERSEA",
/**
* 全球。
*/
GLOBAL = "GLOBAL",
/**
* @ignore
*/
EXTENSIONS = "EXTENSIONS"
}
/**
* 观众延时级别。仅在用户角色为 `"audience"` 时生效。
* - `1`: 低延时。
* - `2`: (默认)超低延时。
* @public
*/
export declare enum AudienceLatencyLevelType {
/**
* 低延时。
*/
AUDIENCE_LEVEL_LOW_LATENCY = 1,
/**
* 超低延时。
*/
AUDIENCE_LEVEL_ULTRA_LOW_LATENCY = 2,
/**
* @ignore
*/
AUDIENCE_LEVEL_SYNC_LATENCY = 3
}
declare const AUDIO_ENCODER_CONFIG_SETTINGS: {
speech_low_quality: AudioEncoderConfiguration;
speech_standard: AudioEncoderConfiguration;
music_standard: AudioEncoderConfiguration;
standard_stereo: AudioEncoderConfiguration;
high_quality: AudioEncoderConfiguration;
high_quality_stereo: AudioEncoderConfiguration;
};
declare enum AudioCodec {
opus = "opus",
pcma = "pcma",
pcmu = "pcmu",
g722 = "g722"
}
/**
* 定义音频编码配置的对象。
*
* 用于创建音频流时指定自定义的编码配置。
*
* 你可以在 [AgoraRTC.createCustomAudioTrack]{@link IAgoraRTC.createCustomAudioTrack}、
* [AgoraRTC.createMicrophoneAudioTrack]{@link IAgoraRTC.createMicrophoneAudioTrack} 或
* [AgoraRTC.createBufferSourceAudioTrack]{@link IAgoraRTC.createBufferSourceAudioTrack} 方法中传入该配置对象来自定义本地音频的编码配置。
*/
export declare interface AudioEncoderConfiguration {
/**
* 音频采样率,单位为 Hz。
*/
sampleRate?: number;
/**
* 音频采样大小。
*/
sampleSize?: number;
/**
* 是否开启立体声。
*/
stereo?: boolean;
/**
* 音频码率,单位为 Kbps。
*/
bitrate?: number;
}
/**
* SDK 预设的 [AudioEncoderConfiguration]{@link AudioEncoderConfiguration} 配置。
*
* 你可以在以下方法中传入预设值来控制本地音频的编码配置:
* - [AgoraRTC.createCustomAudioTrack]{@link IAgoraRTC.createCustomAudioTrack}
* - [AgoraRTC.createMicrophoneAudioTrack]{@link IAgoraRTC.createMicrophoneAudioTrack}
* - [AgoraRTC.createBufferSourceAudioTrack]{@link IAgoraRTC.createBufferSourceAudioTrack}
*
* 下表列出了 SDK 所有内置的音频属性配置,SDK 默认使用 `"music_standard"`。
*
* | 音频属性 | 配置 |
* | -------- | --------------- |
* |`"speech_low_quality"`|16 kHz 采样率,单声道,编码码率约 24 Kbps|
* |`"speech_standard"`|32 kHz 采样率,单声道,编码码率约 24 Kbps|
* |`"music_standard"`|48 kHz 采样率,单声道,编码码率约 32 Kbps|
* |`"standard_stereo"`|48 kHz 采样率,双声道,编码码率约 64 Kbps|
* |`"high_quality"`|48 kHz 采样率,单声道, 编码码率约 128 Kbps|
* |`"high_quality_stereo"`|48 kHz 采样率,双声道,编码码率约 192 Kbps|
* @public
*/
export declare type AudioEncoderConfigurationPreset = keyof typeof AUDIO_ENCODER_CONFIG_SETTINGS;
/**
* 音频数据源处理的设置。用于 [startProcessAudioBuffer]{@link IBufferSourceAudioTrack.startProcessAudioBuffer}。
*/
export declare interface AudioSourceOptions {
/**
* 设置循环播放的次数。
*/
cycle?: number;
/**
* 设置是否无限循环。
*/
loop?: boolean;
/**
* 设置开始播放的时间。
*/
startPlayTime?: number;
}
/**
* 音频源数据处理状态,通过 [BufferSourceAudioTrack.on("source-state-change")]{@link IBufferSourceAudioTrack.event_source_state_change} 获取。
*
* - `"stopped"`: 音频源数据处理停止。可能是因为数据处理完毕,也可能是手动触发了停止。
* - `"playing"`: 音频源数据正在处理。
* - `"paused"`: 音频源数据暂停处理。
* @public
*/
export declare type AudioSourceState = "stopped" | "playing" | "paused";
/**
* 创建音频轨道时的配置参数。
*/
declare interface AudioTrackInitConfig {
/**
* 是否开启回声消除:
* - `true`: 开启回声消除。
* - `false`: 不开启回声消除。
*/
AEC?: boolean;
/**
* 是否开启自动增益:
* - `true`: 开启自动增益。
* - `false`: 不开启自动增益。
*/
AGC?: boolean;
/**
* 是否开启噪声抑制:
* - `true`: 开启噪声抑制。
* - `false`: 不开启噪声抑制。
*/
ANS?: boolean;
}
/**
* @ignore
*
* 美颜选项,用于 [setBeautyEffect]{@link ILocalVideoTrack.setBeautyEffect}。
* @public
*/
export declare interface BeautyEffectOptions {
/**
* 平滑度。
*
* 取值范围为 [0.0, 1.0],其中 0.0 表示原始平滑等级,默认值为 0.5。可用来实现祛痘、磨皮等视觉效果。
*/
smoothnessLevel?: number;
/**
* 亮度。
*
* 取值范围为 [0.0, 1.0],其中 0.0 表示原始亮度,默认值为 0.7。可用来实现美白等视觉效果。
*/
lighteningLevel?: number;
/**
* 红色度。
*
* 取值范围为 [0.0, 1.0],其中 0.0 表示原始红色度,默认值为 0.1。可用来实现红润肤色等视觉效果。
*/
rednessLevel?: number;
/**
* 亮度明暗对比度,与 {@link lighteningLevel} 参数搭配使用。可设为:
* - 0: 明暗对比弱。
* - 1: (默认) 原始明暗对比度。
* - 2: 明暗对比强。
*/
lighteningContrastLevel?: 0 | 1 | 2;
}
/**
* 通过本地音频文件/在线音频文件/`AudioBuffer`方式创建音频流时的配置参数,用于 [AgoraRTC.createBufferSourceAudioTrack]{@link IAgoraRTC.createBufferSourceAudioTrack}。
*/
export declare interface BufferSourceAudioTrackInitConfig {
/**
* 音频数据源,支持 3 种类型:
* - `File`: 浏览器标准的 [File](https://developer.mozilla.org/en-US/docs/Web/API/File) 对象,表示一个本地文件。
* - `string`: 表示从线上 HTTPS 地址获取在线音频文件(请确保音频在线地址支持 HTTPS 和 CORS)。
* - `AudioBuffer`: 浏览器标准的 [AudioBuffer](https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer) 对象表示 PCM 原始数据。
*/
source: File | string | AudioBuffer;
/**
* 是否缓存线上文件:
* - `true`: 缓存线上文件。
* - `false`: (默认)不缓存线上文件。
*/
cacheOnlineFile?: boolean;
/**
* 控制音频的编码配置。
*
* 你可以通过 [[AudioEncoderConfigurationPreset]] 传入 SDK 内置的编码配置;也可以通过传入一个 [[AudioEncoderConfiguration]] 来自定义音频编码配置。
*
* > Firefox 不支持设置音频编码码率。
*/
encoderConfig?: AudioEncoderConfiguration | AudioEncoderConfigurationPreset;
}
/**
* 创建摄像头视频流时的配置对象,用于 [AgoraRTC.createCameraVideoTrack]{@link IAgoraRTC.createCameraVideoTrack}。
*/
export declare interface CameraVideoTrackInitConfig {
/**
* 控制视频的编码配置。
*
* 你可以通过以下方式设置该属性:
* - 通过 [[VideoEncoderConfigurationPreset]] 传入 SDK 内置的编码配置。
* - 通过传入一个 [[VideoEncoderConfiguration]] 对象来自定义视频编码配置。
* - 不传或留空,使用 SDK 的默认值 `"480p_1"`(分辨率 640 × 480、帧率 15 fps、码率 500 Kbps)。
*/
encoderConfig?: VideoEncoderConfiguration | VideoEncoderConfigurationPreset;
/**
* 指定使用前置/后置摄像头来采集视频。
*
* 在移动设备上,可以设置该参数选择使用前置或后置摄像头:
* - `"user"`: 前置摄像头
* - `"environment"`: 后置摄像头
*/
facingMode?: VideoFacingModeEnum;
/**
* 指定摄像头的设备 ID。
*
* 你可以通过 [AgoraRTC.getCameras]{@link IAgoraRTC.getCameras} 来获取当前的摄像头设备列表。
*/
cameraId?: string;
/**
* @自从
*
*4.2.0*
*
* 设置视频传输优化模式。
*
* 你可以在视频通话、视频直播或屏幕共享过程中调用此方法动态调整视频的传输优化模式。例如你想要把屏幕共享内容从演示文稿切换为视频时,你可以将传输优化模式从 `"detail"` 切换为 `"motion"`,确保视频画面在网络波动时不会出现卡顿。
*
* > 注意事项:该方法只支持 Chrome 浏览器。
*
* @param mode 视频传输优化模式:
* - `"detail"`: 清晰优先。
* - 浏览器会自动根据你的采集分辨率和帧率设定一个最小码率。即使遭遇网络波动,发送码率也不会低于这个值,从而确保清晰的视频画面。
* - 大部分情况下,浏览器不会降低发送分辨率,但是可能会降低帧率。
* - `"motion"`: 自 4.21.0 开始,浏览器默认开启流畅优先模式。
* - 浏览器不会启用最小码率策略。遭遇网络波动时,发送端会降低码率来确保接收端的视频画面不会出现中断和卡顿。
* - 大部分情况下,浏览器不会降低帧率,但是可能会降低发送分辨率。
*/
optimizationMode?: OptimizationMode;
/**
* @ignore
* @自从
*
*4.18.0*
*
* SVC (可伸缩视频编码)配置。
*
* 你可以通过 {@link SVCConfigurationPreset} 传入 SDK 预设的 SVC 编码配置,也可以通过 {@link SVCConfiguration} 传入自定义的 SVC 编码配置。
*/
scalabiltyMode?: SVCConfiguration | SVCConfigurationPreset;
}
/**
* 跨频道媒体流转发中出现的错误码,可以通过 [AgoraRTCClient.on("channel-media-relay-state")]{@link IAgoraRTCClient.event_channel_media_relay_state} 事件获取。
* @public
*/
export declare enum ChannelMediaRelayError {
/**
* 一切正常。
*/
RELAY_OK = "RELAY_OK",
/**
* 和跨频道媒体流转发服务断开连接。
*/
SERVER_CONNECTION_LOST = "SERVER_CONNECTION_LOST",
/**
* 源频道的 Token 已经过期。
*/
SRC_TOKEN_EXPIRED = "SRC_TOKEN_EXPIRED",
/**
* 目标频道的 Token 已经过期。
*/
DEST_TOKEN_EXPIRED = "DEST_TOKEN_EXPIRED"
}
/**
* 跨频道媒体流转发过程中的事件列表,可以通过 [AgoraRTCClient.on("channel-media-relay-event")]{@link IAgoraRTCClient.event_channel_media_relay_event} 获取。
* @public
*/
export declare enum ChannelMediaRelayEvent {
/**
* 网络中断导致用户与服务器连接断开。
*/
NETWORK_DISCONNECTED = "NETWORK_DISCONNECTED",
/**
* 用户与服务器建立连接。
*/
NETWORK_CONNECTED = "NETWORK_CONNECTED",
/**
* 用户已加入源频道。
*/
PACKET_JOINED_SRC_CHANNEL = "PACKET_JOINED_SRC_CHANNEL",
/**
* 用户已加入目标频道。
*/
PACKET_JOINED_DEST_CHANNEL = "PACKET_JOINED_DEST_CHANNEL",
/**
* SDK 开始向目标频道发送数据包。
*/
PACKET_SENT_TO_DEST_CHANNEL = "PACKET_SENT_TO_DEST_CHANNEL",
/**
* 服务器收到了目标频道发送的视频流。
*/
PACKET_RECEIVED_VIDEO_FROM_SRC = "PACKET_RECEIVED_VIDEO_FROM_SRC",
/**
* 服务器收到了目标频道发送的音频流。
*/
PACKET_RECEIVED_AUDIO_FROM_SRC = "PACKET_RECEIVED_AUDIO_FROM_SRC",
/**
* 目标频道已更新。
*/
PACKET_UPDATE_DEST_CHANNEL = "PACKET_UPDATE_DEST_CHANNEL",
/**
* 内部原因导致目标频道更新失败。
*/
PACKET_UPDATE_DEST_CHANNEL_REFUSED = "PACKET_UPDATE_DEST_CHANNEL_REFUSED",
/**
* 目标频道未更新。
*/
PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = "PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE"
}
/**
* 跨频道转发的频道信息,用于 [ChannelMediaRelayConfiguration]{@link IChannelMediaRelayConfiguration}。
* @public
*/
export declare interface ChannelMediaRelayInfo {
/**
* 频道名。
*/
channelName: string;
/**
* 用设置的频道名和 `uid` 生成的用于加入频道的 token。如果未启用 token 鉴权则无需设置。
* 用于鉴权的 Token。如果未启用 Token 鉴权则无需设置。
*
* - 设置源频道信息时,用 0 和源频道名生成 Token。
* - 设置目标频道信息时,用 `uid` 和目标频道名生成 Token。
*/
token?: string;
/**
* 用于标识转发媒体流的 UID。
*
* 32 位无符号整数,设置范围:0 到 (232-1),设为 0 服务器会自动分配一个 UID。
*
* 当用于源频道时,用于标识源频道中的转发媒体流的 UID。
* - 设置源频道信息时,`uid` 为源频道里需要转发的主播的 ID。
* - 设置目标频道信息时,`uid` 用于标识目标频道中被转发的媒体流。可为 0,服务器会自动分配一个 UID;也可自行设置一个 32 位无符号整数,设置范围为 0 到 (232-1)。需确保与目标频道中的其他用户 ID 不同,防止造成互踢。
*
* 当用于目标频道时,用于标识目标频道中的转发媒体流的 UID,需确保与目标频道中的其他用户 ID 不同,防止造成互踢。
*/
uid: number;
}
/**
* 跨直播媒体流转发服务的状态码,可以通过 [AgoraRTCClient.on("channel-media-relay-state")]{@link IAgoraRTCClient.event_channel_media_relay_state} 事件获取。
* @public
*/
export declare enum ChannelMediaRelayState {
/**
* SDK 已经初始化,但是还没有开启跨频道媒体流转发服务。
*/
RELAY_STATE_IDLE = "RELAY_STATE_IDLE",
/**
* SDK 正在连接到跨频道媒体流转发服务。
*/
RELAY_STATE_CONNECTING = "RELAY_STATE_CONNECTING",
/**
* 跨频道媒体流转发成功。
*/
RELAY_STATE_RUNNING = "RELAY_STATE_RUNNING",
/**
* 跨频道媒体流转发出现错误,错误代码可以参考 {@link ChannelMediaRelayError}。
*/
RELAY_STATE_FAILURE = "RELAY_STATE_FAILURE"
}
/**
* `