Pusher

Pusher

new Pusher(options)

Parameters:
Name Type Description
options Object

配置

Properties
Name Type Description
userID string

pusher 对应的用户 ID

screenCapture boolean | undefined

true -> 创建屏幕分享的 pusher, (false or undefined) -> 创建本地摄像头和麦克风的 pusher

Methods

on(eventName, handler, contextopt)

监听事件。

Example
let onRTCClientBanned = function(event) {
  console.error('pusher | client-banned observed: ' + event);
  // 退出刷新页面
};
pusher.on(TWebLive.EVENT.RTC_CLIENT_BANNED, onRTCClientBanned);
Parameters:
Name Type Attributes Description
eventName String

事件名称。所有的事件名称都存放在 TWebLive.EVENT 变量中,如需要查看可以使用 console.log(TWebLive.EVENT) 把所有的事件显示出来。事件列表

handler function

处理事件的方法,当事件触发时,会调用此handler进行处理。

context * <optional>

期望 handler 执行时的上下文

off(eventName, handler, contextopt)

取消监听事件。

Example
pusher.off(TWebLive.EVENT.RTC_CLIENT_BANNED, onRTCClientBanned);
Parameters:
Name Type Attributes Description
eventName String

事件名称。所有的事件名称都存放在 TWebLive.EVENT 变量中,如需要查看可以使用 console.log(TWebLive.EVENT) 把所有的事件显示出来。事件列表

handler function

处理事件的方法,当事件触发时,会调用此handler进行处理。

context * <optional>

期望 handler 执行时的上下文

setLogLevel(level)

设置日志级别,低于 level 的日志将不会输出。

Example
pusher.setLogLevel(1);
Parameters:
Name Type Description
level Number

日志级别

  • 0 普通级别,日志量较多,接入时建议使用
  • 1 release级别,SDK 输出关键信息,生产环境时建议使用
  • 2 告警级别,SDK 只输出告警和错误级别的日志
  • 3 错误级别,SDK 只输出错误级别的日志
  • 4 无日志级别,SDK 将不打印任何日志

(async) checkSystemRequirements() → {Promise.<boolean>}

检测浏览器是否兼容 TWebLive Pusher。若当前浏览器不兼容 TWebLive Pusher,建议引导用户去下载最新版本的 Chrome 浏览器。

Example
pusher.checkSystemRequirements().then((result) => {
  if (!result) {
    alert('Your browser is not compatible with TWebLive Pusher');
  }
});
Returns:

Promise 返回检测结果

Type
Promise.<boolean>

(async) getCameraList() → {Promise.<Array.<MediaDeviceInfo>>}

获取摄像头设备列表。
出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,label 及 deviceId 字段可能都是空的。因此建议在用户授权访问后 再调用该接口获取设备详情,比如在 setRenderView() 后再调用此接口获取设备详情。

Example
let cameraList = null;
pusher.getCameraList().then(devices => {
  cameraList = devices;
  devices.forEach(dev => {
    console.log('camera label: ' + dev.label + ' deviceId: ' + dev.deviceId);
  });
});
Returns:

Promise 返回 MediaDeviceInfo 数组

Type
Promise.<Array.<MediaDeviceInfo>>

getCurrentCamera() → {string}

获取当前正在使用的摄像头的设备 ID。

Example
console.log('pusher | getCurrentCamera | ', pusher.getCurrentCamera());
Returns:
Type
string

(async) setCurrentCamera(cameraID) → {Promise}

设置摄像头设备,比如笔记本电脑上有内置摄像头和外接摄像头,可使用此接口在预览 setRenderView()或推流 startPush() 过程中, 切换摄像头设备。
当前电脑的摄像头设备列表,可通过 getCameraList() 获取。

Example
var cameraID = 'b7e921a9f636d49dc7a9e66a9d6d94085915f5225eb899e85a680f6f5e6a3666'; // 请替换成设备实际的 ID
pusher.setCurrentCamera(cameraID).then(() => {
  console.log('pusher | setCurrentCamera | ok');
}).catch((error) => {
  console.error('pusher | setCurrentCamera | failed', error);
});
Parameters:
Name Type Description
cameraID string

