@rongcloud/plugin-rtc 5.4.2 → 5.4.4-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/async-task-queue.d.ts +9 -0
- package/dist/core/Invoker.d.ts +46 -0
- package/dist/core/PolarisReporter.d.ts +35 -0
- package/dist/core/RCAudienceClient.d.ts +89 -0
- package/dist/core/RCMediaStreamCapture.d.ts +124 -0
- package/dist/core/RCRTCClient.d.ts +126 -0
- package/dist/core/Store.d.ts +80 -0
- package/dist/core/command/BaseCommand.d.ts +22 -0
- package/dist/core/command/EnabelInnerCDNCommand.d.ts +16 -0
- package/dist/core/command/ExchangeCommand.d.ts +18 -0
- package/dist/core/command/ExchangeWithPushOtherRoomCommand.d.ts +22 -0
- package/dist/core/command/JoinRoomCommand.d.ts +26 -0
- package/dist/core/command/LeaveOtherRoomCommand.d.ts +30 -0
- package/dist/core/command/LocalTrackMuteCommand.d.ts +10 -0
- package/dist/core/command/MCUConfigFlushCommand.d.ts +18 -0
- package/dist/core/command/OnRemoteUserUnpubCommand.d.ts +13 -0
- package/dist/core/command/OnSignalReconnectedCommand.d.ts +38 -0
- package/dist/core/command/ParseRemoteResCommand.d.ts +38 -0
- package/dist/core/command/ParseUserStateCommand.d.ts +57 -0
- package/dist/core/command/PubCommand.d.ts +34 -0
- package/dist/core/command/RTCIdentityChangeCommand.d.ts +17 -0
- package/dist/core/command/RetryExchangeCommand.d.ts +18 -0
- package/dist/core/command/SubCommand.d.ts +21 -0
- package/dist/core/command/UnpubCommand.d.ts +20 -0
- package/dist/core/command/UnpubPrevCommand.d.ts +6 -0
- package/dist/core/command/UnsubCommand.d.ts +20 -0
- package/dist/core/command/UpdateSubListCommand.d.ts +28 -0
- package/dist/core/command/helper.d.ts +20 -0
- package/dist/core/constants.d.ts +2 -0
- package/dist/core/enums/BackgroundPictureFillMode.d.ts +14 -0
- package/dist/core/enums/MixLayoutMode.d.ts +18 -0
- package/dist/core/enums/MixVideoRenderMode.d.ts +14 -0
- package/dist/core/enums/RCBitrate.d.ts +48 -0
- package/dist/core/enums/RCFrameRate.d.ts +7 -0
- package/dist/core/enums/RCInnerCDNBroadcast.d.ts +5 -0
- package/dist/core/enums/RCInnerCDNModel.d.ts +5 -0
- package/dist/core/enums/RCInnerCDNPullIsHttps.d.ts +5 -0
- package/dist/core/enums/RCInnerCDNPullKind.d.ts +6 -0
- package/dist/core/enums/RCInnerCDNPushMode.d.ts +5 -0
- package/dist/core/enums/RCKickType.d.ts +11 -0
- package/dist/core/enums/RCLivingType.d.ts +14 -0
- package/dist/core/enums/RCLoggerTag.d.ts +629 -0
- package/dist/core/enums/RCMediaType.d.ts +18 -0
- package/dist/core/enums/RCMixInputFilterMode.d.ts +35 -0
- package/dist/core/enums/RCRTCCode.d.ts +88 -0
- package/dist/core/enums/RCRTCLiveRole.d.ts +14 -0
- package/dist/core/enums/RCRTCPingResult.d.ts +5 -0
- package/dist/core/enums/RCRTCResolution.d.ts +102 -0
- package/dist/core/enums/RCResolution.d.ts +16 -0
- package/dist/core/enums/inner/PolarisRole.d.ts +14 -0
- package/dist/core/enums/inner/R2Action.d.ts +14 -0
- package/dist/core/enums/inner/R2Status.d.ts +11 -0
- package/dist/core/enums/inner/RCRTCMessageType.d.ts +66 -0
- package/dist/core/enums/inner/RCStreamType.d.ts +14 -0
- package/dist/core/enums/inner/TrackState.d.ts +14 -0
- package/dist/core/interfaces.d.ts +912 -0
- package/dist/core/room/Pinger.d.ts +35 -0
- package/dist/core/room/RCAbstractRoom.d.ts +327 -0
- package/dist/core/room/RCAudienceLivingRoom.d.ts +321 -0
- package/dist/core/room/RCAudioLevelReport.d.ts +16 -0
- package/dist/core/room/RCLivingPKHandler.d.ts +164 -0
- package/dist/core/room/RCLivingRoom.d.ts +108 -0
- package/dist/core/room/RCLocalMediaStream.d.ts +8 -0
- package/dist/core/room/RCMCUConfigBuilder.d.ts +211 -0
- package/dist/core/room/RCRTCRoom.d.ts +15 -0
- package/dist/core/service/RCMediaService.d.ts +96 -0
- package/dist/core/service/helper.d.ts +8 -0
- package/dist/core/service/index.d.ts +6 -0
- package/dist/core/service/interface.d.ts +323 -0
- package/dist/core/service/mcu-interface.d.ts +293 -0
- package/dist/core/tracks/RCLocalTrack.d.ts +121 -0
- package/dist/core/tracks/RCRemoteTrack.d.ts +29 -0
- package/dist/core/tracks/RCTrack.d.ts +90 -0
- package/dist/core/webrtc/RCRTCPeerCManager.d.ts +159 -0
- package/dist/core/webrtc/RCRTCPeerConnection.d.ts +112 -0
- package/dist/core/webrtc/helper.d.ts +26 -0
- package/dist/core/webrtc/sdp/ASdpBuilder.d.ts +98 -0
- package/dist/core/webrtc/sdp/ASdpStrategy.d.ts +48 -0
- package/dist/core/webrtc/sdp/PlanBSdpBuilder.d.ts +20 -0
- package/dist/core/webrtc/sdp/PlanBStrategy.d.ts +26 -0
- package/dist/core/webrtc/sdp/UnifiedPlanSdpBuilder.d.ts +11 -0
- package/dist/core/webrtc/sdp/UnifiedPlanStrategy.d.ts +21 -0
- package/dist/core/webrtc/stat-parser/AbstractStatParser.d.ts +117 -0
- package/dist/core/webrtc/stat-parser/ChromeStatParser.d.ts +14 -0
- package/dist/core/webrtc/stat-parser/FirefoxStatParser.d.ts +14 -0
- package/dist/core/webrtc/stat-parser/IStatParser.d.ts +24 -0
- package/dist/core/webrtc/stat-parser/SafariStatParser.d.ts +14 -0
- package/dist/device.d.ts +6 -0
- package/dist/helper.d.ts +189 -0
- package/dist/index.d.ts +205 -158
- package/dist/index.esm.js +18244 -15
- package/dist/index.js +18276 -15
- package/dist/index.umd.js +18280 -15
- package/dist/logger.d.ts +4 -0
- package/package.json +3 -3
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { RCRTCCode } from '../enums/RCRTCCode';
|
|
2
|
+
import { IRCTrackBitrate } from '../interfaces';
|
|
3
|
+
import { RCTrack } from './RCTrack';
|
|
4
|
+
import { RCAudioBitrate, RCVideoBitrate } from '../enums/RCBitrate';
|
|
5
|
+
export declare abstract class RCLocalTrack extends RCTrack {
|
|
6
|
+
/**
|
|
7
|
+
* 本地流结束事件通知
|
|
8
|
+
* @description
|
|
9
|
+
* 该事件为 MediaStreamTrack 实例的 'ended' 事件触发
|
|
10
|
+
*/
|
|
11
|
+
static EVENT_LOCAL_TRACK_END: string;
|
|
12
|
+
/**
|
|
13
|
+
* muted 状态变更通知常量定义
|
|
14
|
+
*/
|
|
15
|
+
static __INNER_EVENT_MUTED_CHANGE__: string;
|
|
16
|
+
/**
|
|
17
|
+
* 本地流已销毁
|
|
18
|
+
*/
|
|
19
|
+
static __INNER_EVENT_DESTROY__: string;
|
|
20
|
+
constructor(tag: string, userId: string, kind: 'audio' | 'video', track: MediaStreamTrack);
|
|
21
|
+
/**
|
|
22
|
+
* @override 重写 RCTrack 父类方法
|
|
23
|
+
* @param bool
|
|
24
|
+
*/
|
|
25
|
+
_setLocalMuted(bool: boolean): void;
|
|
26
|
+
private _isPublished;
|
|
27
|
+
__innerSetPublished(bool: boolean): void;
|
|
28
|
+
/**
|
|
29
|
+
* 检测本地资源是否已发布
|
|
30
|
+
*/
|
|
31
|
+
isPublished(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* 销毁本地流
|
|
34
|
+
*/
|
|
35
|
+
destroy(): void;
|
|
36
|
+
private _bitrateInfo?;
|
|
37
|
+
/**
|
|
38
|
+
* 为本地流设定上行码率,仅视频流有效,音频默认 15 kbps,不支持修改
|
|
39
|
+
* @description 当 `max` 或 `min` 值为 `0` 时,取动态码率计算结果
|
|
40
|
+
* @param max 最大码率
|
|
41
|
+
* @param min 最小码率
|
|
42
|
+
* @param start 起始码率
|
|
43
|
+
*/
|
|
44
|
+
setBitrate(max?: number, min?: number, start?: number): void;
|
|
45
|
+
/**
|
|
46
|
+
* 获取码率配置,当未指定码率时,将取得动态码率计算值
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
getBitrate(): IRCTrackBitrate;
|
|
50
|
+
}
|
|
51
|
+
export declare class RCLocalAudioTrack extends RCLocalTrack {
|
|
52
|
+
constructor(tag: string, userId: string, track: MediaStreamTrack);
|
|
53
|
+
/**
|
|
54
|
+
* 它设置推荐的音频码率。
|
|
55
|
+
* @param {RCAudioBitrate} audio - RCA音频比特率
|
|
56
|
+
*/
|
|
57
|
+
setRecommendBitrate(audio: RCAudioBitrate): void;
|
|
58
|
+
/**
|
|
59
|
+
* 它设置视频的比特率。
|
|
60
|
+
* @param {number} max - 客户端将使用的最大比特率。
|
|
61
|
+
* @param {number[]} args - [分钟,开始]
|
|
62
|
+
*/
|
|
63
|
+
setBitrate(max: number, ...args: number[]): void;
|
|
64
|
+
}
|
|
65
|
+
export declare class RCLocalVideoTrack extends RCLocalTrack {
|
|
66
|
+
private _isTiny;
|
|
67
|
+
constructor(tag: string, userId: string, track: MediaStreamTrack, _isTiny?: boolean);
|
|
68
|
+
__isTiny(): boolean;
|
|
69
|
+
getStreamId(): string;
|
|
70
|
+
getTrackId(): string;
|
|
71
|
+
/**
|
|
72
|
+
* 它设置推荐的音频码率
|
|
73
|
+
* @param {RCVideoBitrate} video - RC视频比特率
|
|
74
|
+
*/
|
|
75
|
+
setRecommendBitrate(video: RCVideoBitrate): void;
|
|
76
|
+
/**
|
|
77
|
+
* 它设置视频的比特率。
|
|
78
|
+
* @param {number} max - 视频可以编码的最大比特率。
|
|
79
|
+
* @param {number[]} args - [最大、最小、开始]
|
|
80
|
+
*/
|
|
81
|
+
setBitrate(max: number, ...args: number[]): void;
|
|
82
|
+
}
|
|
83
|
+
export declare abstract class RCLocalFileTrack extends RCLocalTrack {
|
|
84
|
+
/**
|
|
85
|
+
* 自定义文件流的播放宿主原生,该类型流所持有的 MediaStreamTrack 实例是由该宿主元素 `captureStream` 获取
|
|
86
|
+
*/
|
|
87
|
+
protected _resource: HTMLVideoElement;
|
|
88
|
+
private static readonly _mapping;
|
|
89
|
+
/**
|
|
90
|
+
* 建立 trackId 与宿主播放元素的映射关系
|
|
91
|
+
* @param trackId
|
|
92
|
+
* @param video
|
|
93
|
+
*/
|
|
94
|
+
private static __innerSetMapping;
|
|
95
|
+
private static __innerRemoveMapping;
|
|
96
|
+
constructor(tag: string, userId: string, kind: 'audio' | 'video', track: MediaStreamTrack,
|
|
97
|
+
/**
|
|
98
|
+
* 自定义文件流的播放宿主原生,该类型流所持有的 MediaStreamTrack 实例是由该宿主元素 `captureStream` 获取
|
|
99
|
+
*/
|
|
100
|
+
_resource: HTMLVideoElement);
|
|
101
|
+
destroy(): void;
|
|
102
|
+
}
|
|
103
|
+
export declare class RCLocalFileVideoTrack extends RCLocalFileTrack {
|
|
104
|
+
constructor(tag: string, userId: string, track: MediaStreamTrack, element: HTMLVideoElement);
|
|
105
|
+
}
|
|
106
|
+
export declare class RCLocalFileAudioTrack extends RCLocalFileTrack {
|
|
107
|
+
constructor(tag: string, userId: string, track: MediaStreamTrack, element: HTMLVideoElement);
|
|
108
|
+
_setLocalMuted(bool: boolean): void;
|
|
109
|
+
play(): Promise<{
|
|
110
|
+
code: RCRTCCode;
|
|
111
|
+
}>;
|
|
112
|
+
}
|
|
113
|
+
export declare class RCMicphoneAudioTrack extends RCLocalAudioTrack {
|
|
114
|
+
}
|
|
115
|
+
export declare class RCCameraVideoTrack extends RCLocalVideoTrack {
|
|
116
|
+
}
|
|
117
|
+
export declare class RCScreenVideoTrack extends RCLocalVideoTrack {
|
|
118
|
+
}
|
|
119
|
+
export declare class RCScreenAudioTrack extends RCLocalAudioTrack {
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=RCLocalTrack.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { RCTrack } from './RCTrack';
|
|
2
|
+
export declare class RCRemoteTrack extends RCTrack {
|
|
3
|
+
constructor(tag: string, userId: string, kind: 'audio' | 'video', roomId?: string);
|
|
4
|
+
/**
|
|
5
|
+
* 根据房间数据更新状态
|
|
6
|
+
* @param value
|
|
7
|
+
*/
|
|
8
|
+
__innerSetRemoteMuted(bool: boolean): void;
|
|
9
|
+
private _isSubscribed;
|
|
10
|
+
__innerSetSubscribed(bool: boolean): void;
|
|
11
|
+
/**
|
|
12
|
+
* 查看是否已订阅了该远端资源
|
|
13
|
+
* @returns
|
|
14
|
+
*/
|
|
15
|
+
isSubscribed(): boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare class RCRemoteAudioTrack extends RCRemoteTrack {
|
|
18
|
+
constructor(tag: string, userId: string, roomId?: string);
|
|
19
|
+
}
|
|
20
|
+
export declare class RCRemoteVideoTrack extends RCRemoteTrack {
|
|
21
|
+
constructor(tag: string, userId: string, roomId?: string);
|
|
22
|
+
private _isSubTiny;
|
|
23
|
+
__innerSetIsTinyTrack(bool: boolean): void;
|
|
24
|
+
/**
|
|
25
|
+
* 是否订阅的小流
|
|
26
|
+
*/
|
|
27
|
+
isSubTiny(): boolean;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=RCRemoteTrack.d.ts.map
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { EventEmitter } from '@rongcloud/engine';
|
|
2
|
+
import { RCRTCCode } from '../enums/RCRTCCode';
|
|
3
|
+
export declare enum RCTrackKind {
|
|
4
|
+
AUDIO = "audio",
|
|
5
|
+
VIDEO = "video"
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class RCTrack extends EventEmitter {
|
|
8
|
+
private readonly _tag;
|
|
9
|
+
private readonly _userId;
|
|
10
|
+
protected readonly _kind: 'audio' | 'video';
|
|
11
|
+
private readonly _isLocalTrack;
|
|
12
|
+
private readonly _roomId?;
|
|
13
|
+
protected _localMuted: boolean;
|
|
14
|
+
protected _remoteMuted: boolean;
|
|
15
|
+
protected readonly _id: string;
|
|
16
|
+
protected readonly _streamId: string;
|
|
17
|
+
protected _msTrack?: MediaStreamTrack;
|
|
18
|
+
private _msStream;
|
|
19
|
+
constructor(_tag: string, _userId: string, _kind: 'audio' | 'video', _isLocalTrack: boolean, _roomId?: string | undefined);
|
|
20
|
+
/**
|
|
21
|
+
* 获取音视轨所属的 streamId,streamId 相同的音轨和视轨可认为属于统一道流
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
getStreamId(): string;
|
|
25
|
+
getTrackId(): string;
|
|
26
|
+
/**
|
|
27
|
+
* 当 isMCUTrack 为 true 时,返回空字符串
|
|
28
|
+
*/
|
|
29
|
+
getUserId(): string;
|
|
30
|
+
__innerGetMediaStreamTrack(): MediaStreamTrack | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* 获取数据标识
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
getTag(): string;
|
|
36
|
+
isLocalTrack(): boolean;
|
|
37
|
+
isVideoTrack(): boolean;
|
|
38
|
+
isAudioTrack(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* 查询流数据是否已可进行播放
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
isReady(): boolean;
|
|
44
|
+
__innerSetMediaStreamTrack(track: MediaStreamTrack | undefined): void;
|
|
45
|
+
protected _setLocalMuted(bool: boolean): void;
|
|
46
|
+
/**
|
|
47
|
+
* 禁用
|
|
48
|
+
*/
|
|
49
|
+
mute(): void;
|
|
50
|
+
/**
|
|
51
|
+
* 启用
|
|
52
|
+
*/
|
|
53
|
+
unmute(): void;
|
|
54
|
+
/**
|
|
55
|
+
* 本端是否已禁用该轨道数据
|
|
56
|
+
*/
|
|
57
|
+
isLocalMuted(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* 是否为 MCU track
|
|
60
|
+
*/
|
|
61
|
+
isMCUTrack(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* 发布者是否已禁用该轨道数据,在 RCLocalTrack 实例中,则其值始终等于 `isLocalMuted()`
|
|
64
|
+
*/
|
|
65
|
+
isOwnerMuted(): boolean;
|
|
66
|
+
private _element?;
|
|
67
|
+
/**
|
|
68
|
+
* 播放
|
|
69
|
+
* @param element 用于承载媒体流的元素标签,音频流可传空
|
|
70
|
+
* @param volume 有效值为 0-100
|
|
71
|
+
*/
|
|
72
|
+
play(element?: HTMLVideoElement, options?: {
|
|
73
|
+
volume?: number;
|
|
74
|
+
audioDeviceId?: string;
|
|
75
|
+
}): Promise<{
|
|
76
|
+
code: RCRTCCode;
|
|
77
|
+
}>;
|
|
78
|
+
__innerDestroy(): void;
|
|
79
|
+
/**
|
|
80
|
+
* 释放内存中的 video、audio 标签
|
|
81
|
+
*/
|
|
82
|
+
__releaseMediaElement(): void;
|
|
83
|
+
/**
|
|
84
|
+
* 它检查元素是否是视频节点
|
|
85
|
+
* @param {any} element - 您要检查的元素是否为视频元素。
|
|
86
|
+
* @returns 一个布尔值。
|
|
87
|
+
*/
|
|
88
|
+
private __validateVideoNodeName;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=RCTrack.d.ts.map
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { TrackParam, IMutilPeerC, IPublishedResource, ISubscribeAttr } from '../interfaces';
|
|
2
|
+
import PolarisReporter from '../PolarisReporter';
|
|
3
|
+
import RCRTCPeerConnection from '../webrtc/RCRTCPeerConnection';
|
|
4
|
+
export default class RCRTCPeerCManager {
|
|
5
|
+
/**
|
|
6
|
+
* 是否使用多 peerConnection
|
|
7
|
+
*/
|
|
8
|
+
private readonly _useMutilPeerC;
|
|
9
|
+
/**
|
|
10
|
+
* roomId 或观众端 userId
|
|
11
|
+
*/
|
|
12
|
+
private readonly _roomId;
|
|
13
|
+
/**
|
|
14
|
+
* 断线重连每一条 peerConnection
|
|
15
|
+
*/
|
|
16
|
+
private readonly _reTryExchange;
|
|
17
|
+
/**
|
|
18
|
+
* 当前用户 id
|
|
19
|
+
*/
|
|
20
|
+
private readonly _currentUserId;
|
|
21
|
+
/**
|
|
22
|
+
* 北极星上报模块
|
|
23
|
+
*/
|
|
24
|
+
private readonly _polarisReport?;
|
|
25
|
+
/**
|
|
26
|
+
* 存储创建的所有 peerC,key 为 pcName,/exchange 请求中 request header 中的 Peer-Connection-Id 值
|
|
27
|
+
*/
|
|
28
|
+
private _mutilPeerC;
|
|
29
|
+
constructor(
|
|
30
|
+
/**
|
|
31
|
+
* 是否使用多 peerConnection
|
|
32
|
+
*/
|
|
33
|
+
_useMutilPeerC: boolean,
|
|
34
|
+
/**
|
|
35
|
+
* roomId 或观众端 userId
|
|
36
|
+
*/
|
|
37
|
+
_roomId: string,
|
|
38
|
+
/**
|
|
39
|
+
* 断线重连每一条 peerConnection
|
|
40
|
+
*/
|
|
41
|
+
_reTryExchange: Function,
|
|
42
|
+
/**
|
|
43
|
+
* 当前用户 id
|
|
44
|
+
*/
|
|
45
|
+
_currentUserId: string,
|
|
46
|
+
/**
|
|
47
|
+
* 北极星上报模块
|
|
48
|
+
*/
|
|
49
|
+
_polarisReport?: PolarisReporter | undefined);
|
|
50
|
+
get useMutilPeerC(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* 根据 track 判断是否为上行
|
|
53
|
+
*/
|
|
54
|
+
private _isPub;
|
|
55
|
+
/**
|
|
56
|
+
* 按 tag 分 tracks
|
|
57
|
+
*/
|
|
58
|
+
private _groupTracksByTag;
|
|
59
|
+
/**
|
|
60
|
+
* 按规则生成 pcName
|
|
61
|
+
* 单 peerC roomId_pub
|
|
62
|
+
* 多 peerC 上行: roomId_tag、下行: roomId_sub
|
|
63
|
+
* 观众加房间: roomId_sub
|
|
64
|
+
* 观众不加房间: userId_sub
|
|
65
|
+
* @param isPub 是否为上行、下行
|
|
66
|
+
* @param tag 多 peerC 时,上行需资源标识
|
|
67
|
+
*/
|
|
68
|
+
private _genPCName;
|
|
69
|
+
/**
|
|
70
|
+
* 创建一个 peerC
|
|
71
|
+
* @param pcName 使用的 peerConnection 名称
|
|
72
|
+
* @param tracks 本次要操作的资源
|
|
73
|
+
*/
|
|
74
|
+
private _createOnePeerCItem;
|
|
75
|
+
/**
|
|
76
|
+
* 创建一组 peerC
|
|
77
|
+
* @param pcName
|
|
78
|
+
* @returns
|
|
79
|
+
*/
|
|
80
|
+
createPeerCList(tracks: TrackParam[]): IMutilPeerC[];
|
|
81
|
+
/**
|
|
82
|
+
* 移除所有 peerConnection 的上行资源
|
|
83
|
+
*/
|
|
84
|
+
private _removeAllLocalTrack;
|
|
85
|
+
/**
|
|
86
|
+
* 销毁某一个 peerConnection
|
|
87
|
+
*/
|
|
88
|
+
destroyPeerC(pcName: string): void;
|
|
89
|
+
/**
|
|
90
|
+
* 销毁所有 peerConnection
|
|
91
|
+
*/
|
|
92
|
+
private _destroyAllPeerC;
|
|
93
|
+
/**
|
|
94
|
+
* 获取某一个 peerC
|
|
95
|
+
*/
|
|
96
|
+
getPCItemByPCName(pcName: string): {
|
|
97
|
+
/**
|
|
98
|
+
* RCRTCPeerConnection 对象
|
|
99
|
+
*/
|
|
100
|
+
pc: RCRTCPeerConnection;
|
|
101
|
+
/**
|
|
102
|
+
* 存放 peerConnection 上本次要发布、取消发布、订阅、取消订阅的 track
|
|
103
|
+
*/
|
|
104
|
+
tracks: TrackParam[];
|
|
105
|
+
/**
|
|
106
|
+
* 当前 peerC 是否为发上行的 peerConnection
|
|
107
|
+
*/
|
|
108
|
+
isPub: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* peerConnection 上行资源,暂不需要
|
|
111
|
+
*/
|
|
112
|
+
publishList?: IPublishedResource[] | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* peerConnection 下行资源,暂不需要
|
|
115
|
+
*/
|
|
116
|
+
subscribeList?: ISubscribeAttr[] | undefined;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* 根据 trackId 获取 peerConnection 对象
|
|
120
|
+
*/
|
|
121
|
+
getPCByTrackId(trackId: string, isPub?: boolean): RCRTCPeerConnection;
|
|
122
|
+
/**
|
|
123
|
+
* 获取所有的 peerConnection
|
|
124
|
+
*/
|
|
125
|
+
getPCList(): RCRTCPeerConnection[];
|
|
126
|
+
/**
|
|
127
|
+
* 获取存储的多 peerConnection 数据
|
|
128
|
+
*/
|
|
129
|
+
getMutilPeerCData(): {
|
|
130
|
+
[key: string]: {
|
|
131
|
+
/**
|
|
132
|
+
* RCRTCPeerConnection 对象
|
|
133
|
+
*/
|
|
134
|
+
pc: RCRTCPeerConnection;
|
|
135
|
+
/**
|
|
136
|
+
* 存放 peerConnection 上本次要发布、取消发布、订阅、取消订阅的 track
|
|
137
|
+
*/
|
|
138
|
+
tracks: TrackParam[];
|
|
139
|
+
/**
|
|
140
|
+
* 当前 peerC 是否为发上行的 peerConnection
|
|
141
|
+
*/
|
|
142
|
+
isPub: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* peerConnection 上行资源,暂不需要
|
|
145
|
+
*/
|
|
146
|
+
publishList?: IPublishedResource[] | undefined;
|
|
147
|
+
/**
|
|
148
|
+
* peerConnection 下行资源,暂不需要
|
|
149
|
+
*/
|
|
150
|
+
subscribeList?: ISubscribeAttr[] | undefined;
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
setPeerCData(pcName: string, key: string, value: any): void;
|
|
154
|
+
/**
|
|
155
|
+
* 销毁资源
|
|
156
|
+
*/
|
|
157
|
+
clear(): void;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=RCRTCPeerCManager.d.ts.map
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { IRCRTCReportListener } from '../interfaces';
|
|
2
|
+
import PolarisReporter from '../PolarisReporter';
|
|
3
|
+
import { RCLocalTrack } from '../tracks/RCLocalTrack';
|
|
4
|
+
import { RCRemoteTrack } from '../tracks/RCRemoteTrack';
|
|
5
|
+
import { EventEmitter } from '@rongcloud/engine';
|
|
6
|
+
import IStatParser from './stat-parser/IStatParser';
|
|
7
|
+
/**
|
|
8
|
+
* PC 实例管理类
|
|
9
|
+
*/
|
|
10
|
+
export default class RCRTCPeerConnection extends EventEmitter {
|
|
11
|
+
/**
|
|
12
|
+
* peerConnection 对应名称
|
|
13
|
+
*/
|
|
14
|
+
private readonly _pcName;
|
|
15
|
+
/**
|
|
16
|
+
* _reTryExchange 方法
|
|
17
|
+
*/
|
|
18
|
+
private readonly _reTryExchange;
|
|
19
|
+
/**
|
|
20
|
+
* 当前用户 id
|
|
21
|
+
*/
|
|
22
|
+
private readonly _currentUserId;
|
|
23
|
+
/**
|
|
24
|
+
* 北极星上传实例
|
|
25
|
+
*/
|
|
26
|
+
private readonly _polarisReport?;
|
|
27
|
+
static __INNER_EVENT_TRACK_READY__: string;
|
|
28
|
+
private readonly _rtcPeerConn;
|
|
29
|
+
private readonly _sdpStrategy;
|
|
30
|
+
reportParser: IStatParser | null;
|
|
31
|
+
private pubLocalTracks;
|
|
32
|
+
private _reTryExchangeTimer;
|
|
33
|
+
private _reportStatsTimer;
|
|
34
|
+
private _reportR3R4ToPolarisTimer;
|
|
35
|
+
private _isDestroyed;
|
|
36
|
+
constructor(
|
|
37
|
+
/**
|
|
38
|
+
* peerConnection 对应名称
|
|
39
|
+
*/
|
|
40
|
+
_pcName: string,
|
|
41
|
+
/**
|
|
42
|
+
* _reTryExchange 方法
|
|
43
|
+
*/
|
|
44
|
+
_reTryExchange: Function,
|
|
45
|
+
/**
|
|
46
|
+
* 当前用户 id
|
|
47
|
+
*/
|
|
48
|
+
_currentUserId: string,
|
|
49
|
+
/**
|
|
50
|
+
* 北极星上传实例
|
|
51
|
+
*/
|
|
52
|
+
_polarisReport?: PolarisReporter | undefined);
|
|
53
|
+
getName(): string;
|
|
54
|
+
getLocalTracks(): RCLocalTrack[];
|
|
55
|
+
private _onConnectionStateChange;
|
|
56
|
+
private _onICEConnectionStateChange;
|
|
57
|
+
private _onTrackReady;
|
|
58
|
+
/**
|
|
59
|
+
* 它设置对等连接的比特率。
|
|
60
|
+
* @deprecated use RCLocalTrack.setBitrate instead of setBitrate
|
|
61
|
+
*/
|
|
62
|
+
setBitrate(max: number, min: number, start?: number): Promise<void>;
|
|
63
|
+
createOffer(iceRestart: boolean): Promise<import("./sdp/ASdpStrategy").IOfferInfo>;
|
|
64
|
+
setRemoteAnswer(answer: string): Promise<import("../..").RCRTCCode>;
|
|
65
|
+
getLocalTrack(trackId: string): RCLocalTrack | null;
|
|
66
|
+
addLocalTrack(track: RCLocalTrack): void;
|
|
67
|
+
removeLocalTrackById(trackId: string): void;
|
|
68
|
+
removeAllLocalTrack(): void;
|
|
69
|
+
removeLocalTrack(track: RCLocalTrack): void;
|
|
70
|
+
private _updateRecvTransceiverMap;
|
|
71
|
+
updateSubRemoteTracks(remoteTracks: RCRemoteTrack[]): void;
|
|
72
|
+
/**
|
|
73
|
+
* 获取当前已发布视频流信息
|
|
74
|
+
*/
|
|
75
|
+
getOutboundVideoInfo(): import("./sdp/ASdpStrategy").OutboundVideoInfo[];
|
|
76
|
+
private _onLocalTrackMuted;
|
|
77
|
+
private _onLocalTrackDestroied;
|
|
78
|
+
private _reportListener;
|
|
79
|
+
/**
|
|
80
|
+
* 注册连接数据监控,开启质量数据上报定时器
|
|
81
|
+
* @param listener
|
|
82
|
+
*/
|
|
83
|
+
registerReportListener(listener: IRCRTCReportListener | null): void;
|
|
84
|
+
private _createRCRTCStateReport;
|
|
85
|
+
/**
|
|
86
|
+
* 获取 peerConnection stats 数据并格式化
|
|
87
|
+
* @returns 返回格式化后的数据
|
|
88
|
+
*/
|
|
89
|
+
private _getStatsData;
|
|
90
|
+
getAudioLevelReportData(): Promise<{
|
|
91
|
+
trackId: string;
|
|
92
|
+
audioLevel: number | null;
|
|
93
|
+
}[] | undefined>;
|
|
94
|
+
/**
|
|
95
|
+
* 通知用户质量数据、peerConnection 北极星数据上报
|
|
96
|
+
* @todo
|
|
97
|
+
*/
|
|
98
|
+
private _reportHandle;
|
|
99
|
+
/**
|
|
100
|
+
* 北极星上报 R3、R4 数据
|
|
101
|
+
*/
|
|
102
|
+
private _sendR3R4Data;
|
|
103
|
+
/**
|
|
104
|
+
* 2s 给北极星上报一次 R3、R4
|
|
105
|
+
*/
|
|
106
|
+
__reportR3R4ToPolaris(): Promise<void>;
|
|
107
|
+
getRTCPeerConn(): RTCPeerConnection;
|
|
108
|
+
destroy(): void;
|
|
109
|
+
clearReTryExchangeTimer(): void;
|
|
110
|
+
isDestroyed(): boolean;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=RCRTCPeerConnection.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const getBitrate: (dTime: number, dBytes: number) => number;
|
|
2
|
+
/**
|
|
3
|
+
* 限制浮点数小数位的有效位数
|
|
4
|
+
* @param value
|
|
5
|
+
* @param fractionDigits 小数点后保留的有效数字位数
|
|
6
|
+
*/
|
|
7
|
+
export declare const fixed: (value: number, fractionDigits?: number) => number;
|
|
8
|
+
/**
|
|
9
|
+
* 处理音量 * 100,并向下取整
|
|
10
|
+
*/
|
|
11
|
+
export declare const handleAudioLevel: (audioLevel: number, factor?: number) => number;
|
|
12
|
+
/**
|
|
13
|
+
* 计算丢包率
|
|
14
|
+
* @param packetsLost 当前统计丢包总数
|
|
15
|
+
* @param packets 当前统计总包数
|
|
16
|
+
* @param prePacketsLost 前次统计丢包总数
|
|
17
|
+
* @param prePackets 前次统计总包数
|
|
18
|
+
*/
|
|
19
|
+
export declare const getPacketsLostRate: (packetsLost: number, packets: number, prePacketsLost?: number, prePackets?: number) => number;
|
|
20
|
+
export declare const senderHasRemoteData: (sender: {
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
}) => boolean;
|
|
23
|
+
export declare const senderHasMediaData: (sender: {
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}) => boolean;
|
|
26
|
+
//# sourceMappingURL=helper.d.ts.map
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { IRCTrackBitrate } from '../../interfaces';
|
|
2
|
+
import { ISdpSemantics } from './ASdpStrategy';
|
|
3
|
+
/**
|
|
4
|
+
* 以字符串的形式 硬处理 SDP 信息
|
|
5
|
+
* 对于 plan-b | unified-plan 数据的处理 方式是相同的。
|
|
6
|
+
* 将 SDP 以 m=[video|audio] 进行拆分,
|
|
7
|
+
* 从而获取 SDPHeader | videoStreams | audioStreams 并对其内容进行处理
|
|
8
|
+
*/
|
|
9
|
+
export default abstract class ASdpBuilder {
|
|
10
|
+
readonly SDP: string;
|
|
11
|
+
readonly type: ISdpSemantics;
|
|
12
|
+
protected SDPHeader: string;
|
|
13
|
+
protected videoStreams: string[];
|
|
14
|
+
protected audioStreams: string[];
|
|
15
|
+
constructor(SDP: string, type: ISdpSemantics);
|
|
16
|
+
/**
|
|
17
|
+
* 它从 SDP 中删除空行和尾随空格
|
|
18
|
+
* @param {string} sdp - 要处理的 SDP 字符串。
|
|
19
|
+
* @returns 删除了换行符的 sdp 字符串。
|
|
20
|
+
*/
|
|
21
|
+
static trimBlankLine(sdp: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* 通过 m=video | m=audio 将 SDP 进行分隔
|
|
24
|
+
* 它返回一个索引数组,其中在 SDP 中找到子字符串“m=video”或“m=audio”
|
|
25
|
+
* 它返回 SDP 中 execResult.index 的索引数组。
|
|
26
|
+
* @returns 一组数字。
|
|
27
|
+
*/
|
|
28
|
+
private getStreamIndex;
|
|
29
|
+
/**
|
|
30
|
+
* 它将 SDP 拆分为标头和流
|
|
31
|
+
* @param {number[]} streams - 表示每个流的开始和结束的数字数组。
|
|
32
|
+
*/
|
|
33
|
+
private spliteStreams;
|
|
34
|
+
/**
|
|
35
|
+
* 如果当前资源方向 RTCRtpTransceiverDirection 是 recvonly | inactive
|
|
36
|
+
* 表明当前不需要发送 RTP 数据所以将 SDP 中删除所有以 `a=ssrc` 或 `a=msid` 开头的行
|
|
37
|
+
* @param {string} stream - string - 要修改的 SDP 字符串
|
|
38
|
+
* @returns 正在返回流。
|
|
39
|
+
*/
|
|
40
|
+
clearInactiveOrRecvonly(stream: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* 它采用 SDP 标头和音频和视频流并将它们连接到一个字符串中
|
|
43
|
+
* @returns SDP 标头和音频和视频流的字符串。
|
|
44
|
+
*/
|
|
45
|
+
abstract stringify(): string;
|
|
46
|
+
/**
|
|
47
|
+
* 它获取音频流并将它们映射到一个新数组,其中每个项目都是调用 setAudioItemBitrate 函数的结果
|
|
48
|
+
* @param {IRCTrackBitrate} bitrate - 以 kbps 为单位的比特率。
|
|
49
|
+
*/
|
|
50
|
+
setAudiosBitrate(bitrate: IRCTrackBitrate): ASdpBuilder;
|
|
51
|
+
/**
|
|
52
|
+
* 它设置特定 MID 的音频比特率。
|
|
53
|
+
* @param {IRCTrackBitrate} bitrate - 音频流的比特率,以 kbps 为单位。
|
|
54
|
+
* @param {string} streamId - 音频流的媒体流 ID。
|
|
55
|
+
*/
|
|
56
|
+
setAudioBitrateWithStreamId(bitrate: IRCTrackBitrate, streamId: string): ASdpBuilder;
|
|
57
|
+
/**
|
|
58
|
+
* 它接受一个 SDP 音频块和一个比特率,并返回比特率设置为给定值的 SDP 音频块
|
|
59
|
+
* @param {string} sdpAudioBlock - SDP 的音频块。
|
|
60
|
+
* @param {IRCTrackBitrate} bitrate - 以 kbps 为单位的比特率。
|
|
61
|
+
* @returns 正在返回 sdpAudioBlock 并将比特率设置为传入的比特率。
|
|
62
|
+
*/
|
|
63
|
+
private setAudioItemBitrate;
|
|
64
|
+
/**
|
|
65
|
+
* 如果 SDP 的音频块没有 b=AS: 行,则添加一个
|
|
66
|
+
* @param {string} sdpAudioBlock - SDP 的音频块。
|
|
67
|
+
* @param {IRCTrackBitrate} bitrate - IRCTrack比特率
|
|
68
|
+
* @returns 正在返回 sdpAudioBlock。
|
|
69
|
+
*/
|
|
70
|
+
private addAudioBlineAS;
|
|
71
|
+
/**
|
|
72
|
+
* 对视频元素设置 SDP 相关信息
|
|
73
|
+
* 针对 SDP 中所有的 video 元素添加码率设置
|
|
74
|
+
* @param bitrate
|
|
75
|
+
*/
|
|
76
|
+
setVideosBitrate(bitrate: IRCTrackBitrate): ASdpBuilder;
|
|
77
|
+
/**
|
|
78
|
+
* 它设置特定中间的视频比特率, 针对 SDP 中给定 mid 的 video 元素添加码率设置。
|
|
79
|
+
* @param {IRCTrackBitrate} bitrate - 您要设置的比特率。
|
|
80
|
+
* @param {string} streamId - 媒体流 ID。
|
|
81
|
+
*/
|
|
82
|
+
setVideoBitrateWithStreamId(bitrate: IRCTrackBitrate, streamId: string): ASdpBuilder;
|
|
83
|
+
/**
|
|
84
|
+
* 它设置视频项目的比特率。
|
|
85
|
+
* @param {string} sdpVideoBlock - SDP 的视频块。
|
|
86
|
+
* @param {IRCTrackBitrate} bitrate - 包含最小、最大和起始比特率值的比特率对象。
|
|
87
|
+
* @returns 正在返回 sdpVideoBlock。
|
|
88
|
+
*/
|
|
89
|
+
private setVideoItemBitrate;
|
|
90
|
+
/**
|
|
91
|
+
* 如果视频块没有 b=AS: 行,则添加一个
|
|
92
|
+
* @param {string} sdpVideoBlock - SDP 的视频块。
|
|
93
|
+
* @param {IRCTrackBitrate} bitrate - IRCTrack比特率
|
|
94
|
+
* @returns 正在返回 sdpVideoBlock。
|
|
95
|
+
*/
|
|
96
|
+
private addVideoBlineAS;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=ASdpBuilder.d.ts.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { RCStreamType } from '../../enums/inner/RCStreamType';
|
|
2
|
+
import { RCRTCCode } from '../../enums/RCRTCCode';
|
|
3
|
+
import { RCLocalTrack } from '../../tracks/RCLocalTrack';
|
|
4
|
+
import { RCRemoteTrack } from '../../tracks/RCRemoteTrack';
|
|
5
|
+
import IStatParser from '../stat-parser/IStatParser';
|
|
6
|
+
export declare type ISdpSemantics = 'plan-b' | 'unified-plan';
|
|
7
|
+
export declare enum SdpSemantics {
|
|
8
|
+
PLANB = "plan-b",
|
|
9
|
+
UNIFIEDPLAN = "unified-plan"
|
|
10
|
+
}
|
|
11
|
+
export interface IOfferInfo {
|
|
12
|
+
type: 'offer';
|
|
13
|
+
sdp: string;
|
|
14
|
+
semantics: ISdpSemantics;
|
|
15
|
+
}
|
|
16
|
+
export declare type OutboundVideoInfo = {
|
|
17
|
+
trackId: string;
|
|
18
|
+
simulcast: RCStreamType;
|
|
19
|
+
resolution: string;
|
|
20
|
+
};
|
|
21
|
+
export declare abstract class ASdpStrategy {
|
|
22
|
+
protected _peer: RTCPeerConnection;
|
|
23
|
+
private static _sdpSemantics;
|
|
24
|
+
/**
|
|
25
|
+
* 设置指定的 SDP 协议版本
|
|
26
|
+
* @param sdpSemantics 优先版本
|
|
27
|
+
*/
|
|
28
|
+
static setSdpSemantics(sdpSemantics: ISdpSemantics): void;
|
|
29
|
+
/**
|
|
30
|
+
* 获取使用的 SDP 协议版本
|
|
31
|
+
*/
|
|
32
|
+
static getSdpSemantics(): ISdpSemantics;
|
|
33
|
+
protected _outboundStreams: {
|
|
34
|
+
[msid: string]: MediaStream;
|
|
35
|
+
};
|
|
36
|
+
constructor(_peer: RTCPeerConnection);
|
|
37
|
+
getOutboundVideoInfo(): OutboundVideoInfo[];
|
|
38
|
+
setRemoteAnswer(sdp: string): Promise<RCRTCCode>;
|
|
39
|
+
abstract updateRecvTransceiverMap(trackId: string, transceiver: RTCRtpTransceiver): void;
|
|
40
|
+
abstract setBitrate(max: number, min: number, start?: number): void;
|
|
41
|
+
abstract addLocalTrack(track: RCLocalTrack): void;
|
|
42
|
+
abstract removeLocalTrack(track: RCLocalTrack): void;
|
|
43
|
+
abstract updateSubRemoteTracks(remoteTracks: RCRemoteTrack[]): void;
|
|
44
|
+
abstract createOffer(iceRestart: boolean): Promise<IOfferInfo>;
|
|
45
|
+
getStatParsr(rtcPeerConn: RTCPeerConnection, sdpSemantics: string, currentUserId: string): IStatParser | null;
|
|
46
|
+
protected resetSdp(sdp: string): string;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=ASdpStrategy.d.ts.map
|