Skip to content

Commit

Permalink
更新版本到 1.8.0
Browse files Browse the repository at this point in the history
ChangeLog
1. 新增 audio-track-ended 事件
2. 新增 AudioProcessingOptions 参数,向业务开放 3A 开启/关闭的控制
3. 新增转推通知的 24160 错误类型
4. 修复华为手机微信浏览器切换麦克风后没声音的问题
5. 修复订阅时流被移除有概率导致流事件异常的问题
6. 修复订阅流重连时,音视频本地 mute 状态丢失的问题
7. 优化断线重连
8. 其他内部优化,如错误日志的上报,错误码等
  • Loading branch information
poplark committed Dec 2, 2021
1 parent 1c2d864 commit 4abde18
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 17 deletions.
23 changes: 18 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ client.on(EventType, Listener)
'stream-added' | 'stream-removed' | 'stream-published' | 'stream-subscribed' |
'mute-video' | 'unmute-video' | 'mute-audio' | 'unmute-audio' | 'screenshare-stopped' |
'connection-state-change' | 'kick-off' | 'network-quality' | 'stream-reconnected' |
'record-notify' | 'relay-notify' | 'volume-indicator' | 'error-notify' | 'player-status-change' | 'first-key-frame' 这些事件可绑定监听函数
'record-notify' | 'relay-notify' | 'volume-indicator' | 'error-notify' | 'player-status-change' | 'first-key-frame' | 'audio-track-ended' 这些事件可绑定监听函数
- Listener: function 类型,事件监听函数

