连麦直播
联系电话:(010) 6072 8829
技术QQ群:697918347
English
连麦直播API
API概览

TTT Websdk for web

三体云 tttwebsdk 提供面向 web 应用的 API,基于三体RTN,为 Web 端提供质量可靠的实时音视频通信。

方法

TTTRtcWeb 是 TTTWEBSDK 的入口类,提供所有可供 App 调用的方法。

根据方法实现的功能,我们把所有方法分为以下几类。

TTTRtcWeb方法

方法 功能
isSystemSupported 检查系统是否支持webrtc -- TTTRtcWeb static 方法
listDevices 枚举系统设备 -- TTTRtcWeb static 方法
setLogLevel 设置SDK的log等级 -- TTTRtcWeb static 方法
setServerUrl 设置服务器地址 -- TTTRtcWeb static 方法
getVersion 获取SDK版本信息 -- TTTRtcWeb static 方法
createClient 创建音视频对象
createStream 创建音视频流对象

Client方法

方法 功能
init 初始化客户端对象
join 加入 3TRTC 频道
leave 离开 TTTRTC 频道
publish 发布本地音视频流(含摄像头流、屏幕流、外部视频流)
unpublish 取消发布本地音视频流(含摄像头流、屏幕流、外部视频流)
publishScreen 向 CDN 推屏幕流
unpublishScreen 取消向 CDN 推屏幕流
subscribe 订阅远程音视频流(含摄像头流、屏幕流、外部视频流)
unsubscribe 取消订阅远程音视频流(含摄像头流、屏幕流、外部视频流)
pauseMic 暂停音频推流
resumeMic 恢复音频推流
pauseWebcam 暂停视频推流
resumeWebcam 恢复视频推流
pauseScreen 暂停向 CDN 推屏幕流
resumeScreen 恢复向 CDN 推屏幕流
setLiveMixerLayout 设置混流的布局
kickOut 主播踢人
leave 离开房间
close 关闭Client
remoteAudioStats 获取音频接收统计
remoteVideoStats 获取视频接收统计
localAudioStats 获取音频发送统计
localVideoStats 获取视频发送统计
getStats 获取网络状态
setRtmpUrl 切换 rtmp 推流地址
setVideoMixerBGIUrl 设置视频合屏的背景图
setUserRole 切换用户角色
renewToken 更新token

Stream 方法

方法 功能
setAudioProfile 设置音频 Profile
init 初始化音视频对象
getId 获取音视频流 ID
getAudioLevel 获取音量
hasVideo 检查时候本地流是否有视频
hasAudio 检查时候本地流是否有视频
enableVideo 启用视频轨道
disableVideo 禁用视频轨道
enableAudio 启用音频轨道
disableAudio 禁用音频轨道
setVideoProfile 设置视频属性
getVideoProfile 获取视频属性
play 播放音视频流
close 关闭音视频流
setAudioVolume 设置音频播放音量
setInputVolume 设置mic音量
switchDevice 切换设备

Client 事件

Client Events

Client事件

回调 事件
connection-state-change 连接状态改变
peer-join 通道内有用户加入
peer-leave 通道内有用户离开
disconnected 与服务端的连接已断开
kickout 被踢出房间
rtmp-success rtpm推流设置成功
rtmp-failure rtpm推流设置失败
onTokenPrivilegeWillExpire token将过期
audio-added 有远端音频流加入,可以订阅该流
video-added 有远端视频流加入,可以订阅该流
stream-subscribed 流订阅成功
stream-unsubscribed 流取消订阅成功
stream-published 本用户音视频流已发布
stream-unpublished 音频流已取消发布
screen-published 屏幕流已发布
screen-unpublished 屏幕流已取消发布
audio-mute 用户音频静音
audio-unmute 用户音频静音恢复
video-mute 用户视频静默
video-unmute 用户视频静默恢复

Stream 事件

Stream Events

Stream事件

volume-change 用户音量变化
speaking 用户正在发言
stopped-speaking 用户停止发言
screen-close 屏幕流已关闭

 

 

 

 

 

 

API方法

TTTRtcWeb方法

Boolean  static isSystemSupported( )
undefined  static listDevices(onSuccess, onFailure)
string  static getVersion()
undefined  static setLogLevel(logLevel)
undefined  static setServerUrl(url)
object  createClient(spec)
object  createStream(spec)

Client方法

