Skip to content
This repository has been archived by the owner on Oct 14, 2022. It is now read-only.

Commit

Permalink
v0.1.9
Browse files Browse the repository at this point in the history
  • Loading branch information
disoul committed May 22, 2020
1 parent 4868918 commit aead337
Show file tree
Hide file tree
Showing 17 changed files with 182 additions and 183 deletions.
22 changes: 11 additions & 11 deletions Docs/cn/call_quality.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ sidebar_label: 通话中质量监测
---

## 功能描述
Agora Web SDK 支持获取以下统计数据来检测通话质量:
Agora Web SDK NG 支持获取以下统计数据来检测通话质量:
- 当前会话的统计数据
- 本地发布轨道的统计数据
- 远端订阅轨道的统计数据
- 本地轨道的统计数据
- 远端轨道的统计数据
- 本地用户的上下行网络质量相关的统计数据
- 频道内的异常事件

Expand All @@ -19,20 +19,20 @@ Agora Web SDK 支持获取以下统计数据来检测通话质量:
### 获取当前会话的统计数据
调用 [AgoraRTCClient.getRTCStats](/api/cn/interfaces/iagorartcclient.html#getrtcstats) 方法获取与当前会话相关的统计数据。数据说明详见 [AgoraRTCStats](/api/cn/interfaces/agorartcstats.html)

示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象。
以下示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象。
```js
const stats = client.getRTCStats();
```

### 获取本地发布音视频的统计数据
### 获取本地音视频轨道的统计数据
调用 [LocalAudioTrack.getStats](/api/cn/interfaces/ilocalaudiotrack.html#getstats)[LocalVideoTrack.getStats](/api/cn/interfaces/ilocalvideotrack.html#getstats) 方法获取本地发布的音频轨道和视频轨道的统计数据,数据说明详见 [LocalAudioTrackStats](/api/cn/interfaces/localaudiotrackstats.html)[LocalVideoTrackStats](/api/cn/interfaces/localvideotrackstats.html)

```js
const audioTrackStats = localAudioTrack.getStats();
const videoTrackStats = localVideoTrack.getStats();
```

### 获取远端订阅流的统计数据
### 获取远端音视频轨道的统计数据
调用 [RemoteAudioTrack.getStats](/api/cn/interfaces/iremoteaudiotrack.html#getstats)[RemoteVideoTrack.getStats](/api/cn/interfaces/iremotevideotrack.html#getstats) 方法获取订阅的远端音频轨道和视频轨道的统计数据,数据说明详见 [RemoteAudioTrackStats](/api/cn/interfaces/remoteaudiotrackstats.html)[RemoteVideoTrackStats](/api/cn/interfaces/remotevideotrackstats.html)

```js
Expand All @@ -41,7 +41,7 @@ const videoTrackStats = remoteVideoTrack.getStats();
```

### 获取本地用户的上下行网络质量相关的统计数据
Agora Web SDK NG 通过 `AgoraRTCClient.on` 中的 [`network-quality`](/api/cn/interfaces/iagorartcclient.html#event_network_quality) 回调向 App 报告本地用户的上下行网络质量。该回调每 2 秒触发,返回的参数包括:
本地用户加入频道后,SDK 通过 `AgoraRTCClient.on` 中的 [`network-quality`](/api/cn/interfaces/iagorartcclient.html#event_network_quality) 回调向 app 报告本地用户的上下行网络质量。该回调每 2 秒触发,返回的参数包括:
- `downlinkNetworkQuality`:下行网络质量打分。
- `uplinkNetworkQuality`:上行网络质量打分。

Expand All @@ -57,7 +57,7 @@ Agora Web SDK NG 通过 `AgoraRTCClient.on` 中的 [`network-quality`](/api/cn/i
| 5 | 网络质量非常差,基本不能沟通。 |
| 6 | 完全无法沟通。 |

示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象。
以下示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象。

``` javascript
client.on("network-quality", (stats) => {
Expand All @@ -72,16 +72,16 @@ Agora Web SDK NG 通过 `AgoraRTCClient.on` 中的 [`exception`](/api/cn/interfa
- `msg`:提示消息。
- `uid`:发生异常或恢复的用户 UID。

示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象
以下示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象
``` javascript
client.on("exception", function(evt) {
console.log(evt.code, evt.msg, evt.uid);
})
```

每一个异常事件都有对应的恢复事件,详见下表:
每个异常事件都有对应的恢复事件,详见下表:

![](https://web-cdn.agora.io/docs-files/1547180167044)
![](assets/exception-event.png)

## 开发注意事项

Expand Down
18 changes: 8 additions & 10 deletions Docs/cn/channel_encryption.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,29 @@ sidebar_label: 媒体流加密

## 功能描述

如果你需要启用加密功能,Agora 提供加密方案与设置加密密码方法。

> - 通信和直播场景均支持媒体流加密功能。但是在直播场景下,如果你需要使用旁路推流、录制和储存,请勿使用媒体流加密功能。
> - 若需使用媒体流加密功能,需确保接收端和发送端都使用此功能,否则会出现未定义行为,例如音频无声或视频黑屏。
Agora 支持频道加密。

下图描述了启用内置加密方案的声网音视频通信方案:
![](https://web-cdn.agora.io/docs-files/cn/agora-encryption.png)

![](assets/agora-encryption.png)

> - 通信和直播场景均支持媒体流加密功能。但是在直播场景下,如果你需要使用旁路推流、录制和储存,请勿使用媒体流加密功能。
> - 若需使用媒体流加密功能,需确保接收端和发送端都使用此功能,否则会出现未定义行为,例如音频无声或视频黑屏。
## 实现方法

在开始前,请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频通话](basic_call.md)

`client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象
以下示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象

```js
// 设置加密方案
// `encryptionMode `在 "aes-128-xts","aes-256-xts" 和 "aes-128-ecb" 中选择一种方案
// `password` 为加密密码
// 设置加密方案 `encryptionMode `为 "aes-128-xts","aes-256-xts" 或 "aes-128-ecb"。
// `password` 为加密密码。
client.setEncryptionConfig(encryptionMode, password);
```

### API 参考
- [AgoraRTCClient.setEncryptionConfig](/api/cn/interfaces/iagorartcclient.html#setencryptionconfig)

## 开发注意事项

请确保在调用 `AgoraRTCClient.join` 加入频道之前设置加密。
14 changes: 7 additions & 7 deletions Docs/cn/media_relay.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebar_label: 跨直播间连麦

## 功能描述

跨直播间连麦,指主播的媒体流可以同时转发进多个直播频道,实现主播跨频道与其他主播实时互动的场景。其中:
跨直播间连麦,指 SDK 将源频道内主播的媒体流同时转发进多个目标频道,实现主播跨频道与其他主播进行实时互动的场景。其中:

- 频道中的所有主播可以看见彼此,并听到彼此的声音。
- 频道中的观众可以看到所有主播,并听到主播的声音。
Expand All @@ -29,15 +29,15 @@ Agora Web SDK NG 提供如下跨频道媒体流转发接口,支持将源频道
> - `startChannelMediaRelay` 方法必须在调用 `AgoraRTCClient.publish` 发布之后调用。
> - `updateChannelMediaRelay` 方法必须在 `startChannelMediaRelay` 后调用。
在跨频道媒体流转发过程中,SDK 会通过 [`AgoraRTCClient.on("channel-media-relay-state")`](/api/cn/interfaces/iagorartcclient.html#event_channel_media_relay_state) 回调报告媒体流转发的状态码 `state`和错误码 `code`, 通过 [`AgoraRTCClient.on("channel-media-relay-event")`](/api/cn/interfaces/iagorartcclient.html#event_channel_media_relay_event) 回调报告媒体流转发的事件码。
在跨频道媒体流转发过程中,SDK 会通过 [`AgoraRTCClient.on("channel-media-relay-state")`](/api/cn/interfaces/iagorartcclient.html#event_channel_media_relay_state) 回调报告媒体流转发的状态码 `state` 和错误码 `code`, 通过 [`AgoraRTCClient.on("channel-media-relay-event")`](/api/cn/interfaces/iagorartcclient.html#event_channel_media_relay_event) 回调报告媒体流转发的事件码。

> 注意:
> - 一个频道内可以有多个主播转发媒体流。哪个主播调用 `startChannelMediaRelay` 方法,SDK 就转发哪个主播的流。
> - 调用 `startChannelMediaRelay``updateChannelMediaRelay` 成功跨频道连麦后,目标频道的用户会收到 `AgoraRTCClient.on("user-published")` 回调。
> - 跨频道连麦中,如果目标频道的主播掉线或离开频道,源频道的主播会收到 `AgoraRTCClient.on("user-left")` 回调。
### 示例代码
`client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象。
以下示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象。

**配置跨频道媒体流转发**

Expand All @@ -49,7 +49,7 @@ channelMediaConfig.setSrcChannelInfo({
uid: 0,
token: "yourSrcToken",
})
// 设置目标频道信息,可多次调用,最多设置 4 个目标频道
// 设置目标频道信息,可多次调用,最多设置 4 个目标频道
channelMediaConfig.addDestChannelInfo({
channelName: "destChannel1",
uid: 123,
Expand All @@ -70,9 +70,9 @@ client.startChannelMediaRelay(channelMediaConfig).then(() => {
**更新媒体流转发频道**

```js
// 删除一个目标频道
// 删除一个目标频道
channelMediaConfig.removeDestChannelInfo("destChannel1")
// 更新跨频道媒体流转发设置
// 更新跨频道媒体流转发设置
client.updateChannelMediaRelay(channelMediaConfig).then(() => {
console.log("updateChannelMediaRelay success");
}).catch(e => {
Expand All @@ -97,5 +97,5 @@ client.stopChannelMediaRelay().then(() => {
## 开发注意事项
- 该功能最多支持将媒体流转发至 4 个目标频道。转发过程中,如果想添加或删除目标频道,可以调用 `updateChannelMediaRelay` 方法。
- 该功能不支持 String 型用户名。
- 在设置源频道信息(`setSrcChannelInfo`)时,请确保 `uid` 设置与当前主播的 UID 不同。我们建议将这里的 `uid` 设置为 0,由服务器随机分配。
- 在设置源频道信息(`setSrcChannelInfo`)时,请确保 `uid` 设置与当前主播的 UID 不同。我们建议将这里的 `uid` 设置为 `0`,由服务器随机分配。
- 在成功调用 `startChannelMediaRelay` 方法后,如果想再次调用该方法,必须先调用 `stopChannelMediaRelay` 方法退出当前的转发状态。
4 changes: 2 additions & 2 deletions Docs/cn/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ const client: IAgoraRTCClient = AgoraRTC.createClient({ mode: "live", codec: "vp
该方法无需下载安装包。在项目 html 文件中,添加如下代码:

```html
<script src="https://download.agora.io/sdk/web/AgoraRTC_N-0.1.8.js"></script>
<script src="https://download.agora.io/sdk/web/AgoraRTC_N-0.1.9.js"></script>
```

### 方法 3. 手动下载 SDK
Expand All @@ -55,7 +55,7 @@ const client: IAgoraRTCClient = AgoraRTC.createClient({ mode: "live", codec: "vp
3. 在项目文件中,将如下代码添加到 html 中:

```html
<script src="./AgoraRTC_N-0.1.8.js"></script>
<script src="./AgoraRTC_N-0.1.9.js"></script>
```

> - 在方法 2 和方法 3 中,SDK 都会在全局导出一个 `AgoraRTC` 对象,直接访问这个对象即可操作 SDK。
Expand Down
30 changes: 15 additions & 15 deletions Docs/cn/stream_fallback.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,28 @@ sidebar_label: 视频流回退

## 功能描述

网络不理想的环境下,直播音视频的质量都会下降。Agora Web SDK NG 提供接口启动视频流回退,在网络条件差、无法同时保证音视频质量的情况下,SDK 会自动将视频流从大流切换为小流,或将媒体流回退为音频流,从而确保音频质量。
网络不理想的环境下,音视频的质量都会下降。Agora 支持视频流回退,在网络条件差、无法同时保证音视频质量的情况下,SDK 会自动将视频流从大流切换为小流,或将媒体流回退为音频流,从而确保音频质量。

## 实现方法

在开始前,请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频通话](basic_call.md)

参考如下步骤,在你的项目中实现视频流回退功能:
1. 在发布之前,主播调用 `AgoraRTCClient.enableDualStream` 方法开启[双流模式](https://docs.agora.io/cn/Agora%20Platform/terms?platform=All%20Platforms#dual)
2. 频道内用户调用 `AgoraRTCClient.setStreamFallbackOption` 方法设置弱网环境下接收媒体流的回退选项。
1. 在发布之前,发送端调用 `AgoraRTCClient.enableDualStream` 方法开启[双流模式](https://docs.agora.io/cn/Agora%20Platform/terms?platform=All%20Platforms#dual-stream)
2. 接收端调用 `AgoraRTCClient.setStreamFallbackOption` 方法设置弱网环境下接收媒体流的回退选项。
- `fallbackType` 设为 `1`,则下行网络较弱时,只接收主播的视频小流。
- `fallbackType` 设为 `2`,则下行网络较弱时,先尝试只接收主播的视频小流。如果网络环境无法显示视频,则只接收主播的音频流。
3. (可选)频道内用户调用 `setRemoteVideoStreamType` 方法,并设置 `streamType (1)` 让接收端只接收视频小流。

用户接收到的流从媒体流切换到音频流,或从音频流切换到媒体流时,SDK 会触发 `AgoraRTCClient.on("stream-fallback")` 回调,该用户可以了解当前接收流的状态。当接收到的流从大流切换到小流,或从小流切换到大流时,SDK 会触发 `AgoraRTCClient.on("stream-type-changed")` 回调,该用户可以了解当前接收到的视频流类型。
此外,发送端启用双流模式后,接收端可以调用 `setRemoteVideoStreamType` 方法,并设置 `streamType``1`,只接收视频小流。

用户接收到的流从音视频流切换到纯音频流,或从纯音频流切换到音视频流时,SDK 会触发 `AgoraRTCClient.on("stream-fallback")` 回调,帮助该用户了解当前接收流的状态。当接收到的流从大流切换到小流,或从小流切换到大流时,SDK 会触发 `AgoraRTCClient.on("stream-type-changed")` 回调,帮助该用户了解当前接收到的视频流类型。

### 示例代码

示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象,`remoteStream` 是指通过 `stream-added` 事件获取的远端音视频流对象。
以下示例代码中的 `client` 是指通过 `AgoraRTC.createClient` 创建的本地客户端对象,`remoteStream` 是指通过 `stream-added` 事件获取的远端音视频流对象。

```js
// 开启视频双流模式
// 开启双流模式
client.enableDualStream().then(() => {
console.log("Enable dual stream success!")
}).catch(err => {
Expand All @@ -46,14 +47,13 @@ client.setRemoteVideoStreamType(remoteStream, 1);
- [AgoraRTCClient.setRemoteVideoStreamType](/api/cn/interfaces/iagorartcclient.html#setremotevideostreamtype)

## 开发注意事项

- `enableDualStream` 方法对以下场景无效:
- 使用自采集属性(`audioSource``videoSource`)创建的流
- 纯音频通话
- iOS 上的 Safari 浏览器
- 共享屏幕的场景
- 通过 `createCustomVideoTrack` 创建的视频轨道。
- 纯音频通话
- iOS 上的 Safari 浏览器
- 共享屏幕场景。

- 调用 `setRemoteVideoStreamType` 方法时,某些浏览器对双流模式不完全适配。目前发现的适配问题有:
- macOS Safari:大小流帧率、分辨率一致
- Firefox:小流帧率固定为 30 fps
- iOS Safari:Safari 11 当前不支持大小流切换
- macOS Safari:大小流帧率、分辨率一致
- iOS Safari:Safari 11 当前不支持大小流切换。
- Firefox:小流帧率固定为 30 fps。
6 changes: 3 additions & 3 deletions Docs/cn/video_profile.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ sidebar_label: 设置视频编码属性
---

## 功能描述
你可以根据用户的设备、浏览器、网络状况和实际应用场景设置视频属性,调整视频的清晰度和流畅度,从而获得较高的用户体验。
你可以根据终端用户的设备、浏览器、网络状况和实际应用场景设置视频属性,调整视频的清晰度和流畅度,从而获得较高的用户体验。

## 实现方法
在开始前,请确保已在你的项目中实现基本的实时音视频功能。详见[实现音视频通话](basic_call.md)

Agora Web SDK NG 提供两种方式设置视频属性:
- 在调用以下两个方法创建视频轨道时,通过修改这些方法中的 `encoderConfig` 参数设置视频编码属性:
- [AgoraRTC.createCameraVideoTrack](/api/cn/interfaces/iagorartc.html#createcameravideotrack) 创建摄像头视频轨道
- [AgoraRTC.createScreenVideoTrack](/api/cn/interfaces/iagorartc.html#createScreenVideoTrack) 创建屏幕共享视频轨道
- [AgoraRTC.createCameraVideoTrack](/api/cn/interfaces/iagorartc.html#createcameravideotrack) 创建摄像头视频轨道
- [AgoraRTC.createScreenVideoTrack](/api/cn/interfaces/iagorartc.html#createScreenVideoTrack) 创建屏幕共享视频轨道
> 调用 [AgoraRTC.createCustomVideoTrack](/api/cn/interfaces/iagorartc.html#createCustomVideoTrack) 创建自定义视频轨道时,只能设置发送码率,无法设置其他编码属性。
- 对于摄像头视频轨道,可以调用 [CameraVideoTrack.setEncoderConfiguration](/api/cn/interfaces/icameravideotrack.html#setencoderconfiguration) 动态调整视频属性。在已发布状态也可以调用。

Expand Down
Binary file modified Docs/en/assets/agora-encryption-en.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/en/assets/agora-encryption.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/en/assets/exception-event.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit aead337

Please sign in to comment.