直播推流接口主要是通过浏览器采集用户的画面和声音,并通过 WebRTC 进行推送。
checkSupport
静态函数,检查浏览器支持性。
static checkSupport(): Promise<SupportResult>;
返回
返回 Promise 对象,其中检查结果
SupportResult
结构如下:字段 | 类型 | 描述 |
isWebRTCSupported | boolean | 是否支持 WebRTC |
isH264EncodeSupported | boolean | 是否支持 H264 编码 |
isH264DecodeSupported | boolean | 是否支持 H264 解码 |
isMediaDevicesSupported | boolean | 是否支持获取媒体设备及媒体流 |
isScreenCaptureSupported | boolean | 是否支持屏幕采集 |
isMediaFileSupported | boolean | 是否支持获取本地媒体文件流 |
setRenderView
设置本地视频画面的预览容器,提供一个 div 节点,本地采集的视频会在容器里渲染。
setRenderView(container: string | HTMLDivElement): void;
参数
container
:容器的 ID 或者 dom 节点。setVideoQuality
设置推流视频质量,SDK 已经内置了视频质量模板,直接通过预定义的模板来设置推流视频质量。
setVideoQuality(quality: string): void;
参数
quality
预定义的视频质量模板名称。内置的视频质量模板如下所示:模板名 | 分辨率(宽 × 高) | 帧率(fps) | 码率(kbps) |
120p | 160 × 120 | 15 | 200 |
180p | 320 × 180 | 15 | 350 |
240p | 320 × 240 | 15 | 400 |
360p | 640 × 360 | 15 | 800 |
480p | 640 × 480 | 15 | 900 |
720p | 1280 × 720 | 15 | 1500 |
1080p | 1920 × 1080 | 15 | 2000 |
2K | 2560 × 1440 | 30 | 4860 |
4K | 3840 × 2160 | 30 | 9000 |
说明
由于设备和浏览器的限制,视频分辨率不一定能够完全匹配,在这种情况下,浏览器会自动调整分辨率使其接近对应的分辨率。
如果以上视频质量参数(分辨率、帧率和码率)不符合您的要求,您可以通过
setProperty
单独设置自定义的值。默认使用
720p
,即setVideoQuality('720p')
。setAudioQuality
设置推流音频质量,SDK 已经内置了音频质量模板,直接通过预定义的模板来设置推流音频质量。
setAudioQuality(quality: string): void;
参数
quality
预定义的音频质量模板名称。内置的音频质量模板如下所示:模板名 | 采样率 | 码率(kbps) |
standard | 48000 | 40 |
high | 48000 | 128 |
说明
默认使用
standard
,即setAudioQuality('standard')
。setProperty
主要用于调用一些高级功能例如设置视频的分辨率、帧率和码率。
setProperty(key: string, value: any): void;
参数
key
高级 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) |
注意
请在采集流和推流之前进行设置。
startCamera
打开本地摄像头设备。需要用户授权允许浏览器访问摄像头,授权失败或者访问设备失败,会通过回调接口抛出警告通知。
startCamera(deviceId?: string): void;
参数
stopCamera
关闭本地摄像头设备。
stopCamera(): void;
startMicrophone
打开麦克风设备。需要用户授权允许浏览器访问麦克风,授权失败或者访问设备失败,会通过回调接口抛出警告通知。
startMicrophone(deviceId?: string): void;
参数
stopMicrophone
关闭麦克风设备。
stopMicrophone(): void;
startScreenCapture
开启屏幕采集。需要用户授权允许浏览器访问屏幕,授权失败或者访问设备失败,会通过回调接口抛出警告通知。
startScreenCapture(): void;
stopScreenCapture
关闭屏幕采集。
stopScreenCapture(): void;
startMediaFile
开始采集本地媒体文件流。将用户本地的 MP4 视频文件转换成音视频流。
startMediaFile(file?: File): void;
参数
file
:可选,本地媒体文件,不传则 javascript 模拟触发文件上传操作。说明
需要先调用 setRenderView 方法设置承载本地视频画面的 div 容器。
本地视频文件当前仅支持 MP4 文件。
safari 浏览器限制,javascript 模拟触发文件上传操作可能不生效,建议手动传入 file 对象。
浏览器限制,页面处于未激活状态时(最小化、激活其它标签页),采集文件流会暂停。建议提示用户推流过程中不要切换浏览器标签页。
stopMediaFile
停止采集本地媒体文件流,结束本地文件播放。
stopMediaFile(): void;
startPush
开始音视频数据推流,建立 WebRTC 连接,往腾讯云服务器推送数据。
startPush(pushUrl: string): void;
参数
stopPush
停止推送音视频数据,关闭 WebRTC 连接。
stopPush(): void;
isPushing
查询当前推流器是否正在推流中。
isPushing(): boolean;
返回
true:正在推流;false:未推流。
getDeviceManager
获取设备管理对象。通过设备管理,可以进行查询设备列表,切换设备等操作。
getDeviceManager(): TXDeviceManager;
返回
setVideoMute
设置是否禁用视频流。
setVideoMute(mute: boolean): void;
参数
mute
:true - 禁用,false - 启用。说明
只有当前有视频流时,设置才会生效。
禁用之后每一帧都会用黑色像素填充,实际上仍在采集视频流。
setAudioMute
设置是否禁用音频流。
setAudioMute(mute: boolean): void;
参数
mute
:true - 禁用,false - 启用。说明
只有当前有音频流时,设置才会生效。
禁用之后每一帧都是没有声音的,实际上仍在采集音频流。
setObserver
设置推流器回调。通过设置回调,可以监听推流器的一些回调事件,包括推流器状态、统计数据、警告和错误信息等。
setObserver(observer: TXLivePusherObserver): void;
参数
destroy
离开页面或者退出时,清理 SDK 实例,避免可能会产生的内存泄露,调用前先执行 stop 方法。
destroy(): void;