undefined  init(appId, uid, onSuccess, onFailure)
undefined  join(token, channelId, onSuccess, onFailure)
undefined  leave(onSuccess, onFailure)
undefined  publish(stream, onSuccess, onFailure)
undefined  unpublish(stream, onSuccess, onFailure, closeDev)
undefined  publishScreen(stream, onSuccess, onFailure)
undefined  unpublishScreen(stream, onSuccess, onFailure)
undefined  subscribe(stream, onSuccess, onFailure)
undefined  unsubscribe(stream, onSuccess, onFailure)
undefined  pauseMic(stream, onSuccess, onFailure)
undefined  resumeMic(stream, onSuccess, onFailure)
undefined  pauseWebcam(stream, closeDev, onSuccess, onFailure)
undefined  resumeWebcam(stream, onSuccess, onFailure)
undefined  pauseScreen()
undefined  resumeScreen()
undefined  setLiveMixerLayout(liveMixerLayout, onSuccess, onFailure)
undefined  kickOut(uid, onSuccess, onFailure)
undefined  close()
Object  remoteAudioStats()
Object  remoteVideoStats()
Object  localAudioStats()
Object  localVideoStats()
Object  getStats()
undefined  setRtmpUrl(opts, onSuccess, onFailure)
undefined  setVideoMixerBGIUrl(url, onSuccess, onFailure)
undefined  setUserRole(role, onSuccess, onFailure)
undefined  renewToken(token, onSuccess, onFailure)

Stream方法

undefined  setAudioProfile(profile)
undefined  init(onSuccess, onFailure)
string  getId()
int  getAudioLevel()
Boolean  hasVideo()
Boolean  hasAudio()
undefined  enableVideo()
undefined  disableVideo()
undefined  enableAudio()
undefined  disableAudio()
undefined  setVideoProfile(videoProfile, onSuccess, onFailure)
Object  getVideoProfile()
undefined  play(elementID)
undefined  close()
undefined  setAudioVolume(volume)
undefined  setInputVolume(volume)
undefined  switchDevice(type, deviceId, onSuccess, onFailure)

函数说明

 
检查浏览器对 websdk 的兼容性
TTTRtcWeb static isSystemSupported(); // 注:此为 TTTRtcWeb 的 static 形式方法

返回Boolean值

名称 描述
返回值 true - 支持 websdk
false - 不支持 websdk
 
枚举系统设备
TTTRtcWeb static listDevices(); // 注:此为 TTTRtcWeb 的 static 形式方法

枚举系统设备

名称 描述
参数 onSuccess: function - 成功回调
onSuccess函数携带参数 devices - 设备列表
每项包含如下字段:
* kind - 设备类型,取值[audioinput|videoinput|audiooutput]
* label - 标签/显示名
* deviceId - 设备ID - 该参数将用于指定设备创建 Stream 时用
参数 onFailure: function - 失败回调
* 枚举设备失败

示例代码

	
		TTTRtcWeb.listDevices((devices) => {
			devices.forEach(function (deviceInfo) {
				message = deviceInfo.kind + ": " + deviceInfo.label + " id = " + deviceInfo.deviceId + '\n';
	
				option.value = deviceInfo.deviceId;
				if (deviceInfo.kind === 'audioinput') {
					//....
				} else if (deviceInfo.kind === 'audiooutput') {
					//...
				} else if (deviceInfo.kind === 'videoinput') {
					//...
				} else {
					console.log('Some other kind of source/device: ', deviceInfo);
				}
			});
		}, (err) => {
			//...
		});

		// 返回结构举例:
		audioinput: 默认 - 麦克风 (Realtek High Definition Audio) id = default
		audioinput: 通讯 - 麦克风 (Realtek High Definition Audio) id = communications
		audioinput: 麦克风 (Realtek High Definition Audio) id = 5fa4bb7b2bc3e874589e874504ca737f8185024ea081b99a6fdea39fc50a3e67
		videoinput: EasyCamera (04f2:b57d) id = 2079af9efddcff53e42675c3fcde75b95127a6fdf6cdb66f47ba65a5da80b907
		audiooutput: 默认 - 扬声器 (Realtek High Definition Audio) id = default
		audiooutput: 通讯 - 扬声器 (Realtek High Definition Audio) id = communications
		audiooutput: 扬声器 (Realtek High Definition Audio) id = 6bb5c351c51d3d36333e846fbbbb470f11d302d49ca0bd4c2235e6949e306977
	
 
获取SDK版本信息
TTTRtcWeb static getVersion(); // 注:此为 TTTRtcWeb 的 static 形式方法

获取SDK版本信息

名称 描述
返回值 SDK版本号
 
设置日志级别
TTTRtcWeb static setLogLevel(); // 注:此为 TTTRtcWeb 的 static 形式方法

设置SDK输出日志的级别

名称 描述
参数 - type: string
type 取值如下:
* LOG_NONE
* LOG_ERROR
* LOG_WARN
* LOG_INFO
* LOG_DEBUG
* LOG_TRACE

解释:
* LOG_NONE ---- 不输出日志
* LOG_ERROR ---- 输出错误日志
* LOG_WARN ---- 输出警告日志
* LOG_INFO ---- 输出信息日志
* LOG_DEBUG ---- 输出调试日志
* LOG_TRACE ---- 输出跟踪日志. 默认值.
 
设置服务器地址(setServerUrl)
TTTRtcWeb static setServerUrl(url); // 注:此为 TTTRtcWeb 的 static 形式方法

