Web 推流 SDK API

最近更新时间:2023-06-30 11:52:51

我的收藏

API 概览

TXLivePusher

腾讯云直播推流器,主要用于浏览器 Web 推流。通过浏览器采集用户的画面和声音,通过 WebRTC 将视频流和音频流传输推送到腾讯云直播服务端。
API
描述
静态函数,检查浏览器支持性。
设置本地视频画面的预览容器。
设置推流视频质量。
设置推流音频质量。
调用高级 API 接口。
打开摄像头设备。
关闭摄像头设备。
打开⻨克⻛设备。
关闭⻨克⻛设备。
开启屏幕采集。
关闭屏幕采集。
开始采集本地媒体文件流。
停止采集本地媒体文件流。
使用用户自定义的音视频流。
关闭用户自定义的音视频流。
startPush
开始推流。
stopPush
停止推流。
isPushing
查询当前是否正在推流中。
根据流 ID 获取采集到的音视频流。
获取设备管理对象。
获取视频效果管理对象。
获取音频效果管理对象。
设置是否禁用视频流。
设置是否禁用音频流。
禁用视频流。
禁用音频流。
恢复视频流。
恢复音频流。
设置视频内容提示,用于提升在不同内容场景下的视频编码质量。
设置推流事件回调通知。
destroy
离开⻚面或者退出时,清理 SDK 实例。

TXDeviceManager

设备管理接口,主要用于管理摄像头、⻨克⻛设备,进行设备的获取和切换操作。
API
描述
获取设备列表。
获取当前流的设备信息。
切换当前正在使用的设备。
切换摄像头设备。
切换⻨克⻛设备。

TXAudioEffectManager

音频效果管理接口,主要用于调整音量的操作。
API
描述
setVolume
设置音频流的音量大小。

TXVideoEffectManager

视频效果管理接口,主要用于设置画中画、镜像、滤镜、水印、文本等操作。
API
描述
开启本地视频画面混流功能。
设置混流参数。
获取最终采用的混流参数。
setLayout
设置视频流的画中画布局参数。
getLayout
获取指定流的画中画布局参数。
setMirror
设置视频流的镜像效果。
设置视频流的普通滤镜效果。
设置水印。
setText
设置文本。

TXLivePusher

腾讯云直播推流器,主要用于浏览器 Web 推流。通过浏览器采集用户的画面和声音,通过 WebRTC 将视频流和音频流传输推送到腾讯云服务端。如果需要开启本地混流功能,调用 TXVideoEffectManager 方法 enableMixing() 来启用。
请先创建实例对象,用于后续所有操作。
const livePusher = new TXLivePusher();

checkSupport

静态函数,检查浏览器支持性。
static checkSupport(): Promise<TXSupportResult>;
返回:
返回 Promise 对象,其中检查结果数据结构请参考 TXSupportResult

setRenderView

设置本地视频画面的预览容器,需提供一个 div 节点,本地采集的视频会在容器里渲染。如果开启了本地混流功能,容器里面会渲染混流处理之后的音视频。
setRenderView(container: string | HTMLDivElement): void;
参数:
字段
类型
说明
container
string | HTMLDivElement
容器的 ID 或者 dom 节点。

setVideoQuality

设置推流视频质量,SDK 已经内置了视频质量模板,直接通过预定义的模板来设置推流视频质量。
setVideoQuality(quality: string): void;
参数:
字段
类型
说明
quality
string
预定义的视频质量模板名称。
内置的视频质量模板如下所示:
模板名
分辨率(宽 x 高)
帧率(fps)
码率(kbps)
120p
160 x 120
15
200
180p
320 x 180
15
350
240p
320 x 240
15
400
360p
640 x 360
15
800
480p
640 x 480
15
900
720p
1280 x 720
15
1500
1080p
1920 x 1080
15
2000
2K
2560 x 1440
30
4860
4K
3840 x 2160
30
9000
说明:
1. 由于设备和浏览器的限制,视频分辨率不一定能够完全匹配,在这种情况下,浏览器会自动调整分辨率使其接近对应的分辨率。
2. 如果视频质量参数(分辨率、帧率和码率)不符合您的要求,您可以通过 setProperty() 单独设置自定义的值。
3. 此处视频分辨率主要表示本地采集的视频分辨率,推流时分辨率可能会低于采集的分辨率,浏览器会根据网络带宽等情况自动调整推流分辨率。
4. 默认使用 720p ,即 setVideoQuality('720p')

setAudioQuality