摄像头的设备 id

Returns:
Type
Promise

(async) getMicrophoneList() → {Promise.<Array.<MediaDeviceInfo>>}

获取麦克风设备列表。
出于安全的考虑,在用户未授权摄像头或麦克风访问权限前,label 及 deviceId 字段可能都是空的。因此建议在用户授权访问后 再调用该接口获取设备详情,比如在 setRenderView() 后再调用此接口获取设备详情。

Example
let microphoneList = null;
pusher.getMicrophoneList().then(devices => {
  microphoneList = devices;
  devices.forEach(dev => {
    console.log('microphone label: ' + dev.label + ' deviceId: ' + dev.deviceId);
  });
});
Returns:

Promise 返回 MediaDeviceInfo 数组

Type
Promise.<Array.<MediaDeviceInfo>>

getCurrentMicrophone() → {string}

获取当前正在使用的麦克风的设备 ID。

Example
console.log('pusher | getCurrentMicrophone | ', pusher.getCurrentMicrophone());
Returns:
Type
string

(async) setCurrentMicrophone(microphoneID) → {Promise}

设置麦克风设备,可使用此接口在预览 setRenderView() 或推流 startPush() 过程中,切换麦克风设备。
当前电脑的麦克风设备列表,可通过 getMicrophoneList() 获取。

Example
var microphoneID = 'f68ea72aaf4bc5e5d7a8f2b910ac239c1faf975db92a1bd24efd3cd7419949a0'; // 请替换成设备实际的 ID
pusher.setCurrentMicrophone(microphoneID).then(() => {
  console.log('pusher | setCurrentMicrophone | ok');
}).catch((error) => {
  console.error('pusher | setCurrentMicrophone | failed', error);
});
Parameters:
Name Type Description
microphoneID string

麦克风的设备 ID

Returns:
Type
Promise

(async) setRenderView(options) → {Promise}

设置本地摄像头的预览渲染画面。

Examples
// 从麦克风采集音频,从摄像头采集视频(默认720p)
pusher.setRenderView({
  elementID: 'pusherView',
  audio: true,
  video: true
}).then(() => {
  // setRenderView ok
}).catch(error => {
  console.error('pusher | setRenderView | failed', error);
});
// 从麦克风采集音频,从摄像头采集视频,并设置视频 profile 为1080p
pusher.setRenderView({
  elementID: 'pusherView',
  audio: true,
  video: '1080p'
}).then(() => {
  // setRenderView ok
}).catch(error => {
  console.error('pusher | setRenderView | failed', error);
});
// 不采集音频,只从摄像头采集视频
pusher.setRenderView({
  elementID: 'pusherView',
  audio: false,
  video: true
}).then(() => {
  // setRenderView ok
}).catch(error => {
  console.error('pusher | setRenderView | failed', error);
});
// 不采集视频,只从麦克风采集音频
pusher.setRenderView({
  elementID: 'pusherView',
  audio: true,
  video: false
}).then(() => {
  // setRenderView ok
}).catch(error => {
  console.error('pusher | setRenderView | failed', error);
});
// 从麦克风采集音频,从摄像头采集视频,使用自定义视频Profile设置
pusher.setRenderView({
  elementID: 'pusherView',
  audio: true,
  video: {
    width: 360, // 视频宽度
    height: 360, // 视频高度
    frameRate: 10, // 帧率
    bitrate: 400 // 比特率 kbps
  }
}).then(() => {
  // setRenderView ok
}).catch(error => {
  console.error('pusher | setRenderView | failed', error);
});
// 使用指定的麦克风设备采集音频,使用指定的摄像头设备采集视频
pusher.setRenderView({
  elementID: 'pusherView',
  audio: true,
  microphoneID: 'f68ea72aaf4bc5e5d7a8f2b910ac239c1faf975db92a1bd24efd3cd7419949a0', // 请替换成设备实际的 ID
  video: true,
  cameraID: 'b7e921a9f636d49dc7a9e66a9d6d94085915f5225eb899e85a680f6f5e6a3666' // 请替换成设备实际的 ID
}).then(() => {
  // setRenderView ok
}).catch(error => {
  console.error('pusher | setRenderView | failed', error);
});
// 分享屏幕,并分享系统声音
let pusher = TWebLive.createPusher({
  userID: 'screen-' + 'your userID', // 屏幕分享 Pusher 的 ID,以 'screen-' 开头
  screenCapture: true
});
pusher.setRenderView({
  elementID: 'screenPusherView',
  screenProfile: '1080p', // 默认
  systemAudio: true // 采集系统声音,默认不采集
}).then(() => {
  // setRenderView ok
})..catch(error => {
  console.error('pusher | setRenderView | failed', error);
});
Parameters:
Name Type Description
options Object

