new Pusher(options)
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
配置 Properties
|
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 |
事件名称。所有的事件名称都存放在 |
|
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 |
事件名称。所有的事件名称都存放在 |
|
handler |
function |
处理事件的方法,当事件触发时,会调用此handler进行处理。 |
|
context |
* |
<optional> |
期望 handler 执行时的上下文 |
setLogLevel(level)
设置日志级别,低于 level 的日志将不会输出。
Example
pusher.setLogLevel(1);
Parameters:
Name | Type | Description |
---|---|---|
level |
Number |
日志级别
|
(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
|
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