设置推流音频质量,SDK 已经内置了音频质量模板,直接通过预定义的模板来设置推流音频质量。
setAudioQuality(quality: string): void;
参数:
字段
类型
说明
quality
string
预定义的音频质量模板名称。
内置的音频质量模板如下所示:
模板名
采样率
码率(kbps)
standard
48000
40
high
48000
128
说明:
1. 如果音频质量参数(采样率和码率)不符合您的要求,您可以通过 setProperty() 单独设置自定义的值。
2. 默认使用 standard ,即 setAudioQuality('standard')

setProperty

主要用于调用一些高级功能,比如设置视频的分辨率、帧率和码率,设置音频的采样率和码率等。
setProperty(key: string, value: any): void;
参数:
字段
类型
说明
key
string
高级 API 对应的 key。
value
*
调用 key 所对应的高级 API 时需要的参数。
目前支持以下高级功能:
Key
Value
描述
示例
setVideoResolution
{ width: number; height:number; }
设置视频的分辨率
setProperty('setVideoResolution', { width: 1920, height: 1080 })
setVideoFPS
number
设置视频的帧率
setProperty('setVideoFPS', 25)
setVideoBitrate
number
设置视频的码率
setProperty('setVideoBitrate', 2000)
setAudioSampleRate
number
设置音频的采样率
setProperty('setAudioSampleRate', 44100)
setAudioBitrate
number
设置音频的码率
setProperty('setAudioBitrate', 200)
setConnectRetryCount
number
设置连接重试次数,默认值:3;取值范围:0 - 10。当 SDK 与服务器异常断开连接时,SDK 会尝试与服务器重连。
setProperty('setConnectRetryCount', 5)
setConnectRetryDelay
number
设置连接重试延迟,默认值:1,单位为秒;取值范围:0 - 10。当 SDK 与服务器异常断开连接时, SDK 会尝试与服务器重连。
setProperty('setConnectRetryDelay', 2)
enableAudioAEC
boolean
启用回声消除
setProperty('enableAudioAEC', true)
enableAudioAGC
boolean
启用自动增益
setProperty('enableAudioAGC', true)
enableAudioANS
boolean
启用噪声抑制
setProperty('enableAudioANS', true)
enableLog
boolean
是否在控制台打印日志
setProperty('enableLog', true)
说明:
1. 回声消除、自动增益和噪声抑制默认全部启用,最终是否起效依赖于设备和浏览器。这三个功能建议要么全部启用,要么全部禁用。
2. 请在采集流和推流之前进行设置。

startCamera

打开摄像头设备。需要用户授权允许浏览器访问摄像头,授权失败或者访问设备失败,返回的 Promise 对象会抛出错误。
startCamera(deviceId?: string): Promise<string>;
参数:
字段
类型
说明
deviceId
string
摄像头设备 ID,可选参数,指定打开的摄像头设备。设备 ID 可通过 TXDeviceManager 中的方法 getDevicesList() 获取。在移动设备上,可以通过传入 'user' 和 'environment' 来指定打开前置和后置摄像头。
返回:
返回 Promise 对象,成功时返回流 ID 作为流在 SDK 内部的唯一标识,失败时抛出对应的错误信息。
说明:
1. 该接口不支持在 http 协议下使用,请使用 https 协议部署您的网站。
2. 打开摄像头失败时返回的错误信息,可参考 getUserMedia 异常

stopCamera

关闭摄像头设备。
stopCamera(streamId?: string): void;
参数:
字段
类型
说明
streamId
string
流 ID,可选参数,指定需要关闭的摄像头流。启用本地混流之后,如果采集了多路摄像头流,可通过流 ID 关闭指定的摄像头流,否则关闭所有的摄像头流。

startMicrophone

打开⻨克⻛设备。需要用户授权允许浏览器访问⻨克⻛,授权失败或者访问设备失败,返回的 Promise 对象会抛出错误。
startMicrophone(deviceId?: string): Promise<string>;
参数:
字段
类型
说明
deviceId
string
麦克风设备 ID,可选参数,指定打开的麦克风设备。设备 ID 可通过 TXDeviceManager 中的方法 getDevicesList() 获取。
返回:
返回 Promise 对象,成功时返回流 ID 作为流在 SDK 内部的唯一标识,失败时抛出对应的错误信息。
说明:
1. 该接口不支持在 http 协议下使用,请使用 https 协议部署您的网站。
2. 打开麦克风失败时返回的错误信息,可参考 getUserMedia 异常
3. 如果出现回声现象,可以将本地用于播放预览的视频元素 video 静音,避免回声现象的出现。
livePusher.videoView.muted = true;