设置服务器地址
此函数只适应于私有化部署方案.

名称 描述
参数 - url: string 服务器域名
 
创建Client对象(createClient)
TTTRtcWeb createClient(spec);

创建Client对象

名称 描述
参数 - spec: object {
    role: @type {string} - 取值范围:1 | 2 | 3
    disableRtmpVideo: @type {Boolean} (可选参数)
    rtmpUrl: @type {string} (可选参数)
    videoMixerBGIUrl: @type {string} (可选参数) - 视频合屏背景图url
    audioCodec: @type {string} (可选参数) - 取值范围:opus | isac
}

注: role = '1 | 2 | 3'
1: 主播; 2: 副播; 3: 观众


注: disableRtmpVideo = 'true|false'
是否仅向CDN推音频


注: rtmpUrl -(可选参数)如果需要自行指定推流地址,可设置该参数
注: audioCodec -(可选参数)用于前端显式指定音频编码(opus | isac)
 
创建音视频流对象(createStream)
TTTRtcWeb createStream(spec);

创建 Stream 对象
每个 Stream 对象标识一套音视频流,创建 Stream 对象,并执行 stream.init ,该流将可通过 client 向 RTN 推流;
tttwebsdk 在同一 client 上支持同时推多路流;

名称 描述
参数 - spec: object {
  streamId: @type {string} - 音视频流 ID,通常设置为用户ID
  userId: @type {string} - 用户ID
  audioSource: @type {MediaStreamTrack} - 是否使用外部 音频源 -- 注:(可选)
  videoSource: @type {MediaStreamTrack} - 是否使用外部 视频源 -- 注:(可选)
  audio: @type {Boolean} - 是否由 Stream 打开音频设备 -- 注:(可选),若已设置 audioSource ,则此项失效
  microphoneId: @type {string} - 麦克风的设备ID -- 注:(可选),不设置将使用默认的麦克风
  video: @type {Boolean} - 是否由 Stream 打开视频设备 -- 注:(可选),若已设置 videoSource ,则此项失效
  cameraId: @type {string} - 摄像头的设备ID -- 注:(可选),不设置将使用默认的摄像头
  attributes: { -- (可选) 包含以下属性:
      videoProfile: @type {string} 视频分辨率,取值范围见下表定义
      minFrameRate: @type {number} 最小视频帧率
      maxFrameRate: @type {number} 最大视频帧率
      idealFrameRate: @type {number} 理想帧率
  }
  screen: @type {Boolean} - 是否由 Stream 打开屏幕共享 -- (可选)
  codecOptions: { -- (可选)
      startBitrate: @type {number} - 单位:kbps
      maxBitrate: @type {number} - 单位:kbps
      minBitrate: @type {number} - 单位:kbps
  }
  subStream: @type {Boolean} - 是否子流 -- (可选)
}
						
e.g.: sample parameter of code.

{
	streamID: @type {string},
	userID: @type {string},
	audio: @type {Boolean},
	video: @type {Boolean},
	screen: @type {Boolean},
	attributes: {
		videoProfile: @type {string},
		minFrameRate: @type {number},
		maxFrameRate: @type {number},
		idealFrameRate: @type {number} (NOTE: option)
	},
	codecOptions: {
		startBitrate: @type {number}, 
		maxBitrate: @type {number}, 
		minBitrate: @type {number}
	},
	// NOTE: Unit is bits.
	subStream: true | false
}
						
					

注1: 可以创建的视频流包括:
      video: true -- 摄像头视频
      screen: true -- 屏幕分享
      videoSource -- 外部视频源
注2: video, screen 为互斥项,同时最多只能有其中一个设置为true
注3: audioSource、audio 两参数互斥,如果设置了有效 audioSource,则 audio 自动失效
注4: videoSource、video 两参数互斥,如果设置了有效 videoSource,则 video 自动失效

注5: codecOptions 用于自定义码率,其参数说明如下:
codecOptions: {
  startBitrate -- 初始码率
  maxBitrate -- 最大码率
  minBitrate -- 最小码率
}

attributes.videoProfile 定义

视频属性 分辨率(宽x高) 帧率(fps) 码率(kbps)
120p 160*120 15 65
240p 320*240 15 300
360p 640*360 15 300
480p 640*480 15 450
720p 1280*720 15 1400
1080p 1920*1080 15 2000
 
初始化客户端对象(init)
Client init(appId, uid, onSuccess, onFailure);

使用该方法初始化客户端引擎对象。

名称 描述
参数 - appId: string appId
参数 - uid: string|number 用户ID
注:十进制数值
参数 - onSuccess: function 成功回调 -- 所有后续有关 Client 的操作,如 join,必须要在 onSuccess 后执行
参数 - onFailure: function 失败回调。
 
加入频道(join)
Client join(token, channelId, onSuccess, onFailure)

加入 3TRTC 频道 -- 应确保在 Client.init 的成功回调后执行

