类型:class
推流 SDK 的核心类,用于管理音视频采集、合流、推流等。
| 属性 | 类型 | 说明 |
|---|---|---|
| observer | Observer | 只读 推流器的观察者,用于接收推流状态、错误、警告等通知回调。 |
isEnableMixing | boolean |
|
pushMode |
|
创建一个新的 LivePusher 实例。
类型
constructor(options?: ConfigOptions)
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
options | ConfigOptions | undefined | 否 | 无 | 配置选项,定义推流相关的参数。 |
获取设备列表,包括音频输入设备和视频输入设备。
类型
(kind?: 'audioinput' | 'videoinput') => Promise<MediaDeviceInfo[]>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
kind | "audioinput" | "videoinput" | undefined | 否 | 无 | 指定设备类型,不传时默认获取所有设备。
|
返回值
Promise<MediaDeviceInfo[]>
MediaDeviceInfo 对象的数组,每个对象表示一个音频输入设备或视频输入设备的详细信息。获取摄像头设备列表。
类型
() => Promise<MediaDeviceInfo[]>
返回值
Promise<MediaDeviceInfo[]>
MediaDeviceInfo 对象的数组,每个对象表示一个视频输入设备(摄像头)。获取麦克风设备列表。
类型
() => Promise<MediaDeviceInfo[]>
返回值
Promise<MediaDeviceInfo[]>
MediaDeviceInfo 对象的数组,每个对象表示一个音频输入设备(麦克风)。启动摄像头视频采集。
注意
如果主播未授权访问摄像头,会抛出权限错误。
类型
(deviceId?: string) => Promise<string>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
deviceId | string | undefined | 否 | 无 | 指定要启动采集的摄像头设备 ID,可以通过 移动端支持传入
|
返回值
Promise<string> 返回 Promise 对象。
停止摄像头视频采集。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要停止采集的流 ID,在成功调用 |
启动麦克风音频采集。
注意
如果主播未授予麦克风权限,会抛出权限错误。
类型
(deviceId?: string) => Promise<string>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
deviceId | string | undefined | 否 | 无 | 指定需要启动采集的设备 ID,可以通过 |
返回值
Promise<string> 返回 Promise 对象。
停止麦克风音频采集。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要停止采集的流 ID,在成功调用 |
启动视频文件采集。
注意
暂时仅支持 Chrome 浏览器采集。
类型
(url: string) => Promise<string | undefined>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
url | string | 是 | 无 | 视频文件的 URL,支持在线地址或 Blob URL。
|
返回值
Promise<string | undefined> 返回 Promise 对象。
停止视频文件采集。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要停止采集的流 ID,在成功调用 |
启动屏幕采集。
注意
getDisplayMedia() 获取浏览器兼容性。类型
(audio?: boolean) => Promise<string>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
audio | boolean | 是 | false | 是否采集系统声音或者标签⻚声音。
|
返回值
Promise<string> 返回 Promise 对象。
停止屏幕采集。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要停止采集的流 ID,在成功调用 |
启动音频文件采集。
注意
暂时仅支持 Chrome 浏览器采集。
类型
(url: string) => Promise<string | undefined>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
url | string | 是 | 无 | 音频文件的 URL。支持文件在线地址和 Blob URL。
|
返回值
Promise<string | undefined> 返回 Promise 对象。
停止音频文件采集。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要停止采集的流 ID,在成功调用 |
启动图片采集。
类型
(url: string) => Promise<string | undefined>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
url | string | 是 | 无 | 图片文件的 URL。支持文件在线地址和 Blob URL。
|
返回值
Promise<string | undefined> 返回 Promise 对象。
停止图片采集。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要停止采集的流 ID,在成功调用 |
启动自定义视频流采集。
类型
(track: MediaStreamTrack) => string | undefined
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
track | MediaStreamTrack | 是 | 无 | 需要采集的视频流。可以来自设备摄像头、屏幕共享或通过 |
返回值
string | undefined
停止自定义视频流采集。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要停止采集的流 ID,在成功调用 |
启动自定义音频流采集。
类型
(track: MediaStreamTrack) => string | undefined
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
track | MediaStreamTrack | 是 | 无 | 需要采集的自定义音频流,可以来自麦克风、音频文件或其他音频源。例如,通过麦克风获取的 |
返回值
string | undefined
停止自定义音频流采集。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要停止采集的流 ID,在成功调用 |
开始音量检测。用于监测指定音频流或最终合流输出的音量值。
注意
getVolume() 方法获取实时音量值。类型
(streamId?: string) => Promise<void>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要检测音量的流 ID。
|
返回值
Promise<void> 返回 Promise 对象。
停止音量检测。
注意
getVolume() 方法获取对应流的音量。类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要停止音量检测的流 ID。
|
获取音量。
注意
在调用此方法之前,您需要先调用 startVolumeDetect() 方法启动音量检测。调用示例:
await livePusher.startVolumeDetect() const volume = livePusher.getVolume() console.log(volume)
类型
(streamId?: string) => number
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 指定需要获取音量的流 ID。
|
返回值
number 返回指定流 ID 的音量值,范围为 [1,10],数值越大表示音量越高。
启用或禁用合流功能。
注意
setMixingConfig() 配置合流画布参数(如宽度、高度、帧率等),以确保合流画面符合预期。类型
(enable: boolean) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
enable | boolean | 是 | 无 | 指定是否启用本地合流。
|
配置合流参数,包括合流画布的宽度、高度、帧率等。
类型
(config: IMixingViewConfig) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
config | 是 | 无 | 合流画布的配置信息,例如宽、高、帧率等参数。 |
设置视频的预览区域。本地视频会在指定的容器内进行预览,同时预览内容与推流的画面和声音完全一致。
类型
(containerId: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
containerId | string | 是 | 无 | 用于指定预览区域的 HTML 容器元素 ID。 |
开始本地视频预览。启用本地视频的预览功能,主播可以通过预览区域查看本地视频效果。
类型
() => void
停止本地视频预览。
注意
调用此接口停止本地视频的预览功能时,不会影响实际推流。
类型
() => void
开始推流,支持 RTM 和 WebTransport 两种推流方式。
类型
(rtmUrl: string) => Promise<void>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
rtmUrl | string | 是 | 无 | 推流地址,可以登录视频直播控制台获取 RTM 或 WebTransport 推流地址。 |
返回值
Promise<void> 返回 Promise 对象。
将视频流添加到合流画布中,可以将多个视频流(例如主播的摄像头画面、屏幕共享画面)合成到同一个合流画布中,如果视频流中包含音频信息,音频也会被添加到混音模块中。
注意
必须在已调用 enableMixing() 方法启用合流功能后使用。
类型
(config: IVideoStreamLayoutParams | IVideoStreamLayoutParams[]) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
config | 是 | 无 | 视频流布局参数,可以是单个对象或多个对象组成的数组。 |
从合流画布中移除指定的视频流。当需要从合流画布中删除某个视频画面时使用。
类型
(streamId: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | 是 | 无 | 要移除的视频流的 ID。 |
更新已添加的视频流的布局参数,例如位置、大小等,适用于动态布局调整等场景。
类型
(config: IVideoStreamLayoutParams | IVideoStreamLayoutParams[]) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
config | 是 | 无 | 视频流更新参数,可以是单个对象或多个对象组成的数组。 |
隐藏合流画布中的视频流。当需要暂时隐藏某个视频画面,但不想从合流画布中移除该视频流时使用。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 要隐藏的视频流的 ID。如果不传,则隐藏所有视频流。 |
取消隐藏合流画布中的视频流,需要重新显示之前隐藏的视频流时使用。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 要重新显示的视频流的 ID。如果不传,则重新显示所有视频流。 |
将音频流添加到混音模块中(需要启用合流功能)。当需要在合流音频中加入额外的音频源时使用,例如,添加背景音乐。
注意
必须在已调用 enableMixing() 方法启用合流功能后使用。
类型
(config: IAudioStreamLayoutParams | IAudioStreamLayoutParams[]) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
config | 是 | 无 | 音频流参数,可以是单个对象或多个对象组成的数组。 |
移除指定的音频流。如果目标是单独的音频流,则直接移除;如果目标是一个包含音频轨道的视频流,仅会影响该视频流中的音频部分,而不会对视频画面产生任何影响。
类型
(streamId: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | 是 | 无 | 要移除的流 ID。如果不传,则移除所有音频流。 |
更新音频流的音量大小。在混音场景中调整某个或多个音频流的音量,例如,主播语音、背景音乐和视频音频的平衡调整。
注意
您可以按照如下顺序调用接口。
enableMixing(true) 开启合流功能。addAudioStream() 添加音频流到混音模块。updateAudioStream() 更新音频流的参数。类型
(config: IAudioStreamLayoutParams | IAudioStreamLayoutParams[]) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
config | 是 | 无 | 要更新的音频流参数,支持单个对象或数组以更新多个音频流。 |
静音指定的音频流或包含音频轨道的视频流。在某个音频流内容不需要被输出时使用。
注意
静音指定的音频流。如果目标是单独的音频流,则直接静音;如果目标是一个包含音频轨道的视频流,仅会影响该视频流中的音频部分,而不会对视频画面产生任何影响。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 要静音的流 ID。如果不传,则静音所有音频流。 |
取消对指定音频流的静音操作,或取消所有音频流的静音状态。
类型
(streamId?: string) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
streamId | string | undefined | 否 | 无 | 要取消静音的流 ID,不传时取消所有流的静音。 |
设置推流和采集相关的配置属性,包括视频分辨率、帧率、码率、音频采样率等。适用于需要调整某些关键配置的场景,例如,调整视频采集的清晰度、根据目标服务选择推流协议(如 RTM 或 WebTransport)等。
注意
setPushMode 的设置应在初始化阶段完成,不支持动态切换。类型
<K extends keyof IProperty>(key: K, value: IProperty[K]) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
key | K | 是 | 无 | 要设置的属性名称。 |
value | IProperty[K] | 是 | 无 | 对应属性的值,根据 |
设置推流和采集的视频质量。
类型
(quality: keyof typeof VIDEO_DEFAULT_QUALITY) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
quality | "120p" | "180p" | "240p" | "360p" | "480p" | "720p-1" | "720p-2" | "720p-3" | "1080p-1" | "1080p-2" | "1080p-3" | 是 | 无 | 视频质量,详情请参见 VIDEO_DEFAULT_QUALITY |
设置推流和采集音频的质量,包括采样率和码率:
类型
(quality: keyof typeof AUDIO_DEFAULT_QUALITY) => void
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
quality | "STANDARD" | "HIGHT" | 是 | 无 | 音频质量。
|
停止推流。
类型
() => Promise<void>
返回值
Promise<void> 返回 Promise 对象。
判断当前是否正在推流。
类型
() => boolean
返回值
boolean
true:正在推流。false:未推流。获取当前推流状态信息。用于监控推流质量,调整参数。
类型
() => Promise<StatsSnapshoot | RTMPStats | undefined>
返回值
Promise<StatsSnapshoot | RTMPStats | undefined> 当前推流的统计数据(如丢包率、码率)。
获取预览的 video 元素。用于设置预览区域的音量或样式。
注意
开始预览后可以通过 getPreviewElement 获取到对应的预览元素设置预览的音量大小。
类型
() => HTMLVideoElement | null | undefined
返回值
HTMLVideoElement | null | undefined 预览画面的 video 元素。
清理 SDK 实例,避免可能会产生的内存泄露。
注意
如果正在推流,调用该接口会导致推流中断。
类型
() => Promise<void>
返回值
Promise<void> 返回 Promise 对象。
static isSupported() 查询是否支持 RTM 或 WebTransport 推流。
类型
(mode: PushMode) => Promise<boolean>
参数
名称 | 类型 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|---|
mode | 是 | 无 | 推流模式。
|
返回值
Promise<boolean>
true:支持该推流模式。false:不支持该推流模式。类型:interface
用于精细化设置推流 SDK 内部的配置,包括视频采集分辨率、帧率以及音频相关参数等。
注意
设置视频分辨率为 1920×1080,帧率为 30,代码示例:
livePusher.setProperty('setVideoResolution', { width: 1920, height: 1080 }); livePusher.setProperty('setVideoFps', 30);
类型:{ width: number; height: number; }
设置视频采集的分辨率。
成员
| 名称 | 类型 | 说明 |
|---|---|---|
| width | number | 分辨率宽度。 |
| height | number | 分辨率高度。 |
类型:number
设置视频采集的帧率。
类型:number
设置推流视频的码率,单位为 bps。
类型:number
设置推流时音频的码率,单位为 bps。
类型:number
设置麦克风采集的采样率,单位为 Hz。
类型:PushMode
设置推流模式。
描述 RTM 推流状态的详细信息,包括视频和音频的各项指标。
注意
获取推流状态快照,示例如下:
const stats = await livePusher.getStats(); console.log('当前视频码率:', stats.video.sendBitrate); console.log('音频丢包率:', stats.audio.packetsLostPercent);
类型
{ video?: { codec: string; sendBitrate: number; frameWidth: number; frameHeight: number; framesPerSecond: number; framesEncoded: number; keyFramesEncoded: number; framesSent: number; frameEncodeAvgTime: number; packetsSent: number; packetSendDelay: number; nackCount: number; firCount: number; pliCount: number; packetsLost: number; packetsLostPercent: number; }; audio?: { codec: string | undefined; channels: number | undefined; sendBitrate: number | undefined; packetsSent: number | undefined; nackCount: number | undefined; packetsLost: number | undefined; packetsLostPercent: number | undefined; }; }
成员
| 名称 | 类型 | 说明 |
|---|---|---|
| video | { codec: string; sendBitrate: number; frameWidth: number; frameHeight: number; framesPerSecond: number; framesEncoded: number; keyFramesEncoded: number; framesSent: number; frameEncodeAvgTime: number; packetsSent: number; packetSendDelay: number; nackCount: number; firCount: number; pliCount: number; packetsLost: number; packetsLostPercent: number; } | undefined | 视频信息。 |
| codec | string | 推流视频编码方式,例如,H.264。 |
| sendBitrate | number | 推流视频码率,单位为 bps。 |
| frameWidth | number | 视频分辨率宽度。 |
| frameHeight | number | 视频分辨率高度。 |
| framesPerSecond | number | 视频帧率。 |
| framesEncoded | number | 已编码的帧数。 |
| keyFramesEncoded | number | 已编码的关键帧数。 |
| framesSent | number | 已发送的帧数。 |
| frameEncodeAvgTime | number | 单帧平均编码时间,单位为 ms。 |
| packetsSent | number | 已发送的数据包数量。 |
| packetSendDelay | number | 数据包发送前平均缓存时间,单位为 ms。 |
| nackCount | number | 收到的 NACK 包数。 |
| firCount | number | 收到的 FIR(全帧请求)包数。 |
| pliCount | number | 收到的 PLI(图像丢失指示)包数。 |
| packetsLost | number | 丢失的数据包数量。 |
| packetsLostPercent | number | 丢包率。 |
| codec | string | undefined | 音频编码格式,例如 AAC。 |
| channels | number | undefined | 音频通道数,例如,单声道或立体声。 |
| sendBitrate | number | undefined | 推流音频码率,单位为 bps |
| packetsSent | number | undefined | 已发送的数据包数量。 |
| nackCount | number | undefined | 收到的 NACK 包数。 |
| packetsLost | number | undefined | 丢失的数据包数量。 |
| packetsLostPercent | number | undefined | 丢包率。 |
描述 WebTransport 推流状态信息。
注意
查看视频推流分辨率,代码示例:
const rtmpStats = await livePusher.getStats(); console.log('视频分辨率:', rtmpStats.video.frameWidth, '×', rtmpStats.video.frameHeight);
类型
{ video: { sendBitrate: number; framesPerSecond: number; framesEncoded: number; keyFramesEncoded: number; sendSpeed: number; codec: string; frameWidth: number; frameHeight: number; gopSize: number; }; audio: { sendBitrate: number; framesEncoded: number; codec: string; channels: number; sampleRate: number; }; }
成员
| 名称 | 类型 | 说明 |
|---|---|---|
| sendBitrate | number | 推流视频码率,单位为 bps。 |
| framesPerSecond | number | 推流帧率。 |
| framesEncoded | number | 已编码帧数。 |
| keyFramesEncoded | number | 已编码关键帧数。 |
| sendSpeed | number | 视频推流上传速度,单位为 bps。 |
| codec | string | 视频编码格式,例如,H.264。 |
| frameWidth | number | 视频分辨率宽度。 |
| frameHeight | number | 视频分辨率高度。 |
| gopSize | number | GOP(关键帧间隔)大小。 |
| sendBitrate | number | 推流音频码率,单位为 bps。 |
| framesEncoded | number | 已编码帧数。 |
| codec | string | 音频编码格式。 |
| channels | number | 音频通道数,例如,单声道和立体声。 |
| sampleRate | number | 音频采样率,单位为 Hz。 |