stopMicrophone

关闭⻨克⻛设备。
stopMicrophone(streamId?: string): void;
参数:
字段
类型
说明
streamId
string
流 ID,可选参数,指定需要关闭的麦克风流。启用本地混流之后,如果采集了多路麦克风流,可通过流 ID 关闭指定的麦克风流,否则关闭所有的麦克风流。

startScreenCapture

开启屏幕采集。需要用户授权允许浏览器访问屏幕,授权失败或者访问屏幕失败,返回的 Promise 对象会抛出错误。
startScreenCapture(audio?: boolean): Promise<string>;
参数:
字段
类型
说明
audio
boolean
是否采集系统声音或者标签⻚声音,true - 采集声音,false - 不采集声音,默认 false。
返回:
返回 Promise 对象,成功时返回流 ID 作为流在 SDK 内部的唯一标识,失败时抛出对应的错误信息。
说明:
1. 该接口不支持在 http 协议下使用,请使用 https 协议部署您的网站。
2. 打开屏幕采集失败时返回的错误信息,可参考 getDisplayMedia 异常
3. 目前只有 Chrome 74+ 和 Edge 79+ 支持采集声音,在 windows 系统可以采集整个系统的声音,在 Linux 和 Mac 上面只能采集标签⻚的声音。
4. 如果设置了 audio 为 true,在浏览器的屏幕分享弹窗中还需要确保弹窗最下面的采集声音选项是勾选状态,否则也不会采集声音。如果设置了 audio 为 false,浏览器的屏幕分享弹窗中不会出现采集声音的选项。

stopScreenCapture

关闭屏幕采集。
stopScreenCapture(streamId?: string): void;
参数:
字段
类型
说明
streamId
string
流 ID,可选参数,指定需要关闭的屏幕分享流。启用本地混流之后,如果采集了多路屏幕分享流,可通过流 ID 关闭指定的屏幕分享流,否则关闭所有的屏幕分享流。

startVirtualCamera

开始采集本地媒体文件流。目前支持的文件格式有视频 mp4,音频 mp3 和图片 jpg、png、bmp。
startVirtualCamera(file: File): Promise<string>;
参数:
字段
类型
说明
file
File
本地媒体文件,必传。文件格式必须是以下几种:mp4、mp3、jpg、png、bmp。
返回:
返回 Promise 对象,成功时返回流 ID 作为流在 SDK 内部的唯一标识,失败时抛出对应的错误信息。
说明:
1. 本地文件支持视频、音频和图片。视频文件采集视频流和音频流,音频文件只采集音频流,图片文件只采集视频流。
2. 必须手动传入 file 对象,需要提前使用 <input type="file"> 引导用户选择本地文件。

stopVirtualCamera

停止采集本地媒体文件流。
stopVirtualCamera(streamId?: string): void;
参数:
字段
类型
说明
streamId
string
流 ID,可选参数,指定需要关闭的媒体文件流。启用本地混流之后,如果采集了多路媒体文件流,可通过流 ID 关闭指定的媒体文件流,否则关闭所有的媒体文件流。

startCustomCapture

使用用户自定义的音视频流。将用户自己采集的流用于本地混流和推送。
startCustomCapture(stream: MediaStream): Promise<string>;
参数:
字段
类型
说明
stream
MediaStream
用户自定义的流。
返回:
返回 Promise 对象,成功时返回流 ID 作为流在 SDK 内部的唯一标识,失败时抛出对应的错误信息。

stopCustomCapture

关闭自定义的音视频流,仅移除自定义流,不会停止自定义流。
stopCustomCapture(streamId?: string): void;
参数:
字段
类型
说明
streamId
string
流 ID,可选参数,指定需要移除的自定义流。启用本地混流之后,如果添加了多路自定义流,可通过流 ID 移除指定的自定义流,否则移除所有的自定义流。

startPush

开始推流,建立 WebRTC 连接,往腾讯云服务器推送音视频流。如果开启了本地混流功能,推送的则是混流处理之后的流数据。
startPush(pushUrl: string): Promise<void>;
参数:
字段
类型
说明
pushUrl
string
WebRTC 推流地址。
返回:
返回 Promise 对象。
说明:
推流地址的格式参考 拼装推流 URL

stopPush

停止推送音视频流,关闭 WebRTC 连接。
stopPush(): void;

isPushing

查询当前是否正在推流中。
isPushing(): boolean;
返回:
布尔值,true - 正在推流,false - 未推流。

getMediaStream