名称 描述
参数 - token: string 验证token
注1:根据 APP ID、Secret Key 生成 token
注2:传入 '',表示不执行校验
参数 - channelId: string|number 频道(房间)id:房间号码
注:十进制数值
参数 - onSuccess: function 成功回调
参数 - onFailure: function 失败回调

注:用户加入房间时,保证用户id唯一,否则相同的id用户会被踢出房间。

 
离开房间(leave)
Client leave(onSuccess, onFailure);

离开频道

名称 描述
参数 - onSuccess: function 成功回调
参数 - onFailure: function 失败回调

注:离开此房间

 
发布本地音视频流(含摄像头流、屏幕流、外部视频流)(publish)
Client publish(stream, onSuccess, onFailure);

发布本地音视频流(含摄像头流、屏幕流、外部视频流)
该方法将本地音视频流发布至 3T-RTN。
发布音视频流之后,本地会触发 Client.on("stream-published") 回调;远端会触发 Client.on("audio-added") 或 Client.on("video-added") 事件

注 -- 音视频流包括:摄像头视频、屏幕分享、外部视频流

名称 描述
参数 - stream: Stream 发布的 Stream 对象
stream 由 TTTRtcWeb.createStream() 创建,且执行了 stream.init()
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因。

代码示例

	
			client.publish(local_stream, function success() {
				console.log(...)	
			}, function failure(e) {
				console.error(e)
			});
	
 
取消发布本地音视频流(含摄像头流、屏幕流、外部视频流)(unpublish)
Client unpublish(stream, onSuccess, onFailure, closeDev);

取消发布本地音视频流(含摄像头流、屏幕流、外部视频流)

名称 描述
参数 - stream: Stream 要取消发布的 Stream 对象
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
参数 - closeDev: Boolean 是否关闭摄像头
true - 关闭摄像头
false - 仅仅暂停音视频上行,保持摄像头打开状态
注:流不再向服务器发送,房间内其他用户将不再接收该用户音视频流。

代码示例


		client.unpublish(local_stream, () => {
			console.log(...)	
		}, (e) => {
			console.error(e)
		});
 
 
专用于向 CDN 发布屏幕流(publishScreen)
Client publishScreen(stream, onSuccess, onFailure)

注:专用于将屏幕流向 CDN 推流 -- 如果需要在连麦房间中推屏幕流,应使用 publish

名称 描述
参数 - stream: Stream 屏幕流的 Stream 对象
stream 由 TTTRtcWeb.createStream() 创建,且执行了 stream.init()
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
取消向 CDN 推屏幕流(unpublishScreen)
Client unpublishScreen(stream, onSuccess, onFailure)

取消向 CDN 推屏幕流

名称 描述
参数 - stream: Stream 屏幕流的 Stream 对象
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
设置合流视频的布局(setLiveMixerLayout)
Client setLiveMixerLayout(liveMixerLayout, onSuccess, onFailure)

设置合流视频的布局

名称 描述
参数 - liveMixerLayout: Object 该参数为混屏布局,具体的定义如下:
{
    backgroundColor: 0x000000,
    width: 640,
    height: 480,
    users: [
        {
            userId: "54815",
            streamId: "54815",
            x: 0,
            y: 0,
            w: 0.5,
            h: 0.5,
            z: 1
        },
        {
            userId: "12765",
            streamId: "12765",
            x: 0.5,
            y: 0,
            w: 0.5,
            h: 0.5,
            z: 1
        }
    ]
}

字段说明:
backgroundColor -- 背景色, 0x 起始的16进制数,取值如: 0x000000
width -- 整个画布的宽,取值如:640
height --  整个画布的宽,取值如:480
        users -- 数组,其中每项含如下参数:
          -- userId -- 该用户ID
          -- streamId -- 该路视频 streamId - 来源于 stream.getId()
          -- x, y : 在合屏上的 左上坐标位置,取值范围 0 ~ 1
          -- w, h : 在合屏上的 其视频 宽/高,取值范围 0 ~ 1
          -- z : 叠放次序,值越大,叠放次序越高
						
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
将某人踢出房间(kickOut)
Client kickOut(uid, onSuccess, onFailure)

将某人踢出房间

名称 描述
参数 - uid: string|number 将要踢出用户的userId
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因

注:只有主播有此权限。作为主播,可以踢出副播或观众

 
订阅远程音视频流(subscribe)
Client subscribe(stream, onSuccess, onFailure)

订阅远程音视频流

名称 描述
参数 - stream: Stream 订阅流的 Stream 对象
注:stream 对象来自于 sdk 的通知,由 'audio-added' 或者 'video-added' 携带的 stream 参数
参数 - onSuccess: function 成功回调:参数为 Stream 对象
注:此流为可播放流对象
参数 - onFailure: function 失败回调:参数为失败原因

注:订阅远端流 - 本端开始接收指定远端音视频流,订阅成功后,本地可以播放该路媒体。

 
取消订阅远程音视频流(unsubscribe)
Client unsubscribe(stream, onSuccess, onFailure)

