ソースを参照

更新版本到 2.0.0-alpha.1

ChangeLog
1. createStream 方法允许用户传入自定义 ID
2. 新增 sourceAudioMuted 和 sourceVideoMuted 用于标识订阅流源端的 mute 状态
3. 补全API文档
kevin.song 5 年 前
コミット
01b2d8048d

+ 1 - 1
Manual.md

@@ -111,7 +111,7 @@ client.unsubscribe(remoteStream).catch((err) => { // 此方法仅处理本端主
 });
 ```
 
-## 5. 退出房间
+## 6. 退出房间
 
 ```js
 client.leave().then(() => {

+ 132 - 1
README.md

@@ -5,12 +5,143 @@
 主要分两种项目类型:
 
 1. 直接通过 html 文件中使用 script 标签导入第三库的项目
+
+  ```html
+  <script type="text/javascript" src="index.js"></script>
+  ```
+
 2. 使用打包工具导入第三方库的项目
 
+  ```shell
+  npm install --save @urtc/sdk-web
+  ```
+
 针对上面两种项目的具体安装方法,可参考 **[使用说明](./Manual.md)**,并了解使用此 SDK 的简单步骤。
  
 ## API
 
 以下仅展示**基本的 API 说明**,更详细的 API 及类型说明,请参见 **[Docs](https://ucloud.github.io/urtc-sdk-web)**。
 
-todo
+### URTC 主要的类或接口
+* [Client](#client) - URTC 客户端,可进行加入、离开房间,发布、订阅流等操作
+* [Stream](#stream) - 本地流与远端流的父类
+* [LocalStream](#localstream) - 本地流,可用于本地预览,也可用 client 进行发布
+* [RemoteStream](#remtoestream) - 远端流,房间内其他用户发布的流,可通过 client 进行订阅
+* [User](#user) - 用户信息
+* [RtcError](https://ucloud.github.io/urtc-sdk-web/classes/rtcerror.html) - URTC 错误信息
+* RtcEvent - URTC 事件,主要有以下几类
+  *  [RtcUserEvent](https://ucloud.github.io/urtc-sdk-web/index.html#rtcuserevent)
+  *  [RtcStreamEvent](https://ucloud.github.io/urtc-sdk-web/index.html#rtcstreamevent)
+  *  [RtcConnectionEvent](https://ucloud.github.io/urtc-sdk-web/index.html#rtcconnectionevent)
+
+### URTC 全局属性或方法
+* [version](https://ucloud.github.io/urtc-sdk-web/index.html#version) - 当前 sdk 的版本号
+* [createClient](https://ucloud.github.io/urtc-sdk-web/index.html#createclient) - 创建客户端
+* [createStream](https://ucloud.github.io/urtc-sdk-web/index.html#createclient) - 创建本地流
+* [deviceDetection](https://ucloud.github.io/urtc-sdk-web/index.html#devicedetection) - 设备可用性检测,创建包含麦克风音频或摄像头视频的本地流时,有可能因为麦克风或摄像头设备问题(如驱动问题,或未经授权等),导致无法正确创建。此方法可用于设备检测,根据检测结果,再决定创建本地流时启用麦克风或摄像头或麦克风和摄像头
+* [generateToken](https://ucloud.github.io/urtc-sdk-web/index.html#generatetoken) - 根据 AppId,AppKey,RoomId,UserId 生成 token,用于开发阶段临时快速的加入房间并验证功能,由于 AppKey 不可暴露于公网,因此生产环境中不建议使用此方法生成 token
+* [getCameras](https://ucloud.github.io/urtc-sdk-web/index.html#getcameras) - 获取摄像头设备列表
+* [getDevices](https://ucloud.github.io/urtc-sdk-web/index.html#getdevices) - 获取音视频输入/输出设备列表
+* [getLoudspeakers](https://ucloud.github.io/urtc-sdk-web/index.html#getloudspeakers) - 获取扬声器设备列表
+* [getMicrophones](https://ucloud.github.io/urtc-sdk-web/index.html#getmicrophones) - 获取麦克风设备列表
+* [isSupportScreenShare](https://ucloud.github.io/urtc-sdk-web/index.html#issupportscreenshare) - 检测浏览器是否支持屏幕共享
+* [isSupportWebRTC](https://ucloud.github.io/urtc-sdk-web/index.html#issupportwebrtc) - 检测浏览器是否完全(可访问本地音视频设备)支持 WebRTC
+* [reportLog](https://ucloud.github.io/urtc-sdk-web/index.html#reportlog) - 开启/关闭操作/错误/状态日志的上报
+* [setLogLevel](https://ucloud.github.io/urtc-sdk-web/index.html#setloglevel) - 设置日志打印级别,用于打印出更多日志来调试或定位问题
+* [setServers](https://ucloud.github.io/urtc-sdk-web/index.html#setservers) - 用于私有化部署时,指定部署的服务器地址
+
+<a name="client"></a>
+
+### Client
+
+Client 对象包含以下方法:
+
+* [getLocalStreams](https://ucloud.github.io/urtc-sdk-web/classes/client.html#getlocalstreams) - 获取当前 Client 已发布的本地流
+* [getRemoteStreams](https://ucloud.github.io/urtc-sdk-web/classes/client.html#getremotestreams) - 获取当前 Client 已接收到的远端流(包含已订阅或未订阅的远端流)
+* [getRemoteUsers](https://ucloud.github.io/urtc-sdk-web/classes/client.html#getremoteusers) - 获取远端用户信息
+* [join](https://ucloud.github.io/urtc-sdk-web/classes/client.html#join) - 加入房间
+* [leave](https://ucloud.github.io/urtc-sdk-web/classes/client.html#leave) - 离开房间
+* [off](https://ucloud.github.io/urtc-sdk-web/classes/client.html#off) - 取消监听 Client 对象的事件
+* [on](https://ucloud.github.io/urtc-sdk-web/classes/client.html#on) - 监听 Client 对象的事件,可监听的事件类型有 [RtcConnectionEventType](https://ucloud.github.io/urtc-sdk-web/index.html#rtcconnectioneventtype)、[RtcStreamEventType](https://ucloud.github.io/urtc-sdk-web/index.html#rtcstreameventtype)、[RtcUserEventType](https://ucloud.github.io/urtc-sdk-web/index.html#rtcusereventtype)
+* [publish](https://ucloud.github.io/urtc-sdk-web/classes/client.html#publish) - 发布一条本地流
+* [setRole](https://ucloud.github.io/urtc-sdk-web/classes/client.html#setrole) - 修改用户角色
+* [subscribe](https://ucloud.github.io/urtc-sdk-web/classes/client.html#subscribe) - 订阅一条远端流
+* [unpublish](https://ucloud.github.io/urtc-sdk-web/classes/client.html#unpublish) - 取消发布一条本地流
+* [unsubscribe](https://ucloud.github.io/urtc-sdk-web/classes/client.html#unsubscribe) - 取消订阅一条远端流
+
+<a name="stream"></a>
+
+### Stream
+
+Stream 为 LocalStream 及 RemoteStream 的父类,其提供 use 方法,用于加载流插件,流插件请查看 - todo
+
+<a name="localstream"></a>
+
+### LocalStream
+
+LocalStream 对象包含以下属性:
+
+* [audioMuted](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#audiomuted) - 当前流是否 mute 了音频
+* [id](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#id) - 当前流ID
+* [mediaStream](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#mediastream) - 当前流包含的媒体流,关于媒体流,请详见 [MediaStream](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream)
+* [videoMuted](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#videomuted) - 当前流是否 mute 了视频
+
+LocalStream 对象包含以下方法:
+
+* [addTrack](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#addtrack) - 添加一条媒体轨道(音轨或视轨)到当前流
+* [destroy](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#destroy) - 销毁当前流,一般在本地流不再被使用时,可调用此方法销毁,解除摄像头或麦克风设备的占用
+* [getAudioLevel](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#getaudiolevel) - 获取当前流的音量大小,只有当本地流或远端流中有音频数据才有效
+* [getMediaType](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#getmediatype) - 获取流的媒体类型,主视频流/辅助视频流
+* [getStats](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#getstats) - 获取流发布或订阅后的统计数据
+* [hasAudio](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#hasaudio) - 判断当前流是否有音频
+* [hasVideo](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#hasvideo) - 判断当前流是否有视频
+* [init](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#init) - 初始化本地流对象,将读取麦克风、摄像头、屏幕共享等来初始化媒体流
+* [muteAudio](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#muteaudio) - mute 当前流的音频
+* [muteVideo](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#mutevideo) - mute 当前流的视频
+* [off](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#off) - 取消监听流对象事件
+* [on](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#on) - 监听流对象事件
+* [play](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#play) - 播放当前流
+* [removeTrack](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#removetrack) - 从当前流中删除一条媒体轨道(音轨或视轨)
+* [replaceTrack](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#replacetrack) - 替换当前流中的媒体轨道
+* [resume](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#resume) - 恢复播放流,一般由于浏览器限制无法自动播放时,可提示用户手动触发该方法进行恢复播放
+* [setScreenProfile](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#setscreenprofile) - 设置当前流(屏幕共享时)视频的 Profile,默认 '1080p'
+* [setVideoProfile](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#setvideoprofile) - 设置当前流视频的 Profile,默认 '480p'
+* [stop(https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#stop) - 停止播放当前流
+* [switchDevice](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#switchdevice) - 切换音视频设备
+* [switchImage](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#switchimage) - 切换图片 - 使用图片生成视频,并将当前流的视频使用其代替
+* [unmuteAudio](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#unmuteaudio) - unmute 当前流的音频
+* [unmuteVideo](https://ucloud.github.io/urtc-sdk-web/classes/localstream.html#unmutevideo) - unmute 当前流的视频
+
+<a name="remotestream"></a>
+
+### RemoteStream
+
+RemoteStream 对象包含以下属性:
+
+* [audioMuted](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#audiomuted) - 当前流是否 mute 了音频
+* [id](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#id) - 当前流ID
+* [mediaStream](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#mediastream) - 当前流包含的媒体流,关于媒体流,请详见 [MediaStream](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream)
+* [sourceAudioMuted](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#sourceaudiomuted) - 音频源是否已 mute,当源端 mute/unmute 音频时,本端将收到 mute-audio 或 unmute-audio 事件的通知,同时此值将变为对应值
+* [sourceVideoMuted](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#sourcevideomuted) - 视频源是否已 mute,当源端 mute/unmute 视频时,本端将收到 mute-video 或 unmute-video 事件的通知,同时此值将变为对应值
+* [userId](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#userid) - 该流所属用户的ID
+* [videoMuted](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#videomuted) - 当前流是否 mute 了视频
+
+RemoteStream 对象包含以下方法:
+
+* [getAudioLevel](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#getaudiolevel) - 获取当前流的音量大小,只有当本地流或远端流中有音频数据才有效
+* [getMediaType](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#getmediatype) - 获取流的媒体类型
+* [getStats](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#getstats) - 获取流发布或订阅后的统计数据
+* [hasAudio](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#hasaudio) - 判断当前流是否有音频
+* [hasVideo](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#hasvideo) - 判断当前流是否有视频
+* [muteAudio](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#muteaudio) - mute 当前流的音频
+* [muteVideo](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#mutevideo) - mute 当前流的视频
+* [play](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#play) - 播放当前流
+* [resume](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#resume) - 恢复播放流,一般由于浏览器限制无法自动播放时,可提示用户手动触发该方法进行恢复播放
+* [setAudioVolume](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#setaudiovolume) - 设置输出音量,默认为 100
+* [stop](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#stop) - 停止播放当前流
+* [unmuteAudio](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#unmuteaudio) - unmute 当前流的音频
+* [unmuteVideo](https://ucloud.github.io/urtc-sdk-web/classes/remotestream.html#unmutevideo) - unmute 当前流的视频
+
+### User
+
+* [id](https://ucloud.github.io/urtc-sdk-web/classes/user.html#id) - 用户ID

+ 2 - 2
docs/classes/client.html

@@ -283,7 +283,7 @@ client
 							</aside>
 							<div class="tsd-comment tsd-typography">
 								<div class="lead">
-									<p>取消监听 Client 对象事件</p>
+									<p>取消监听 Client 对象事件</p>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
@@ -335,7 +335,7 @@ client
 							</aside>
 							<div class="tsd-comment tsd-typography">
 								<div class="lead">
-									<p>监听 Client 对象事件</p>
+									<p>监听 Client 对象事件</p>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>

+ 21 - 13
docs/classes/localstream.html

@@ -399,7 +399,7 @@
 							</aside>
 							<div class="tsd-comment tsd-typography">
 								<div class="lead">
-									<p>初始化本地音视频流对象</p>
+									<p>初始化本地流对象,将读取麦克风、摄像头、屏幕共享等来初始化媒体流</p>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
@@ -434,17 +434,19 @@ stream
 								<div class="lead">
 									<p>mute 当前流的音频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>mute-audio</code> 的事件通知,流的 audioMuted 状态也将改变</li>
-										<li>远端流调用此方法时,仅为不从服务器拉取音频数据,并无事件通知用户,且不改变流的 audioMuted 状态</li>
+										<li>本地流调用此方法时,将不向服务器推送音频数据,远端用户将收到 <code>mute-audio</code> 的事件通知</li>
+										<li>远端流调用此方法时,仅为不从服务器拉取音频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteAudio();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteAudio();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;audio is muted <span class="hljs-subst">${stream.audioMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -463,17 +465,19 @@ stream
 								<div class="lead">
 									<p>mute 当前流的视频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>mute-video</code> 的事件通知,流的 videoMuted 状态也将改变</li>
-										<li>远端流调用此方法时,仅为不从服务器拉取视频数据,并无事件通知用户,且不改变流的 videoMuted 状态</li>
+										<li>本地流调用此方法时,将不向服务器推送视频数据,远端用户将收到 <code>mute-video</code> 的事件通知</li>
+										<li>远端流调用此方法时,仅为不从服务器拉取视频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteVideo();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteVideo();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;s video is muted <span class="hljs-subst">${stream.videoMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -913,17 +917,19 @@ stream.switchImage(imgAddr)
 								<div class="lead">
 									<p>unmute 当前流的音频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>unmute-audio</code> 的事件通知,流的 audioMuted 状态也将改变</li>
-										<li>远端流调用此方法时,会从服务器拉取音频数据,并无事件通知用户,且不改变流的 audioMuted 状态</li>
+										<li>本地流调用此方法时,将向服务器推送音频数据,远端用户将收到 <code>unmute-audio</code> 的事件通知</li>
+										<li>远端流调用此方法时,会从服务器拉取音频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteAudio();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteAudio();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;s audio is muted <span class="hljs-subst">${stream.audioMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -942,17 +948,19 @@ stream.switchImage(imgAddr)
 								<div class="lead">
 									<p>unmute 当前流的视频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>unmute-video</code> 的事件通知,流的 videoMuted 状态也将改变</li>
-										<li>远端流调用此方法时,会从服务器拉取视频数据,并无事件通知用户,且不改变流的 videoMuted 状态</li>
+										<li>本地流调用此方法时,将向服务器推送视频数据,远端用户将收到 <code>unmute-video</code> 的事件通知</li>
+										<li>远端流调用此方法时,会从服务器拉取视频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteVideo();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteVideo();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;s video is muted <span class="hljs-subst">${stream.videoMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>

+ 55 - 12
docs/classes/remotestream.html

@@ -66,6 +66,9 @@
 		<div class="col-8 col-content">
 			<section class="tsd-panel tsd-comment">
 				<div class="tsd-comment tsd-typography">
+					<div class="lead">
+						<p>远端流,房间内其他用户发布的流,可通过 client 进行订阅</p>
+					</div>
 				</div>
 			</section>
 			<section class="tsd-panel tsd-hierarchy">
@@ -91,6 +94,8 @@
 								<li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-external"><a href="remotestream.html#audiomuted" class="tsd-kind-icon">audio<wbr>Muted</a></li>
 								<li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-external"><a href="remotestream.html#id" class="tsd-kind-icon">id</a></li>
 								<li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-external"><a href="remotestream.html#mediastream" class="tsd-kind-icon">media<wbr>Stream</a></li>
+								<li class="tsd-kind-property tsd-parent-kind-class tsd-is-external"><a href="remotestream.html#sourceaudiomuted" class="tsd-kind-icon">source<wbr>Audio<wbr>Muted</a></li>
+								<li class="tsd-kind-property tsd-parent-kind-class tsd-is-external"><a href="remotestream.html#sourcevideomuted" class="tsd-kind-icon">source<wbr>Video<wbr>Muted</a></li>
 								<li class="tsd-kind-property tsd-parent-kind-class tsd-is-external"><a href="remotestream.html#userid" class="tsd-kind-icon">user<wbr>Id</a></li>
 								<li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-external"><a href="remotestream.html#videomuted" class="tsd-kind-icon">video<wbr>Muted</a></li>
 							</ul>
@@ -162,6 +167,30 @@
 					</div>
 				</section>
 				<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-external">
+					<a name="sourceaudiomuted" class="tsd-anchor"></a>
+					<h3>source<wbr>Audio<wbr>Muted</h3>
+					<div class="tsd-signature tsd-kind-icon">source<wbr>Audio<wbr>Muted<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div>
+					<aside class="tsd-sources">
+					</aside>
+					<div class="tsd-comment tsd-typography">
+						<div class="lead">
+							<p>音频源是否已 mute,当源端 mute/unmute 音频时,本端将收到 <code>mute-audio</code> 或 <code>unmute-audio</code> 事件的通知,同时此值将变为对应值</p>
+						</div>
+					</div>
+				</section>
+				<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-external">
+					<a name="sourcevideomuted" class="tsd-anchor"></a>
+					<h3>source<wbr>Video<wbr>Muted</h3>
+					<div class="tsd-signature tsd-kind-icon">source<wbr>Video<wbr>Muted<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div>
+					<aside class="tsd-sources">
+					</aside>
+					<div class="tsd-comment tsd-typography">
+						<div class="lead">
+							<p>视频源是否已 mute,当源端 mute/unmute 视频时,本端将收到 <code>mute-video</code> 或 <code>unmute-video</code> 事件的通知,同时此值将变为对应值</p>
+						</div>
+					</div>
+				</section>
+				<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-external">
 					<a name="userid" class="tsd-anchor"></a>
 					<h3>user<wbr>Id</h3>
 					<div class="tsd-signature tsd-kind-icon">user<wbr>Id<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
@@ -366,17 +395,19 @@
 								<div class="lead">
 									<p>mute 当前流的音频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>mute-audio</code> 的事件通知,流的 audioMuted 状态也将改变</li>
-										<li>远端流调用此方法时,仅为不从服务器拉取音频数据,并无事件通知用户,且不改变流的 audioMuted 状态</li>
+										<li>本地流调用此方法时,将不向服务器推送音频数据,远端用户将收到 <code>mute-audio</code> 的事件通知</li>
+										<li>远端流调用此方法时,仅为不从服务器拉取音频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteAudio();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteAudio();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;audio is muted <span class="hljs-subst">${stream.audioMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -395,17 +426,19 @@
 								<div class="lead">
 									<p>mute 当前流的视频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>mute-video</code> 的事件通知,流的 videoMuted 状态也将改变</li>
-										<li>远端流调用此方法时,仅为不从服务器拉取视频数据,并无事件通知用户,且不改变流的 videoMuted 状态</li>
+										<li>本地流调用此方法时,将不向服务器推送视频数据,远端用户将收到 <code>mute-video</code> 的事件通知</li>
+										<li>远端流调用此方法时,仅为不从服务器拉取视频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteVideo();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteVideo();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;s video is muted <span class="hljs-subst">${stream.videoMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -644,17 +677,19 @@ stream
 								<div class="lead">
 									<p>unmute 当前流的音频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>unmute-audio</code> 的事件通知,流的 audioMuted 状态也将改变</li>
-										<li>远端流调用此方法时,会从服务器拉取音频数据,并无事件通知用户,且不改变流的 audioMuted 状态</li>
+										<li>本地流调用此方法时,将向服务器推送音频数据,远端用户将收到 <code>unmute-audio</code> 的事件通知</li>
+										<li>远端流调用此方法时,会从服务器拉取音频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteAudio();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteAudio();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;s audio is muted <span class="hljs-subst">${stream.audioMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -673,17 +708,19 @@ stream
 								<div class="lead">
 									<p>unmute 当前流的视频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>unmute-video</code> 的事件通知,流的 videoMuted 状态也将改变</li>
-										<li>远端流调用此方法时,会从服务器拉取视频数据,并无事件通知用户,且不改变流的 videoMuted 状态</li>
+										<li>本地流调用此方法时,将向服务器推送视频数据,远端用户将收到 <code>unmute-video</code> 的事件通知</li>
+										<li>远端流调用此方法时,会从服务器拉取视频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteVideo();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteVideo();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;s video is muted <span class="hljs-subst">${stream.videoMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -743,6 +780,12 @@ stream
 								<a href="remotestream.html#mediastream" class="tsd-kind-icon">media<wbr>Stream</a>
 							</li>
 							<li class=" tsd-kind-property tsd-parent-kind-class tsd-is-external">
+								<a href="remotestream.html#sourceaudiomuted" class="tsd-kind-icon">source<wbr>Audio<wbr>Muted</a>
+							</li>
+							<li class=" tsd-kind-property tsd-parent-kind-class tsd-is-external">
+								<a href="remotestream.html#sourcevideomuted" class="tsd-kind-icon">source<wbr>Video<wbr>Muted</a>
+							</li>
+							<li class=" tsd-kind-property tsd-parent-kind-class tsd-is-external">
 								<a href="remotestream.html#userid" class="tsd-kind-icon">user<wbr>Id</a>
 							</li>
 							<li class=" tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-external">

+ 1 - 1
docs/classes/rtcerror.html

@@ -67,7 +67,7 @@
 			<section class="tsd-panel tsd-comment">
 				<div class="tsd-comment tsd-typography">
 					<div class="lead">
-						<p>RTC 错误 类型</p>
+						<p>URTC 错误信息</p>
 					</div>
 					<p>通用错误及代码</p>
 					<ul>

+ 20 - 12
docs/classes/stream.html

@@ -349,17 +349,19 @@
 								<div class="lead">
 									<p>mute 当前流的音频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>mute-audio</code> 的事件通知,流的 audioMuted 状态也将改变</li>
-										<li>远端流调用此方法时,仅为不从服务器拉取音频数据,并无事件通知用户,且不改变流的 audioMuted 状态</li>
+										<li>本地流调用此方法时,将不向服务器推送音频数据,远端用户将收到 <code>mute-audio</code> 的事件通知</li>
+										<li>远端流调用此方法时,仅为不从服务器拉取音频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteAudio();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteAudio();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;audio is muted <span class="hljs-subst">${stream.audioMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -377,17 +379,19 @@
 								<div class="lead">
 									<p>mute 当前流的视频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>mute-video</code> 的事件通知,流的 videoMuted 状态也将改变</li>
-										<li>远端流调用此方法时,仅为不从服务器拉取视频数据,并无事件通知用户,且不改变流的 videoMuted 状态</li>
+										<li>本地流调用此方法时,将不向服务器推送视频数据,远端用户将收到 <code>mute-video</code> 的事件通知</li>
+										<li>远端流调用此方法时,仅为不从服务器拉取视频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteVideo();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.muteVideo();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;s video is muted <span class="hljs-subst">${stream.videoMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -586,17 +590,19 @@ stream
 								<div class="lead">
 									<p>unmute 当前流的音频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>unmute-audio</code> 的事件通知,流的 audioMuted 状态也将改变</li>
-										<li>远端流调用此方法时,会从服务器拉取音频数据,并无事件通知用户,且不改变流的 audioMuted 状态</li>
+										<li>本地流调用此方法时,将向服务器推送音频数据,远端用户将收到 <code>unmute-audio</code> 的事件通知</li>
+										<li>远端流调用此方法时,会从服务器拉取音频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteAudio();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteAudio();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;s audio is muted <span class="hljs-subst">${stream.audioMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>
@@ -614,17 +620,19 @@ stream
 								<div class="lead">
 									<p>unmute 当前流的视频</p>
 									<ul>
-										<li>本地流调用此方法时,远端用户将收到 <code>unmute-video</code> 的事件通知,流的 videoMuted 状态也将改变</li>
-										<li>远端流调用此方法时,会从服务器拉取视频数据,并无事件通知用户,且不改变流的 videoMuted 状态</li>
+										<li>本地流调用此方法时,将向服务器推送视频数据,远端用户将收到 <code>unmute-video</code> 的事件通知</li>
+										<li>远端流调用此方法时,会从服务器拉取视频数据,并无事件通知远端用户</li>
 									</ul>
 								</div>
 								<dl class="tsd-comment-tags">
 									<dt>example</dt>
-									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteVideo();</code></pre>
+									<dd><pre><code class="language-js"><span class="hljs-keyword">const</span> result = stream.unmuteVideo();
+<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`stream&#x27;s video is muted <span class="hljs-subst">${stream.videoMuted}</span>`</span>);</code></pre>
 									</dd>
 								</dl>
 							</div>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
+							<p>操作是否成功</p>
 						</li>
 					</ul>
 				</section>

+ 1 - 1
docs/classes/user.html

@@ -67,7 +67,7 @@
 			<section class="tsd-panel tsd-comment">
 				<div class="tsd-comment tsd-typography">
 					<div class="lead">
-						<p>用户</p>
+						<p>用户信息</p>
 					</div>
 				</div>
 			</section>

ファイルの差分が大きいため隠しています
+ 12 - 6
docs/index.html


+ 43 - 25
lib/index.d.ts

@@ -26,13 +26,14 @@ declare module '@urtc/sdk-web' {
     */
   export function createClient(appId: string, opts?: ClientOptions): Client;
   /**
-    * 创建并返回本地音视频对象
-    * @param opts - 定义本地音视频流的属性
+    * 创建本地流
+    * @param opts - 必传,定义本地音视频流的属性
     * > 注:
     * > 1. video, screen 不可同时为 true
     * > 2. audio, video, screen 不可同时为 false
     * > 3. 若指定了 file,则 init 时将优先使用 file 来创建初始化本地流的视频
     * > 4. screenAudio 在不同浏览器上表现不同,参见 {@link LocalStreamOptions}
+    * @param id - 选传,指定本地流的 ID,请注意创建多条流时,不可传入重复值
     * @example
     * ```js
     * const localStream = createStream({ audio: true, video: true, screen: false });
@@ -49,9 +50,9 @@ declare module '@urtc/sdk-web' {
     * ```
     * @throws {@link RtcError}
     */
-  export function createStream(opts: LocalStreamOptions): LocalStream;
+  export function createStream(opts: LocalStreamOptions, id?: string): LocalStream;
   /**
-    * 设置日志打印级别
+    * 设置日志打印级别,用于打印出更多日志来调试或定位问题
     * @param level - 日志级别,有 'debug', 'info', 'warn', 'error' 级别;
     * @example
     * ```js
@@ -60,7 +61,7 @@ declare module '@urtc/sdk-web' {
     */
   export function setLogLevel(level: LogLevel): void;
   /**
-    * 上报操作/错误/状态日志,未调用时,默认开启上报日志
+    * 开启/关闭操作/错误/状态日志的上报,未调用时,默认开启上报日志
     * @param enable - 是否开启上报
     * @example
     * ```js
@@ -159,7 +160,7 @@ declare module '__@urtc/sdk-web/client' {
         */
       leave(): Promise<void>;
       /**
-        * 监听 Client 对象事件
+        * 监听 Client 对象事件
         * @param type - 事件类型
         * @param listener - 事件监听函数
         * @example
@@ -177,7 +178,7 @@ declare module '__@urtc/sdk-web/client' {
         */
       on<T extends RtcEventType>(type: T, listener: Listener<T>): void;
       /**
-        * 取消监听 Client 对象事件
+        * 取消监听 Client 对象事件
         * @param type - 事件类型,特别的,可以使用 * 来一次性取消对所有事件的监听
         * @param listener - 事件监听函数
         * @example
@@ -314,7 +315,7 @@ declare module '__@urtc/sdk-web/stream/local-stream' {
     */
   export class LocalStream extends Stream {
       /**
-        * 初始化本地音视频流对象
+        * 初始化本地流对象,将读取麦克风、摄像头、屏幕共享等来初始化媒体流
         * @example
         * ```js
         * const stream = createStream({audio: true, video: true, screen: false});
@@ -744,7 +745,7 @@ declare module '__@urtc/sdk-web/event' {
 declare module '__@urtc/sdk-web/error' {
   export * from '__@urtc/sdk-web/error/codes';
   /**
-    * RTC 错误 类型
+    * URTC 错误信息
     *
     * 通用错误及代码
     * - 1000 - 非法参数
@@ -796,7 +797,7 @@ declare module '__@urtc/sdk-web/error' {
 
 declare module '__@urtc/sdk-web/user/user' {
   /**
-    * 用户
+    * 用户信息
     */
   export class User {
       /**
@@ -964,42 +965,50 @@ declare module '__@urtc/sdk-web/stream/stream' {
       hasVideo(): boolean;
       /**
         * mute 当前流的音频
-        * * 本地流调用此方法时,远端用户将收到 `mute-audio` 的事件通知,流的 audioMuted 状态也将改变
-        * * 远端流调用此方法时,仅为不从服务器拉取音频数据,并无事件通知用户,且不改变流的 audioMuted 状态
+        * * 本地流调用此方法时,将不向服务器推送音频数据,远端用户将收到 `mute-audio` 的事件通知
+        * * 远端流调用此方法时,仅为不从服务器拉取音频数据,并无事件通知远端用户
         * @example
         * ```js
         * const result = stream.muteAudio();
+        * console.log(`stream'audio is muted ${stream.audioMuted}`);
         * ```
+        * @returns 操作是否成功
         */
       muteAudio(): boolean;
       /**
         * unmute 当前流的音频
-        * * 本地流调用此方法时,远端用户将收到 `unmute-audio` 的事件通知,流的 audioMuted 状态也将改变
-        * * 远端流调用此方法时,会从服务器拉取音频数据,并无事件通知用户,且不改变流的 audioMuted 状态
+        * * 本地流调用此方法时,将向服务器推送音频数据,远端用户将收到 `unmute-audio` 的事件通知
+        * * 远端流调用此方法时,会从服务器拉取音频数据,并无事件通知远端用户
         * @example
         * ```js
         * const result = stream.unmuteAudio();
+        * console.log(`stream's audio is muted ${stream.audioMuted}`);
         * ```
+        * @returns 操作是否成功
         */
       unmuteAudio(): boolean;
       /**
         * mute 当前流的视频
-        * * 本地流调用此方法时,远端用户将收到 `mute-video` 的事件通知,流的 videoMuted 状态也将改变
-        * * 远端流调用此方法时,仅为不从服务器拉取视频数据,并无事件通知用户,且不改变流的 videoMuted 状态
+        * * 本地流调用此方法时,将不向服务器推送视频数据,远端用户将收到 `mute-video` 的事件通知
+        * * 远端流调用此方法时,仅为不从服务器拉取视频数据,并无事件通知远端用户
         * @example
         * ```js
         * const result = stream.muteVideo();
+        * console.log(`stream's video is muted ${stream.videoMuted}`);
         * ```
+        * @returns 操作是否成功
         */
       muteVideo(): boolean;
       /**
         * unmute 当前流的视频
-        * * 本地流调用此方法时,远端用户将收到 `unmute-video` 的事件通知,流的 videoMuted 状态也将改变
-        * * 远端流调用此方法时,会从服务器拉取视频数据,并无事件通知用户,且不改变流的 videoMuted 状态
+        * * 本地流调用此方法时,将向服务器推送视频数据,远端用户将收到 `unmute-video` 的事件通知
+        * * 远端流调用此方法时,会从服务器拉取视频数据,并无事件通知远端用户
         * @example
         * ```js
         * const result = stream.unmuteVideo();
+        * console.log(`stream's video is muted ${stream.videoMuted}`);
         * ```
+        * @returns 操作是否成功
         */
       unmuteVideo(): boolean;
       /**
@@ -1078,10 +1087,18 @@ declare module '__@urtc/sdk-web/stream/stream' {
 declare module '__@urtc/sdk-web/stream/remote-stream' {
   import { Stream } from '__@urtc/sdk-web/stream/stream';
   /**
-    * @public
+    * 远端流,房间内其他用户发布的流,可通过 client 进行订阅
     */
   export class RemoteStream extends Stream {
       /**
+        * 音频源是否已 mute,当源端 mute/unmute 音频时,本端将收到 `mute-audio` 或 `unmute-audio` 事件的通知,同时此值将变为对应值
+        */
+      sourceAudioMuted: boolean;
+      /**
+        * 视频源是否已 mute,当源端 mute/unmute 视频时,本端将收到 `mute-video` 或 `unmute-video` 事件的通知,同时此值将变为对应值
+        */
+      sourceVideoMuted: boolean;
+      /**
         * 该流所属用户的ID
         */
       userId: string;
@@ -1144,7 +1161,7 @@ declare module '__@urtc/sdk-web/server' {
 
 declare module '__@urtc/sdk-web/version' {
   /**
-    * 当前 sdk 的版本
+    * 当前 sdk 的版本
     */
   export const version: string;
 }
@@ -1289,13 +1306,14 @@ declare module '__@urtc/sdk-web/' {
     */
   export function createClient(appId: string, opts?: ClientOptions): Client;
   /**
-    * 创建并返回本地音视频对象
-    * @param opts - 定义本地音视频流的属性
+    * 创建本地流
+    * @param opts - 必传,定义本地音视频流的属性
     * > 注:
     * > 1. video, screen 不可同时为 true
     * > 2. audio, video, screen 不可同时为 false
     * > 3. 若指定了 file,则 init 时将优先使用 file 来创建初始化本地流的视频
     * > 4. screenAudio 在不同浏览器上表现不同,参见 {@link LocalStreamOptions}
+    * @param id - 选传,指定本地流的 ID,请注意创建多条流时,不可传入重复值
     * @example
     * ```js
     * const localStream = createStream({ audio: true, video: true, screen: false });
@@ -1312,9 +1330,9 @@ declare module '__@urtc/sdk-web/' {
     * ```
     * @throws {@link RtcError}
     */
-  export function createStream(opts: LocalStreamOptions): LocalStream;
+  export function createStream(opts: LocalStreamOptions, id?: string): LocalStream;
   /**
-    * 设置日志打印级别
+    * 设置日志打印级别,用于打印出更多日志来调试或定位问题
     * @param level - 日志级别,有 'debug', 'info', 'warn', 'error' 级别;
     * @example
     * ```js
@@ -1323,7 +1341,7 @@ declare module '__@urtc/sdk-web/' {
     */
   export function setLogLevel(level: LogLevel): void;
   /**
-    * 上报操作/错误/状态日志,未调用时,默认开启上报日志
+    * 开启/关闭操作/错误/状态日志的上报,未调用时,默认开启上报日志
     * @param enable - 是否开启上报
     * @example
     * ```js

ファイルの差分が大きいため隠しています
+ 5 - 5
lib/index.js


+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "@urtc/sdk-web",
-  "version": "2.0.0-alpha.0",
+  "version": "2.0.0-alpha.1",
   "description": "UCloud RTC javascript SDK",
   "main": "lib/index.js",
   "types": "lib/index.d.ts",