根据流 ID 获取采集到的音视频流。
getMediaStream(streamId: string): MediaStream;
参数:
字段
类型
说明
streamId
string
流 ID,由 startCamera()startMicrophone()startScreenCapture() 等接口调用成功之后返回。
返回:
采集到的流对象,可以通过传给 video 标签的 srcObject 属性进行播放。

getDeviceManager

获取设备管理对象。通过设备管理,可以进行查询设备列表,切换设备等操作。
getDeviceManager(): TXDeviceManager;
返回:
设备管理对象,具体用法请参考 TXDeviceManager

getVideoEffectManager

获取视频效果管理对象。通过视频效果管理,可以进行画中画、镜像、滤镜、水印、文本等操作。
getVideoEffectManager(): TXVideoEffectManager;
返回:
视频效果管理对象,具体用法请参考 TXVideoEffectManager

getAudioEffectManager

获取音频效果管理对象。通过音频效果管理,可以进行调整音量的操作。
getAudioEffectManager(): TXAudioEffectManager;
返回:
音频效果管理对象,具体用法请参考 TXAudioEffectManager

setVideoMute

设置是否禁用视频流。如果开启了本地混流功能,禁用的是最终生成的视频流。
setVideoMute(mute: boolean): void;
参数:
字段
类型
说明
mute
boolean
true - 禁用,false - 启用。
说明:
1. 当前有视频流时,设置才会生效。
2. 禁用之后每一帧都会用黑色像素填充,实际上仍在采集视频流。
3. 建议直接使用 pauseVideo()resumeVideo()

setAudioMute

设置是否禁用音频流。如果开启了本地混流功能,禁用的是最终生成的音频流。
setAudioMute(mute: boolean): void;
参数:
字段
类型
说明
mute
boolean
true - 禁用,false - 启用。
说明:
1. 当前有音频流时,设置才会生效。
2. 禁用之后是没有声音的,实际上仍在采集音频流。
3. 建议直接使用 pauseAudio()resumeAudio()

pauseVideo

禁用视频流。等同于 setVideoMute(true)
pauseVideo(): void;

pauseAudio

禁用音频流。等同于 setAudioMute(true)
pauseAudio(): void;

resumeVideo

恢复视频流。等同于 setVideoMute(false)
resumeVideo(): void;

resumeAudio

恢复音频流。等同于 setAudioMute(false)
resumeAudio(): void;

setVideoContentHint

设置视频内容提示,用于提升在不同内容场景下的视频编码质量。
setVideoContentHint(contentHint: string): void;
参数:
字段
类型
说明
contentHint
string
内容提示,参考 MediaStreamTrack.contentHint
内容提示取值范围如下:
取值
说明
''
默认值,浏览器会自动评估视频内容,并选择合适的提示配置进行编码。
'motion'
表现为流畅度优先,用于视频内容为摄像头采集、电影、视频、游戏的情况。
'detail'
表现为清晰度优先,用于视频内容包含图片、文本混排的情况。在进行屏幕分享时,建议使用这个提示。
'text'
表现为清晰度优先,用于视频内容只包含大量文本的情况。
说明:
当前有视频流时,设置才会生效。


setObserver

设置推流事件回调通知。通过设置回调,可以监听推流的一些事件通知,包括推流状态、统计数据、警告和错误信息等。
setObserver(observer: TXLivePusherObserver): void;
参数:
字段
类型
说明
observer
推流的回调目标对象。
说明:
目前部分回调事件通知,比如 onErroronWarningonCaptureFirstAudioFrameonCaptureFirstVideoFrame 也可以通过调用对应接口返回的 Promise 对象来获取。用户可以根据自己的使用习惯,自由选择获取相应事件通知的方式。例如:
startCamera().then() 等同于 onCaptureFirstVideoFrame() ,同样可以获取采集视频首帧成功的状态。
startCamera().catch() 等同于 onWarning() ,同样可以获取打开摄像头失败的错误。


destroy

离开⻚面或者退出时,清理 SDK 实例,避免可能会产生的内存泄露,调用前先执行 stop 相关的方法。
destroy(): void;


TXDeviceManager

设备管理接口。主要用于管理摄像头、⻨克⻛设备。如果开启了本地混流功能,需要传入对应的流 ID 进行操作。

通过 TXLivePusher 方法 getDeviceManager() 来获取对象实例。
const deviceManager = livePusher.getDeviceManager();


getDevicesList