取消订阅远程音视频流

名称 描述
参数 - stream: Stream 要取消订阅 Stream 对象
参数 - onSuccess: function 成功回调:参数为stream对象
参数 - onFailure: function 失败回调:参数为失败原因

注:此函数调用后本端将不再接收该路流。

 
暂停推音频流(pauseMic)
Client pauseMic(stream, onSuccess, onFailure)

暂停推音频流

名称 描述
参数 - stream: Stream 将暂停的 Stream 对象
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因

注:此函数调用自己的音频流将不再向服务器发送,房间内其他人都将听不见你

 
恢复推音频流(resumeMic)
Client resumeMic(stream, onSuccess, onFailure)

恢复推音频流

名称 描述
参数 - stream: Stream 将恢复的 Stream 对象
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
暂停推视频流(pauseWebcam)
Client pauseWebcam(stream, closeDev, onSuccess, onFailure)

暂停推视频流

名称 描述
参数 - stream: Stream 将暂停的 Stream 对象
参数 - closeDev: Boolean 是否关闭摄像头设备
true - 关闭摄像头
false - 仅仅暂停视频上行,保持摄像头打开状态
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
恢复推视频流(resumeWebcam)
Client resumeWebcam(stream, onSuccess, onFailure)

恢复推视频流

名称 描述
参数 - stream: Stream 将恢复的 Stream 对象
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
关闭客户端 (close)
Client close()

关闭客户端 - 执行 close 后,将从系统退出

名称 描述
参数
 
获取音频接收统计 (remoteAudioStats)
Client remoteAudioStats()

获取音频接收统计

名称 描述
参数 - 无 -
返回值 下行音频传输状态 -- 具体定义见后文

下行音频传输状态

{
    statTS: 1582989298574,    // 统计时刻的时戳
    ssrc: 97843223,    // 该路流 ssrc 标识
    streamId: 111111,    // stream id
    timestamp: 646196852,    // 流时戳 -- 可不用关心
    bitrate: 40,    // 媒体流码率 -- 单位 kbps
    packetCount: 1163,    // 累计包数
    packetLost: 0,    // 累计丢包数
    nackCount: 0,    // 重传包数
    pliCount: 0,    // 关键帧请求数
    sliCount: 0,    // 条带请求数 -- 可不用关心
    fractionLost: 21,    // 当前丢包率 %
    rtt: 42    // rtt -- 往返时间
}

 
获取视频接收统计 (remoteVideoStats)
Client remoteVideoStats()

获取视频接收统计

名称 描述
参数 - 无 -
返回值 下行视频传输状态 -- 具体定义见后文

下行视频传输状态

{
    statTS: 1582989663000,    // 统计时刻的时戳
    ssrc: 86991964,    // 该路流 ssrc 标识
    streamId: 111111,    // stream id
    timestamp: 646561280,    // 流时戳 -- 可不用关心
    bitrate: 180,    // 媒体流码率 -- 单位 kbps
    packetCount: 361,    // 累计包数
    packetLost: 20,    // 累计丢包数
    nackCount: 41,    // 重传包数
    pliCount: 7,    // 关键帧请求数
    sliCount: 0,    // 条带请求数 -- 可不用关心
    fractionLost: 21,    // 当前丢包率 %
    rtt: 42    // rtt -- 往返时间
}

 
获取音频发送统计 (localAudioStats)
Client localAudioStats()

获取音频发送统计

名称 描述
参数 - 无 -
返回值 上行音频传输状态 -- 具体定义见后文

上行音频传输状态

{
    statTS: 1582989662531,    // 统计时刻的时戳
    ssrc: 4202670861,    // 该路流 ssrc 标识
    streamId: 111111,    // stream id
    timestamp: 646560815,    // 流时戳 -- 可不用关心
    bitrate: 37,    // 媒体流码率 -- 单位 kbps
    packetCount: 390,    // 累计包数
    packetLost: 31,    // 累计丢包数
    nackCount: 0,    // 重传包数
    jitter: 7,    // jitter 抖动缓存
    pliCount: 0,    // -- 可不用关心
    fractionLost: 31,    // 当前丢包率 %
}

 
获取视频发送统计 (localVideoStats)
Client localVideoStats()

获取视频发送统计

名称 描述
参数 - 无 -
返回值 上行视频传输状态 -- 具体定义见后文

上行视频传输状态

{
    statTS: 1582989662648,    // 统计时刻的时戳
    ssrc: 4047475653,    // 该路流 ssrc 标识
    streamId: 111111,    // stream id
    timestamp: 646560932,    // 流时戳 -- 可不用关心
    bitrate: 166,    // 媒体流码率 -- 单位 kbps
    packetCount: 221,    // 累计包数
    packetLost: 29,    // 累计丢包数
    nackCount: 48,    // 重传包数
    jitter: 37,    // jitter 抖动缓存
    pliCount: 9,    // -- 可不用关心
    fractionLost: 29,    // 当前丢包率 %
}

 
获取网络状态(getStats)
TTTRtcWeb getStats()