- 当事件类型为 'user-added' | 'user-removed' | 'kick-off' 时,可用 `function Listener(User) {}` 类型的函数,其中函数的参数类型见 [User](#user)
Expand All @@ -356,12 +356,14 @@ client.on(EventType, Listener)
- '24149': (异常)任务被停止,可能的原因有房间内所有用户的推流已停止,或到推流地址(PushURL)的连接已断开
- '24150': (异常)任务开启后10秒,如果收到这个消息,则表示任务开启失败
- '24152': (异常)表示加流失败
- '24160': (异常)CDN收流节点不可达,多次重试后仍失败,任务被终止
- 当事件类型为 'volume-indicator' 时(通过 [enableAudioVolumeIndicator](#client-enableaudiovolumeindicator) 方法开启),可用 `function Listener(VolumeIndication[]) {}` 类型的函数,函数参数为 VolumeIndication 类型的数组(已按 volume 的值进行了降序排序,第一个为音量最大的),VolumeIndication 为 `{ sid: string, uid: string, mediaType: string, volume: number }`,其中 mediaType 为 'camera' 或 'screen' 两种之一,volume 为 0 - 100 的值,通常在列表中音量大于 5 的用户为持续说话的人。
- 当事件类型为 'error-notify' 时,可用 `function Listener(ErrorNotification) {}` 类型的函数,函数的参数为 ErrorNotification `{ code: string, message: string }`,code 有以下可能的值:
- '24147': 10秒内连续操作 mute/unmute audio 或 video 次数超过了150次的次数限制,服务器拒绝执行(一般不会达到次数限制,可忽略此事件)
- '3024': 发布(推流)/订阅(拉流)时,若 ICE 建连失败,则会触发该事件,导致 ICE 建连失败的主要原因是客户端的 UDP 端口异常(可能是用户电脑防火墙或路由器防火墙端口限制)引起,具体端口参考[端口白名单](https://docs.ucloud.cn/urtc/faq/firewall),可根据此事件提示用户切换网络或检查网络防火墙设置
- 当事件类型为 'player-status-change' 时,可用 `function Listener(PlayerStatusEvent) {}` 类型的函数,函数的参数为PlayerStatusEvent `{ type: string, status: string, stream: Stream }`,其中 type 的值为 'audio' | 'video',status 的值为 'playing' | 'paused',stream 为流信息,参见 [Stream](#stream)
- 当事件类型为 'first-key-frame' 时,可用 `function Listener(Stream) {}` 类型的函数,其中函数的参数类型见 [Stream](#stream)
- 当事件类型为 'audio-track-ended' 时,可用 `function Listener(Stream) {}` 类型的函数,其中函数的参数类型见 [Stream](#stream)


#### 事件名解释:
Expand Down Expand Up @@ -389,6 +391,7 @@ volume-indicator | 当通过 enableAudioVolumeIndicator 方法开启了远端流
error-notify | 当房间内有错误时,将通过此方法进行通知
player-status-change | 当流的音视频播放状态变化时,将通过此方法进行通知。注:频繁的 DOM 操作可能会导致播放器被浏览器暂停。为了避免这种情况,需要侦听该事件,并尝试调用 resume 方法恢复播放该流
first-key-frame | 播放流时,完成第一帧视频解码后会触发此事件
audio-track-ended | 本地流的音频被挂起/终止,可能无法恢复,一般需要重新推流,可根据此事件提示用户进行相关操作

<a name="client-off"></a>

Expand Down Expand Up @@ -2237,6 +2240,16 @@ client.createStream(CreateStreamOptions, callback)
filePath?: string // 选填,发布时指定使用网络图片生成视频源。具体参数说明可参考 publish 方法 PublishOptions 的对应项
streamId?: string // 选填,指定该本地流的预览 ID(后续可通过该 ID 将其直接发布),该 ID 可由用户自定义,非重复、非空的字符串即可,不传时,将使用随机生成值
userId?: string // 选填,joinRoom 之前创建的流将使用此值(或 'unknown' - 未填此字段时)指定为流的 uid,joinRoom 之后,将忽略此值,直接使用加入房间时指定的 userId 为流的 uid
audioProcessing?: AudioProcessingOptions, // 选填,可开启或关闭 3A,默认开启 3A,见下面详细说明
}
```

- AudioProcessingOptions 音频处理参数
```js
{
AEC?: boolean; // 声学回声消除,默认为 true,即开启。可将 AEC 设为 false 来关闭声学回声消除。
AGC?: boolean; // 自动增益控制,默认为 true,即开启。可将 AGC 设为 false 来关闭自动增益控制。
ANS?: boolean; // 自动噪声抑制,默认为 true,即开启。可将 ANS 设为 false 来关闭自动噪声抑制。
}
```

Expand All @@ -2252,7 +2265,7 @@ Stream 为返回值,[Stream 类型](#stream),执行失败时,此值为空
> 注:
> 1. [PublishOptions](#publishoptions)
> 2. 传入的 streamId 不可重复
> 3. 创建成功后,流的 sid 将和 streamId 相同,可使用 play 方法传入该值进行播放
> 3. 创建成功后,流的 sid 与 previewId 将和传入的 streamId 的值相同,可使用 play 方法传入该值进行播放

<a name="client-publishstream"></a>
Expand Down Expand Up @@ -2281,7 +2294,7 @@ Stream 为返回值,[Stream 类型](#stream),执行失败时,此值为空
> 注:
> 1. 发布的流必须为使用通过 createStream 方法创建并为非发布状态的本地流。
> 2. 当该本地(预览)流被发布成功后,流的数据将更新,特别的,sid 将被替换为服务器创建的流 ID,previewId 仍保持创建时传入的值。
> 3. 若发布前该流已经被播放(通过调用 play 方法进行播放),发布成功后将被自动停止,请使用更新后的流的数据进行重新播放
> 3. 若发布前该流已经被播放(通过调用 play 方法进行播放),发布成功后请使用更新后的流进行重新播放

<a name="client-unpublishstream"></a>
Expand All @@ -2308,9 +2321,9 @@ Error 为返回值,为空时,说明已执行成功,否则执行失败,
Stream 为返回值,[Stream 类型](#stream),执行失败时,此值为空,执行成功时,此值为执行结果

> 注:
> 1. 取消发布的流必须为使用通过 createStream 方法创建并为发布状态的本地流。
> 1. 取消发布的流请使用通过 createStream 方法创建并为发布状态的本地流。
> 2. 通过 publish 方法直接发布时生成的本地流,请使用 unpublish 方法进行取消发布。
> 3. 若之前该流已经被播放(通过调用 play 方法进行播放),取消发布后将被自动停止,请使用更新后的流的数据进行重新播放
> 3. 若之前该流已经被播放(通过调用 play 方法进行播放),取消发布后请使用更新后的流进行重新播放

<a name="client-destroystream"></a>
Expand Down
18 changes: 12 additions & 6 deletions lib/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ declare module '__urtc-sdk/logger' {
onLog({}: {}): void;
onWarn({}: {}): void;
onError({}: {}): void;
onReport({}: {}): void;
set onReport(cb: ((...args: any[]) => void) | undefined);
}
const _default: Logger;
export default _default;
Expand All @@ -69,10 +69,10 @@ declare module '__urtc-sdk/client' {
setRole(role: UserRole): boolean;
joinRoom(roomId: string, userId: string, onSuccess?: (users: Array<User>, streams: Array<Stream>) => void, onFailure?: (data?: any) => void): void;
leaveRoom(options?: LeaveRoomOptions, onSuccess?: () => void, onFailure?: (data?: any) => void): void;
publish(options?: PublishOptions, onFailure?: (data?: Error) => void): void;
unpublish(streamId?: string, onSuccess?: (stream: Stream) => void, onFailure?: (data?: any) => void): void;
publish(options?: PublishOptions, onFailure?: (err: Error) => void): void;
unpublish(streamId?: string, onSuccess?: (stream: Stream) => void, onFailure?: (err: Error) => void): void;
subscribe(streamId: string, onFailure?: (Error?: any) => void): void;
unsubscribe(streamId: string, onSuccess?: (stream: Stream) => void, onFailure?: (data?: any) => void): void;
unsubscribe(streamId: string, onSuccess?: (stream: Stream) => void, onFailure?: (err: Error) => void): void;
on(event: EventType, listener: (data?: any) => void): void;
off(event: EventType, listener: (data?: any) => void): void;
muteAudio(streamId?: string): boolean;
Expand Down Expand Up @@ -298,7 +298,7 @@ declare module '__urtc-sdk/resolutions' {
}

declare module '__urtc-sdk/version' {
export const version = "1.7.2";
export const version = "1.8.0";
}

declare module '__urtc-sdk/token' {
Expand All @@ -319,7 +319,7 @@ declare module '__urtc-sdk/types' {
export type RoomType = 'rtc' | 'live';
export type UserRole = 'pull' | 'push' | 'push-and-pull';
export type DeviceType = 'audio' | 'video';
export type EventType = 'user-added' | 'user-removed' | 'stream-added' | 'stream-removed' | 'stream-published' | 'stream-subscribed' | 'mute-video' | 'unmute-video' | 'mute-audio' | 'unmute-audio' | 'screenshare-stopped' | 'connection-state-change' | 'kick-off' | 'network-quality' | 'stream-reconnected' | 'record-notify' | 'relay-notify' | 'volume-indicator' | 'error-notify' | 'stream-playing' | 'stream-paused' | 'player-status-change' | 'first-key-frame';
export type EventType = 'user-added' | 'user-removed' | 'stream-added' | 'stream-removed' | 'stream-published' | 'stream-subscribed' | 'mute-video' | 'unmute-video' | 'mute-audio' | 'unmute-audio' | 'screenshare-stopped' | 'connection-state-change' | 'kick-off' | 'network-quality' | 'stream-reconnected' | 'record-notify' | 'relay-notify' | 'volume-indicator' | 'error-notify' | 'stream-playing' | 'stream-paused' | 'player-status-change' | 'first-key-frame' | 'audio-track-interrupted' | 'audio-track-ended';
export type ConnectionState = 'OPEN' | 'CONNECTING' | 'CLOSING' | 'RECONNECTING' | 'CLOSED';
export type WaterMarkPosition = 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';
export type WaterMarkType = 'time' | 'image' | 'text';
Expand Down Expand Up @@ -348,9 +348,15 @@ declare module '__urtc-sdk/types' {
file?: File;
filePath?: string;
}
export interface AudioProcessingOptions {
AEC?: boolean;
AGC?: boolean;
ANS?: boolean;
}
export interface CreateStreamOptions extends PublishOptions {
userId?: string;
streamId?: string;
audioProcessing?: AudioProcessingOptions;
}
export interface DeviceOptions {
audio: boolean;
Expand Down
Loading

0 comments on commit 4abde18

Please sign in to comment.