获取设备列表。
getDevicesList(type?: string): Promise<TXMediaDeviceInfo[]>;
参数:
字段
类型
说明
type
string
取值 video 或者 audio,可选参数。不传返回所有设备列表,传 video 返回摄像头设备列表,传 audio 返回⻨克⻛设备列表。
返回:
返回 Promise 对象,其中设备信息结构请参考 TXMediaDeviceInfo
说明:
1. 该接口不支持在 http 协议下使用,请使用 https 协议部署您的网站。
2. 浏览器出于安全的考虑,在用户未授权摄像头或⻨克⻛访问权限前,deviceId 及 deviceName 字段可能都是空的。因此建议在用户授权访问后,再调用该接口获取设备详情。

getCurrentDevice

获取当前流的设备信息。如果启用了本地混流,必须指定流 ID。
getCurrentDevice(type: string, streamId?: string): Promise<TXMediaDeviceInfo>;
参数:
字段
类型
说明
type
string
设备类型:video - 摄像头设备,audio - ⻨克⻛设备。
streamId
string
流 ID,指定要获取设备信息的流,启用本地混流后必须传,对应的流必须是摄像头或者麦克风设备采集的流。
返回:
返回 Promise 对象,其中设备信息结构请参考 TXMediaDeviceInfo

switchDevice

切换当前正在使用的设备。如果启用了本地混流,必须指定流 ID。
switchDevice(type: string, deviceId: string, streamId?: string): Promise<void>;
参数:
字段
类型
说明
type
string
设备类型:video - 摄像头设备,audio - ⻨克⻛设备。
deviceId
string
设备 ID,可以通过调用 getDevicesList() 获取设备 ID。
streamId
string
流 ID,指定要切换设备的流,启用本地混流后必须传,对应的流必须是摄像头或者麦克风设备采集的流。
返回:
返回 Promise 对象。
说明:
1. 该方法仅适用于从摄像头和⻨克⻛采集音视频时调用,其他采集方式采集的流不支持调用该接口。
2. 如果还没开始推流,则只更新本地流;如果已经开始推流,同步更新推到服务器的音视频流。
3. 切换流的设备时,对应流的 ID 不会发生变化。
4. 指定流 ID 时,对应流的类型必须和 type 匹配,比如 type 是 video,对应的流必须是摄像头采集的流。
5. 建议直接使用 switchCamera()switchMicrophone()

switchCamera

切换摄像头设备。等同于 switchDevice('video', deviceId, streamId)
switchCamera(deviceId: string, streamId?: string): Promise<void>;
参数:
字段
类型
说明
deviceId
string
设备 ID,可以通过调用 getDevicesList() 获取设备 ID。在移动设备上,可以通过传入 'user' 和 'environment' 来切换前置和后置摄像头。
streamId
string
流 ID,指定要切换摄像头设备的流,启用本地混流后必须传,对应的流必须是摄像头设备采集的流。
返回:
返回 Promise 对象。

switchMicrophone

切换⻨克⻛设备。等同于 switchDevice('audio', deviceId, streamId)
switchMicrophone(deviceId: string, streamId?: string): Promise<void>;
参数:
字段
类型
说明
deviceId
string
设备 ID ,可以通过调用 getDevicesList() 获取设备 ID 。
streamId
string
流 ID,指定要切换麦克风设备的流,启用本地混流后必须传,对应的流必须是麦克风设备采集的流。
返回:
返回 Promise 对象。

TXAudioEffectManager

音频效果管理接口。主要用于调整音量的操作。如果开启了本地混流功能,需要传入对应的流 ID 进行操作。
通过 TXLivePusher 方法 getAudioEffectManager() 来获取对象实例。
const audioEffectManager = livePusher.getAudioEffectManager();

setVolume

设置音频流的音量大小。如果启用了本地混流,必须指定流 ID。
setVolume(volume: number, streamId?: string): void;
参数:
字段
类型
说明
volume
number
音量大小,取值范围为 0 - 100,默认值是 100。
streamId
string
流 ID,指定要设置的流,启用本地混流后必须传。
说明:
如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 设置超过 100,但超过 100 的 volume 会有爆音的⻛险,请谨慎操作。

TXVideoEffectManager

视频效果管理接口。主要用于设置画中画、镜像、滤镜、水印、文本等操作。使用前需要先调用接口 enableMixing() 启用功能。
通过 TXLivePusher 方法 getVideoEffectManager() 来获取对象实例。
const videoEffectManager = livePusher.getVideoEffectManager();

enableMixing