获取网络状态

名称 描述
返回值 当前状态信息,具体定义见后

{
    iceSendTransport:"connected",    // 上行媒体通道链接状态 : fault | new | connected | disconnected
    iceRecvTransport:"connected",    // 下行媒体通道连接状态 : fault | new | connected | disconnected
    websocketTransport:"online",    // 信令通道连接状态 : fault | connected | disconnected
    loginStatus:"online",    // 当前登录状态 : online | offline
    stats:
    { // 传输状态统计
      rtt:"193",    //
      networkType:"wlan",    // 网络类型 : lan | wlan
      upSpeed:"201.00",    // 上行速率(总) - kbps
      upFractionLost:18,    // 上行丢包率
      downSpeed:"205.00",    // 下行速率(总) - kbps
      downFractionLost:15    // 下行丢包率
    }
}

 
切换 rtmp 推流地址 (setRtmpUrl)
Client setRtmpUrl(opts, onSuccess, onFailure)

切换 rtmp 推流地址

名称 描述
参数 - opts: Object {
    url: @type {string} - CDN 地址
    avMode: @type {string} (可选参数)
}

注: avMode = ''audio' | 'av''
'audio': 纯音频
'av': 音视频
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
设置视频合屏的背景图 (setVideoMixerBGIUrl)
Client setVideoMixerBGIUrl(url, onSuccess, onFailure)

设置视频合屏的背景图(url) - 只要主播角色的用户才有此权限

名称 描述
参数 - url: string 背景图 url
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
切换用户角色 (setUserRole)
Client setUserRole(role, onSuccess, onFailure)

切换用户角色 - 仅仅允许在 副播|观众 之间切换

名称 描述
参数 - role: string|number 用户角色 - 有效取值为 2 | 3 注: role = '2 | 3'
2: 副播; 3: 观众
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
更新token (renewToken)
Client renewToken(token, onSuccess, onFailure)

当启动了校验时,将需要通过 renewToken 来更新 token

名称 描述
参数 - token: string token 字符串,由上层根据 AppID、Secret Key 生成
参数 - onSuccess: function 成功回调:无参数
参数 - onFailure: function 失败回调:参数为失败原因
 
设置音频 Profile(setAudioProfile)
Stream setAudioProfile(profile)

设置音频 Profile

名称 描述
参数 - profile: string 取值 : 音频属性(Profile)字符串。详见下表的定义

-- 仅仅对于本地流,该接口有效 -- 要确保在调用 Stream.init 之前调用该接口

音频 Profile 定义

音频属性 采样率 声道 码率(kbps) 编码
speech_low_quality 16kHZ 单声道 24 opus
speech_standard 32kHZ 单声道 24 opus
music_standard 48kHZ 单声道 40 opus
standard_stereo 48kHZ 双声道 64 opus
high_quality 48kHZ 单声道 128 opus
high_quality_stereo 48kHZ 双声道 192 opus
 
流初始化(init)
Stream init(onSuccess, onFailure)

流初始化,用于本地流初始化,创建本地摄像头、屏幕分享、外部视频源、mic采集、外部音频源等相关
注:仅用于本地流

名称 描述
参数 - onSuccess: function 成功回调
参数 - onFailure: function 失败回调

当stream create完成后,需要调用init方法将本地流真正初始化完成。

 
获取音视频流 ID(getId)
Stream getId()

获取音视频流 ID

名称 描述
返回值 - streamId: string stream id.
 
获得本地音频当前音量(getAudioLevel)
Stream getAudioLevel()

获得本地音频当前音量

名称 描述
返回值 - volume: number 音量
数值: 0 到 100 之间
 
检查本地流是否包含视频(hasVideo)
Stream hasVideo()

检查本地流是否包含视频

名称 描述
返回值 - boolean true - 包含
false - 不包含
 
检查本地流是否包含音频(hasAudio)
Stream hasAudio()

检查本地流是否包含音频

名称 描述
返回值 - boolean true - 包含
false - 不包含
 
禁用视频轨道(disableVideo)
Stream disableVideo()

禁用本地视频轨道

名称 描述
参数
 
启用本地视频轨道(enableVideo)
Stream enableVideo()

启用视频轨道

名称 描述
参数
 
禁用本地音频轨道(disableAudio)
Stream disableAudio()

禁用本地音频轨道


名称 描述
参数
 
启用本地音频轨道(enableAudio)
Stream enableAudio()

启用音频轨道

名称 描述
参数
 
设置视频属性(setVideoProfile)
Stream setVideoProfile(videoProfile, onSuccess, onFailure)

设置视频属性

名称 描述
参数 - videoProfile: object 视频属性(Profile)字符串。详见下表的定义。
参数 - onSuccess: function 成功回调。
参数 - onFailure: function 失败回调。

