从2019年10月11日开始,浏览器端API版本从4.0.0版本升至4.6.2版本。中间修复unpublish成功后又重新publish失败报错问题,修复上行 peerConnection 断开时没有打印日志的问题修复 getTransportStats 接口返回的 rtt 值为 NAN 的问题等。增加了NETWORK_QUALITY 事件,增加部署环境自动检测,对createClient 增加 streamId userdefinerecordid 字段等优化了。优化上行码率调控逻辑,优化 switchRole 参数校验逻辑,优化上行网络质量计算逻辑,优化错误提示信息等。以下内容为web端的核心内容和代码中未体现的内容。
错误代码包括错误码定义、账号错误信息以及常见报错和处理方式。
错误码常见报错为进房失败、用户被提出房间和远端流订阅超时,分别对应0x4004、0x4040和0x4042。
账号错误主要值账号系统发生错误错误代码以7开头,主要分为大块方面,userSig账号错误、内部错误、sdkAppId账号问题、请求报错、验证和票据等问题。详细如下:
这里记录了一些报错时的报错信息,如获取麦克风权限被拒绝,则需用户开启麦克风才能进行音频通话。
浏览器端的API主要分为8个内容:Web SDK 的主入口TRTC,音视频客户端对象client,音视频流stream,本地视频流localStream,远端音视频流remoteStream,客户端事件列表以及错误对象和错误码。
通过 TRTC 方法可以创建一个实时音视频通信的客户端对象 (Client) 和本地音视频流对象 (Stream)。 TRTC 方法还可以检测浏览器的兼容性,是否支持屏幕分享,以及设置日志级别及日志上传。
checkSystemRequirements,用于检测TRTC Web SDK是否兼容浏览器,常用于创建客户端对象后对其进行检测。
isScreenShareSupported,检测浏览器是否支持屏幕分享,需要在创建屏幕分享流之前调用该方法检查当前浏览器是否支持屏幕分享。
getDevices、getCameras和getMicrophones用于获取设备数据,但出于安全考虑,设备信息需要得到用户的允许,否则返回label和deviceId 字段可能都是空的。主要用于创建本地流对象时获得设备参数。
getSpeakers返回扬声器设备列表,同getDevices也是返回一个MediaDeviceInfo数组对象,什么是MediaDeviceInfo数组呢?它是用于描述单个媒体输入或输出设备的信息,一共有四个属性。deviceId持久保存代表设备的标识符;groupId组标志,对同一物理设备具有相同的组标志;kind用于枚举"videoinput","audioinput"或"audiooutput";label用于描述设备标签。
setLogLevel和enableUploadLog用于设置输出日志等级和上传日志,便于线上定
为问题。日志等级包含六种类型,为保证定位准确,需要将日志设置为WARN。
方法 设置
setProxyServer()用于部署代理服务
on/off用于绑定和取消事件。绑定事件如绑定peer-join、subscribe等,off可以解除某一个事件或者通过“*”解除所有事件绑定。
getRemoteMuteState获取当前房间内远端用户视频mute的状态列表,返回一个remoteMuteState数组列表。
getTransportStats用于获取当前网络传输状况统计数据,传递一个state参数,表明RTT延时时间。可以用于实时的网路传输监听。由于该方法需要在publish之后使用,在实际业务中,我们可以在登录之后再实时监听客户端对象的getTransportStats方法。见demo10
getLocalAudioStats用于获取当前已发布本地流的音频统计数据,该方法也是需要再publish之后调用,因此也可以再登录之后使用。
tream 音视频流,一个 Stream 中最多只能同时包含一个音频 track 和一个视频 track。这里主要介绍三个属性,setAudioOutput用于获取输出声音设备,是一个异步函数,设备标志需要通过getSpeakers获取。
setAudioVolume用于设置播放的音量大小,音量大小再0~1之间取值。
getAudioLevel用于获取当前音量大小,只有当本地流或远端流中有音频数据时才有效。音量大小为number类型,通常认为值大于0.1为用户在说话。
getVideoFrame用于当前视频的帧,该方法需要在play方法后调用,并且stream中有视频流。其返回的类型时dataURL类型。
为了减少重复性的内容,这里只讲了之前demo中没有出现的属性方法,出现了的则已经在前面已经叙述过了。另外,stream对象属性通常需要带上“_”,因此获取属性的时候需要注意。在写demo时可以时常对其进行一个打印,方便后期的查看。
remoteStream和localStream方法属性一样,只是它操作的位置是在监听事件的时候进行相应。
注:更多内容请关注https://cloud.tencent.com/document/product/647/17249
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。