开启本地视频画面混流功能。
enableMixing(enabled: boolean): void;
参数:
字段
类型
说明
enabled
boolean
是否开启本地混流功能,默认关闭。
说明:
1. 启用本地混流功能之前,预览和推送的流都是原始采集的流,启用之后,预览和推送的流都是经过浏览器本地混流处理之后的流,会有一定的浏览器性能开销。
2. 在调用 TXVideoEffectManager 其他方法前必须先调用该接口启用本地混流功能。
3. 没启用本地混流功能时,只能采集一路视频流和一路音频流。
4. 启用本地混流功能成功后,可以采集多路流,比如执行两个 startCamera 采集两个不同的摄像头画面,或者先执行 startCamera 采集摄像头画面,再执行 startScreenCapture 采集屏幕画面。采集的多路流的画面和声音都会出现在最终的混流输出结果中。

setMixingConfig

设置混流参数。不调用该接口进行设置时,默认混流参数直接使用 TXLivePusher 中方法 setVideoQuality()setProperty() 设置之后的结果。
setMixingConfig(config: TXMixingConfig): void;
参数:
字段
类型
说明
config
混流参数配置。

getMixingConfig

获取最终采用的混流参数,优先使用 setMixingConfig() 设置的结果,其次使用 TXLivePusher 中方法 setVideoQuality()setProperty() 设置之后的结果。
getMixingConfig(): TXMixingConfig;
返回:
混流参数配置,数据结构请参考 TXMixingConfig

setLayout

设置视频流的画中画布局参数。
setLayout(config: TXLayoutConfig | TXLayoutConfig[]): void;
参数:
字段
类型
说明
config
画中画布局配置,支持传对象或者对象数组。
说明:
1. 开启本地混流之后,所有采集的流都会自动添加到最终输出的视频流当中,默认的布局参数是保证视频流画面紧贴左上角原点出现。
2. 配置参数可以传对象数组,批量设置多个流的画中画布局效果,也可以只传对象单独设置指定的流。
3. 如果不想显示采集流的画面,只想保留声音,可以将布局宽度和高度设置为 0 。

getLayout

获取指定流的画中画布局参数。
getLayout(streamId: string): TXLayoutConfig | null;
参数:
字段
类型
说明
streamId
string
流 ID,指定要获取画中画布局参数的流。
返回:
返回指定流的画中画布局参数,数据结构请参考 TXLayoutConfig 。如果流不存在,返回 null 。

setMirror

设置视频流的镜像效果,包括左右镜像和上下镜像。
setMirror(config: TXMirrorConfig | TXMirrorConfig[]): void;
参数:
字段
类型
说明
config
镜像效果配置,支持传对象或者对象数组。
说明:
配置参数可以传对象数组,批量设置多个流的镜像效果,也可以只传对象单独设置指定的流。

setNormalFilter

设置视频流的普通滤镜效果,包括对比度、亮度和饱和度。
setNormalFilter(config: TXNormalFilterConfig | TXNormalFilterConfig[]): void;
参数:
字段
类型
说明
config
普通滤镜效果配置,支持传对象或者对象数组 。
说明:
配置参数可以传对象数组,批量设置多个流的普通滤镜效果,也可以只传对象单独设置指定的流。

setWatermark

设置水印,支持同时设置多个水印。
setWatermark(config: TXWatermarkConfig | TXWatermarkConfig[] | null): void;
参数:
字段
类型
说明
config
水印配置参数,支持传对象、对象数组或者 null 。
说明:
1. 配置参数可以传对象数组,同时设置多个水印,也可以只传对象单独设置一个水印。
2. 配置参数传 null 或者空数组表示删除已有水印。

setText

设置文本,支持同时设置多个文本。
setText(config: TXTextConfig | TXTextConfig[] | null): void;
参数:
字段
类型
说明
config
文本配置参数,支持传对象、对象数组或者 null 。
说明:
1. 配置参数可以传对象数组,同时设置多个文本,也可以只传对象单独设置一个文本。
2. 配置参数传 null 或者空数组表示删除已有文本。

类型定义

TXSupportResult

浏览器支持性检查结果。
数据结构:
字段
类型
说明
isWebRTCSupported
boolean
是否支持 WebRTC
isH264EncodeSupported
boolean
是否支持 H264 编码
isH264DecodeSupported
boolean
是否支持 H264 解码
isMediaDevicesSupported
boolean
是否支持获取媒体设备及媒体流
isScreenCaptureSupported
boolean
是否支持屏幕采集
isMediaFileSupported
boolean
是否支持获取本地媒体文件流

TXLivePusherObserver