视频属性定义

视频属性 分辨率(宽x高) 帧率(fps) 码率(kbps)
120p 160*120 15 65
240p 320*240 15 300
360p 640*360 15 300
480p 640*480 15 450
720p 1280*720 15 1400
1080p 1920*1080 15 2000
 
获取视频属性(getVideoProfile)
Stream getVideoProfile()

获取视频属性

名称 描述
返回值 - object 获取视频属性.
{
	height: @type {number},
	width: @type {number}
}

例如:
{
	height: 480
	width: 640
}
				
 
播放音视频 (play)
Stream play(elementID)

播放音视频流

名称 描述
参数 - elementID: string video tag id
注:该参数为可选参数,如果为纯音频流,则无需传入 elementID
 
关闭本地音视频流(close)
Stream close()

关闭本地音视频流

名称 描述
参数
 
设置音频播放音量(setAudioVolume)
Stream setAudioVolume(volume)

设置音频播放音量

名称 描述
参数 - volume: number 播放音量,取值 : [0, 1.5]
0 : 静音
0.* : 减小
1 : 正常
1.* : 放大
1.5 : 最大
 
设置mic音量(setInputVolume)
Stream setInputVolume(volume)

设置mic音量

名称 描述
参数 - volume: number 播放音量,取值 : [0, 1.5]
0 : 静音
0.* : 减小
1 : 正常
1.* : 放大
1.5 : 最大
 
切换设备(switchDevice)
Stream switchDevice(type, deviceId, onSuccess, onFailure)

关闭本地音视频流

名称 描述
参数 - type: string 设备类型,取值:'audio' | 'video'
参数 - deviceId: string 设备ID -- 来源于 TTTRtcWeb.listDevices() 获取的设备列表,取其中的 deviceId 值
参数 - onSuccess: function 成功回调。
参数 - onFailure: function 失败回调。

 

 

 

 

 

 

API回调

事件

(通过 client.on(), stream.on() 监听的事件)
connection-state-change 连接状态改变
peer-join 通道内有用户加入
peer-leave 通道内有用户离开
disconnected 与服务端的连接已断开
kickout 被踢出房间
rtmp-success rtmp推流设置成功
rtmp-failure rtmp推流设置失败
onTokenPrivilegeWillExpire token将过期
audio-added 通道内有远端音频流加入
video-added 通道内有远端视频流加入
stream-subscribed 音视频流订阅成功
stream-unsubscribed 音视频流已取消订阅
stream-published 本用户音视频流发布成功
stream-unpublished 音频流已取消发布
screen-published 屏幕流已发布
screen-unpublished 屏幕流已取消发布
audio-mute 用户音频静音
audio-unmute 用户音频静音恢复
video-mute 用户视频静默
video-unmute 用户视频静默恢复
screen-close 屏幕流已关闭
speaking 用户正在发言
volume-change 用户音量变化
stopped-speaking 用户停止发言

事件说明

 
连接状态改变(connection-state-change)
client.on(event: 'connection-state-change', callback: function): void

连接状态改变