配置项

Properties
Name Type Description
elementID string | HTMLDivElement

HTML <div> 标签 ID或者 HTMLDivElement 对象,该方法内部自动创建的音视频标签将被添加到该容器中。

audio boolean

是否从麦克风采集音频,默认采集

video boolean

是否从摄像头采集视频,默认采集,且默认视频 profile 为720p

screen boolean

是否分享屏幕,默认不分享。当分享屏幕时,audio video 需要设置为 false

Returns:
Type
Promise

(async) startPush(url) → {Promise}

开始推流。一次音视频会话中只能发布一个本地流。若想发布另外一个本地流,可先通过 stopPush() 取消发布当前本地流后再发布新的本地流。

Example
let url = 'room://' // 协议,必须以 `room://` 开头
  + 'sdkappid=' + SDKAppID + '&' // 腾讯云实时音视频应用的 SDKAppID
  + 'roomid=' + roomID + '&' // 房间号,32位整型
  + 'userid=' + userID + '&' // 用户 ID
  + 'usersig=' + userSig + '&' // 用户登录实时音视频应用的密码,其本质是对 UserID 等信息加密后得到的密文
  + 'livedomainname=' + liveDomainName + '&' // 直播播放域名
  + 'streamid=' + streamID; // 绑定腾讯云直播 CDN 流 ID,设置之后,您就可以在腾讯云直播 CDN 上通过标准直播方案(FLV|HLS)播放该用户的音视频流。 限制长度为64字节
pusher.startPush(url).then(() => {
  console.log('pusher | startPush | ok');
}).catch((error) => {
  console.error('pusher | startPush | failed', error);
});
Parameters:
Name Type Description
url string

推流地址

Returns:
Type
Promise

isPushing() → {boolean}

Pusher 是否正在推流。

Example
console.log('pusher | isPushing | ', pusher.isPushing());
Returns:
Type
boolean

(async) startCamera() → {Promise}

打开摄像头。

Example
pusher.startCamera().then(() => {
  console.log('pusher | startCamera | ok');
}).catch((error) => {
  console.error('pusher | startCamera | failed', error);
});
Returns:
Type
Promise

(async) stopCamera() → {Promise}

关闭摄像头。

Example
pusher.stopCamera().then(() => {
  console.log('pusher | stopCamera | ok');
}).catch((error) => {
  console.error('pusher | stopCamera | failed', error);
});
Returns:
Type
Promise

(async) startMicrophone() → {Promise}

打开麦克风。

Example
pusher.startMicrophone().then(() => {
  console.log('pusher | startMicrophone | ok');
}).catch((error) => {
  console.error('pusher | startMicrophone | failed', error);
});
Returns:
Type
Promise

(async) stopMicrophone() → {Promise}

关闭麦克风。

Example
pusher.stopMicrophone().then(() => {
  console.log('pusher | stopMicrophone | ok');
}).catch((error) => {
  console.error('pusher | stopMicrophone | failed', error);
});
Returns:
Type
Promise

(async) stopPush() → {Promise}

停止推流。

Example
pusher.stopPush().then(() => {
  console.log('pusher | stopPush | ok');
}).catch(error => {
  console.error('pusher | stopPush | failed', error);
});
Returns:
Type
Promise

getLiveStreamURL() → {string}

获取直播流地址,用于 CDN 直播观看,格式https://${liveDomainName}/live/${streamID}.flv

Example
console.log('live stream url: ' + pusher.getLiveStreamURL());
Returns:
Type
string