推流的回调通知,回调包括推流器状态,统计信息,警告以及错误信息。
数据结构:
字段
类型
说明
onError
onError
推流错误通知。
onWarning
onWarning
推流警告通知。
onCaptureFirstAudioFrame
首帧音频采集完成的回调通知。
onCaptureFirstVideoFrame
首帧视频采集完成的回调通知。
onPushStatusUpdate
推流连接状态回调通知。
onStatisticsUpdate
推流统计数据回调通知。

onError

推流错误通知,推流出现错误时,会回调该通知。
onError(code: number, message: string, extraInfo: object): void;
参数:
字段
类型
说明
code
number
错误码。
message
string
错误信息。
extraInfo
object
扩展信息。
错误码参考如下:
枚举值
数值
描述
TXLIVE_ERROR_WEBRTC_FAILED
-1
WebRTC 接口调用失败。
TXLIVE_ERROR_REQUEST_FAILED
-2
请求服务器推流接口返回报错。

onWarning

推流警告通知。
onWarning(code: number, message: string, extraInfo: object): void;
参数:
字段
类型
说明
code
number
错误码。
message
string
错误信息。
extraInfo
object
扩展信息。
错误码参考如下:
枚举值
数值
描述
TXLIVE_WARNING_CAMERA_START_FAILED
-1001
打开摄像头失败。
TXLIVE_WARNING_MICROPHONE_START_FAILED
-1002
打开麦克风失败。
TXLIVE_WARNING_SCREEN_CAPTURE_START_FAILED
-1003
打开屏幕分享失败。
TXLIVE_WARNING_VIRTUAL_CAMERA_START_FAILED
-1004
打开本地媒体文件失败。
TXLIVE_WARNING_CAMERA_INTERRUPTED
-1005
摄像头被中断(设备被拔出或者权限被用户取消)。
TXLIVE_WARNING_MICROPHONE_INTERRUPTED
-1006
麦克风被中断(设备被拔出或者权限被用户取消)。
TXLIVE_WARNING_SCREEN_CAPTURE_INTERRUPTED
-1007
屏幕分享被中断( Chrome 浏览器点击自带的停止共享按钮)。
说明:
1. 打开摄像头、⻨克⻛、屏幕分享失败时返回的错误信息,可参考 getUserMedia 异常getDisplayMedia 异常
2. 摄像头、麦克风、屏幕分享异常中断时返回的扩展信息,会包含对应流的流 ID。

onCaptureFirstAudioFrame

首帧音频采集完成的回调通知。如果启用本地混流功能,则在最终混流生成音频流时进行回调通知。
onCaptureFirstAudioFrame(): void;

onCaptureFirstVideoFrame

首帧视频采集完成的回调通知。如果启用本地混流功能,则在最终混流生成视频流时进行回调通知。
onCaptureFirstVideoFrame(): void;

onPushStatusUpdate

推流连接状态回调通知。
onPushStatusUpdate(status: number, message: string, extraInfo: object): void;
参数:
字段
类型
说明
status
number
连接状态码。
message
string
连接状态信息。
extraInfo
object
扩展信息。
连接状态码参考如下:
枚举值
数值
描述
TXLIVE_PUSH_STATUS_DISCONNECTED
0
与服务器断开连接
TXLIVE_PUSH_STATUS_CONNECTING
1
正在连接服务器
TXLIVE_PUSH_STATUS_CONNECTED
2
连接服务器成功
TXLIVE_PUSH_STATUS_RECONNECTING
3
重连服务器中

onStatisticsUpdate

推流统计数据回调,主要是 WebRTC 相关的统计数据。
onStatisticsUpdate(statistics: object): void;
参数:
字段
类型
说明
statistics
object
推流统计数据。
statistics.timestamp
number
数据采样的时间,自 1970年1月1日(UTC)起经过的毫秒数。
statistics.video
object
视频流相关的数据。
statistics.video.bitrate
number
视频码率,单位:bit/s 。
statistics.video.framesPerSecond
number
视频帧率。
statistics.video.frameWidth
number
视频宽度。
statistics.video.frameHeight
number
视频高度。
statistics.video.framesEncoded
number
编码帧数。
statistics.video.framesSent
number
发送帧数。
statistics.video.packetsSent
number
发送包数。
statistics.video.nackCount
number
NACK(Negative ACKnowledgement)数。
statistics.video.firCount
number
FIR(Full Intra Request),关键帧重传请求数。
statistics.video.pliCount
number
PLI(Picture Loss Indication),视频帧丢失重传数。
statistics.video.frameEncodeAvgTime
number
平均编码时间,单位:ms 。
statistics.video.packetSendDelay
number
数据包发送之前本地缓存的平均时间,单位:ms 。
statistics.audio
object
音频流相关的数据。
statistics.audio.bitrate
number
音频码率,单位:bit/s 。
statistics.audio.packetsSent
number
发送包数。
说明:
1. 直播推流过程中,SDK 会以一秒一次的频率统计 WebRTC 相关的数据,然后调用该回调接口返回数据。
2. 如果返回的字段数据是空(undefined)的话,说明当前浏览器获取不到对应的数据,目前只有 Chrome 浏览器可以拿到全部的数据。