名称 描述
object {
prevState: @type {string}, // 改变之前的状态
curState: @type {string} // 当前状态
}
	
		client.on('connection-state-change', function (evt) {
			console.log(evt.prevState, evt.curState);
			//...
		}
	
 
通道内有用户加入(peer-join)
client.on(event: 'peer-join', callback: function): void

通道内有用户加入

名称 描述
object {
userID: @type {string|number} // 用户ID
}
 
通道内有用户离开(peer-leave)
client.on(event: 'peer-leave', callback: function): void

通道内有用户离开

名称 描述
object {
userID: @type {string|number} // 用户ID
}
 
与服务端的连接已断开(disconnected)
client.on(event: 'disconnected', callback: function): void

与服务端的连接已断开

名称 描述
参数

服务器断开连接. 1: 可能是网络连接断开了;2:被踢出房间后。

 
被踢出房间(kickout)
client.on(event: 'kickout', callback: function): void

被踢出房间

名称 描述
object {
exitCode: @type {number}, // 错误码
reason: @type {string} // 错误原因
}
错误原因如下:
* 重复登录。
* 主播退出。
* 被主播踢出房间
 
rtmp推流设置成功(rtmp-success)
client.on(event: 'rtmp-success', callback: function): void

rtmp推流设置成功

名称 描述
object {
url: @type {string}, // 该推流地址 url
channelId: @type {string|number} // 房间号
}
 
rtmp推流设置失败(rtmp-failure)
client.on(event: 'rtmp-failure', callback: function): void

rtmp推流设置失败

名称 描述
object {
url: @type {string}, // 该推流地址 url
channelId: @type {string|number} // 房间号
}
 
通道内有远端音频流加入(audio-added)
client.on(event: 'audio-added', callback: function): void

通道内有远端音频流加入

名称 描述
object {
stream: @type {Stream} // 音频流对象
}
	
		client.on('audio-added', function (evt) {
			let stream = evt.stream;
			
			// 请求订阅 该流
			client.subscribe(stream, (event) = > {
				// ...
			}, (err) => {
				// ...
			}
			//...
		}
	
 
通道内有远端视频流加入(video-added)
client.on(event: 'video-added', callback: function): void

通道内有远端视频流加入

名称 描述
object {
stream: @type {Stream} // 视频流对象
}
	
		client.on('video-added', function (evt) {
			let stream = evt.stream;
			
			// 请求订阅 该流
			client.subscribe(stream, (event) = > {
				// ...
			}, (err) => {
				// ...
			}
			//...
		}
	
 
音视频流订阅成功(stream-subscribed)
client.on(event: 'stream-subscribed', callback: function): void

音视频流订阅成功

名称 描述
object {
stream: @type {Stream} // 流对象
}

示例代码

		
			client.on('stream-subscribed', function (evt) {
				let stream = evt.stream;
				if (stream.type === 'audio')
				{
					stream.play();
				}
				else
				{
					stream.play(video-elementID);
				}
				//...
			}
		
 
音视频流已取消订阅(stream-unsubscribed)
client.on(event: 'stream-unsubscribed', callback: function): void

音视频流已取消订阅

名称 描述
object {
stream: @type {Stream} // 流对象
}

示例代码

			
				client.on('stream-unsubscribed', function (evt) {
					let stream = evt.stream;
					//...
				}
			
 
本用户音视频流发布成功(stream-published)
client.on(event: 'stream-published', callback: function): void

本用户音视频流发布成功

名称 描述
object {
stream: @type {Stream} // 流对象
}

示例代码

			
				client.on('stream-published', function (evt) {
					let stream = evt.stream;
					//...
				}
			
 
音频流已取消发布(stream-unpublished)
client.on(event: 'stream-unpublished', callback: function): void

音频流已取消发布

名称 描述
object {
stream: @type {Stream} // 流对象
}

示例代码

			
				client.on('stream-unpublished', function (evt) {
					let stream = evt.stream;
					//...
				}
			
 
屏幕流已发布(screen-published)
client.on(event: 'screen-published', callback: function): void

屏幕流已发布

名称 描述
object {
stream: @type {Stream} // 流对象
}

示例代码

			
				client.on('screen-published', function (evt) {
					let stream = evt.stream;
					//...
				}
			
 
屏幕流已取消发布(screen-unpublished)
client.on(event: 'screen-unpublished', callback: function): void

屏幕流已取消发布

名称 描述
object {
stream: @type {Stream} // 流对象
}
			
				client.on('screen-unpublished', function (evt) {
					let stream = evt.stream;
					//...
				}
			
 
用户音频静音(audio-mute)
client.on(event: 'audio-mute', callback: function): void

用户音频静音

名称 描述
object {
stream: @type {Stream} // 流对象
}

	client.on('audio-mute', function (evt) {
		let stream = evt.stream;
		let uid = stream.getId();
		//...
	}
 
用户音频静音恢复(audio-unmute)
client.on(event: 'audio-unmute', callback: function): void

用户音频静音恢复

名称 描述
object {
stream: @type {Stream} // 流对象
}

示例代码


	client.on('audio-unmute', function (evt) {
		let stream = evt.stream;
		let uid = stream.getId();
		//...
	}
 
静默用户视频(video-mute)
client.on(event: 'video-mute', callback: function): void

静默用户视频

名称 描述
object {
stream: @type {Stream} // 流对象
}

示例代码


	client.on('video-mute', function (evt) {
		let stream = evt.stream;
		let uid = stream.getId();
		//...
	}
 
恢复用户静默视频(video-unmute)
client.on(event: 'video-unmute', callback: function): void

恢复用户静默视频

名称 描述
object {
stream: @type {Stream} // 流对象
}

示例代码

	
		client.on('video-unmute', function (evt) {
			let stream = evt.stream;
			let uid = stream.getId();
			//...
		}
	
 
屏幕流关闭(screen-close)
stream.on(event: 'screen-close', callback: function): void

屏幕流关闭

名称 描述
object {
streamID : @type {string},
stream: @type {Stream} // 流对象
}

当用户点击停止屏幕共享按钮时将触发这个事件.

 
有用户正在发言(speaking)
stream.on(event: 'speaking', callback: function): void

用户正在发言

名称 描述
object {
userID: @type {string|number} // 正在发言的用户ID
}
 
用户音量变化(volume-change)
stream.on(event: 'volume-change', callback: function): void

用户音量变化

名称 描述
object {
userID: @type {string|number} // 正在发言的用户ID
volume: @type {number} // 音量值
}
 
用户停止发言(stopped-speaking)
stream.on(event: 'stopped-speaking', callback: function): void

用户停止发言

名称 描述
object {
userID: @type {string|number} // 停止发言的用户ID
}

 

 

 

 

 

 

API示例

示例代码

 
demo源码: santiyun@github