TXMediaDeviceInfo

设备信息。
数据结构:
字段
类型
说明
type
string
设备类型,video - 摄像头,audio - 麦克风。
deviceId
string
设备 ID。
deviceName
string
设备名称。

TXMixingConfig

混流参数配置。
数据结构:
字段
类型
说明
videoWidth
number
最终混流后的视频宽度。
videoHeight
number
最终混流后的视频高度。
videoFramerate
number
最终混流后的视频帧率。
backgroundColor
number
混合后画面的底色颜色,格式为十六进制数字,默认黑色,即 0x000000 。

TXLayoutConfig

画中画布局参数。
数据结构:
字段
类型
说明
streamId
string
流 ID,指定要设置的流。
x
number
布局 x 坐标。
y
number
布局 y 坐标。
width
number
布局宽度。
height
number
布局高度。
zOrder
number
布局层级。
说明:
1. 以左上⻆为原点 (0, 0),元素的坐标属性描述元素中心点。例如一个分辨率为 100*100 的视频流紧贴原点完整出现在最终生成视频流中,那么它的 x 、 y 坐标都是50。
2. zOrder 值越大,视频流会出现在越上方,覆盖其他视频流画面。

TXMirrorConfig

镜像参数。
数据结构:
字段
类型
说明
streamId
string
流 ID,指定要设置的流。
mirrorType
number
镜像类型:0 - 无镜像效果,1 - 左右镜像,2 - 上下镜像,3 - 左右+上下镜像。

TXNormalFilterConfig

普通滤镜参数。
数据结构:
字段
类型
说明
streamId
string
流 ID,指定要设置的流。
contrast
number
对比度,取值范围 [-100, 100],0 表示不处理。
brightness
number
亮度,取值范围 [-100, 100],0 表示不处理。
saturation
number
饱和度,取值范围 [-100, 100],0 表示不处理。

TXWatermarkConfig

水印配置参数。
数据结构:
字段
类型
说明
image
HTMLImageElement
水印图片对象。
x
number
水印 x 坐标。
y
number
水印 y 坐标。
width
number
水印宽度。
height
number
水印高度。
zOrder
number
水印层级。
说明:
1. 以左上⻆为原点 (0, 0),元素的坐标属性描述元素中心点。例如一个分辨率为 100*100 的水印图片紧贴原点完整出现在最终生成视频流中,那么它的 x 、 y 坐标都是50。
2. zOrder 值越大,水印图片会出现在越上方,覆盖其他视频流画面。

TXTextConfig

文本配置参数。
数据结构:
字段
类型
说明
text
string
文本内容,不能为空字符串。
style
object
文本样式,可以参考对应的 css 样式设置。
style.font
string
字体名。
style.font_size
number
字体大小。
style.font_color
string
字体颜色,十六进制表示,例如 #000000 。
style.font_alpha
number
字体透明度,范围 [0, 100],默认 100(不透明)。
style.bold
number
字体加粗,0 - 不加粗,1 - 加粗,默认 0 。
style.italic
number
字体倾斜,0 - 正常,1 - 斜体,默认 0 。
style.shadow_color
string
文字阴影颜色,十六进制表示,例如 #000000 。
style.shadow_alpha
number
文字阴影透明度,范围 [0, 100],shadow_color 存在时有效,默认 100(不透明)。
style.stroke_color
string
文字描边颜色,十六进制表示,例如 #000000 。
style.stroke_thickness
number
文字描边粗细,默认 0,即没有描边。
style.background_color
string
背景颜色,十六进制表示,例如 #000000 。
style.background_alpha
number
背景透明度,范围 [0, 100],background_color 存在时有效,默认 100(不透明)。
x
number
文本 x 坐标。
y
number
文本 y 坐标。
zOrder
number
文本层级。
说明:
1. 以左上⻆为原点 (0, 0),元素的坐标属性描述元素中心点。假设文本的最终宽度是 100px,高度是 50px,如果文本要紧贴原点出现在最终生成视频流中的话,它的 x 坐标是 50, y 坐标是 25。
2. zOrder 值越大,文本会出现在越上方,覆盖其他视频流画面。