@rongcloud/plugin-rtc 5.5.4-alpha.2 → 5.5.4
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 +55 -0
- package/dist/core/PolarisReporter.d.ts +36 -0
- package/dist/core/RCAudienceClient.d.ts +90 -0
- package/dist/core/RCMediaStreamCapture.d.ts +124 -0
- package/dist/core/RCRTCClient.d.ts +148 -0
- package/dist/core/Store.d.ts +86 -0
- package/dist/core/codec/RTCContext.d.ts +76 -0
- package/dist/core/codec/interface.d.ts +168 -0
- package/dist/core/codec/proto.d.ts +94 -0
- package/dist/core/codec/rtc-helper.d.ts +17 -0
- package/dist/core/command/AsyncCommand.d.ts +55 -0
- package/dist/core/command/AsyncSubscribeCommand.d.ts +28 -0
- package/dist/core/command/AsyncUnsubscribeCommand.d.ts +28 -0
- package/dist/core/command/AsyncUpdateSubscribeListCommand.d.ts +25 -0
- package/dist/core/command/BaseCommand.d.ts +31 -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 +31 -0
- package/dist/core/command/LeaveOtherRoomCommand.d.ts +32 -0
- package/dist/core/command/LocalTrackMuteCommand.d.ts +18 -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/PublishCommand.d.ts +36 -0
- package/dist/core/command/RTCIdentityChangeCommand.d.ts +18 -0
- package/dist/core/command/RetryExchangeCommand.d.ts +18 -0
- package/dist/core/command/SubscribeCommand.d.ts +21 -0
- package/dist/core/command/UnpublishCommand.d.ts +22 -0
- package/dist/core/command/UnpublishPrevCommand.d.ts +11 -0
- package/dist/core/command/UnsubscribeCommand.d.ts +20 -0
- package/dist/core/command/UpdateSubscribeListCommand.d.ts +28 -0
- package/dist/core/command/helper.d.ts +20 -0
- package/dist/core/constants.d.ts +4 -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/RCCommandKind.d.ts +12 -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/RCLinkedListPoint.d.ts +6 -0
- package/dist/core/enums/RCLivingType.d.ts +14 -0
- package/dist/core/enums/RCLoggerTag.d.ts +649 -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 +93 -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 +132 -0
- package/dist/core/enums/RCResolution.d.ts +21 -0
- package/dist/core/enums/RTCJoinType.d.ts +18 -0
- package/dist/core/enums/RTCMode.d.ts +22 -0
- package/dist/core/enums/inner/LiveRole.d.ts +11 -0
- package/dist/core/enums/inner/LiveType.d.ts +14 -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 +70 -0
- package/dist/core/enums/inner/RCStreamType.d.ts +14 -0
- package/dist/core/enums/inner/RTCApiType.d.ts +5 -0
- package/dist/core/enums/inner/RTCIdentityChangeType.d.ts +5 -0
- package/dist/core/enums/inner/TrackState.d.ts +14 -0
- package/dist/core/interfaces.d.ts +942 -0
- package/dist/core/room/Pinger.d.ts +36 -0
- package/dist/core/room/RCAbstractRoom.d.ts +354 -0
- package/dist/core/room/RCAudienceLivingRoom.d.ts +334 -0
- package/dist/core/room/RCAudioLevelReport.d.ts +16 -0
- package/dist/core/room/RCLivingPKHandler.d.ts +165 -0
- package/dist/core/room/RCLivingRoom.d.ts +112 -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 +17 -0
- package/dist/core/service/RCMediaService.d.ts +121 -0
- package/dist/core/service/helper.d.ts +18 -0
- package/dist/core/service/index.d.ts +6 -0
- package/dist/core/service/interface.d.ts +328 -0
- package/dist/core/service/mcu-interface.d.ts +293 -0
- package/dist/core/tracks/RC3AnoiseTrack.d.ts +27 -0
- package/dist/core/tracks/RCLocalTrack.d.ts +143 -0
- package/dist/core/tracks/RCRemoteTrack.d.ts +29 -0
- package/dist/core/tracks/RCTrack.d.ts +95 -0
- package/dist/core/webrtc/RCRTCPeerCManager.d.ts +161 -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 +120 -0
- package/dist/core/webrtc/sdp/ASdpStrategy.d.ts +53 -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/SDPUtils.d.ts +60 -0
- package/dist/core/webrtc/sdp/UnifiedPlanSdpBuilder.d.ts +11 -0
- package/dist/core/webrtc/sdp/UnifiedPlanStrategy.d.ts +25 -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 +195 -0
- package/dist/index.d.ts +22 -336
- package/dist/index.esm.js +15 -28781
- package/dist/index.js +15 -28810
- package/dist/index.umd.js +15 -28814
- package/dist/logger.d.ts +4 -0
- package/package.json +5 -2
|
@@ -0,0 +1,161 @@
|
|
|
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
|
+
* 为了适应多 peerConnection 的场景做出的冗余设计,对单 peerConnection 进行数组进行封装
|
|
78
|
+
* 提示:useMutilPeerC 用户自定义的,没有明确场景,必须使用多 peerConnection
|
|
79
|
+
* @param pcName
|
|
80
|
+
* @returns
|
|
81
|
+
*/
|
|
82
|
+
createPeerCList(tracks: TrackParam[]): IMutilPeerC[];
|
|
83
|
+
/**
|
|
84
|
+
* 移除所有 peerConnection 的上行资源
|
|
85
|
+
*/
|
|
86
|
+
private _removeAllLocalTrack;
|
|
87
|
+
/**
|
|
88
|
+
* 销毁某一个 peerConnection
|
|
89
|
+
*/
|
|
90
|
+
destroyPeerC(pcName: string): void;
|
|
91
|
+
/**
|
|
92
|
+
* 销毁所有 peerConnection
|
|
93
|
+
*/
|
|
94
|
+
private _destroyAllPeerC;
|
|
95
|
+
/**
|
|
96
|
+
* 获取某一个 peerC
|
|
97
|
+
*/
|
|
98
|
+
getPCItemByPCName(pcName: string): {
|
|
99
|
+
/**
|
|
100
|
+
* RCRTCPeerConnection 对象
|
|
101
|
+
*/
|
|
102
|
+
pc: RCRTCPeerConnection;
|
|
103
|
+
/**
|
|
104
|
+
* 存放 peerConnection 上本次要发布、取消发布、订阅、取消订阅的 track
|
|
105
|
+
*/
|
|
106
|
+
tracks: TrackParam[];
|
|
107
|
+
/**
|
|
108
|
+
* 当前 peerC 是否为发上行的 peerConnection
|
|
109
|
+
*/
|
|
110
|
+
isPub: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* peerConnection 上行资源,暂不需要
|
|
113
|
+
*/
|
|
114
|
+
publishList?: IPublishedResource[] | undefined;
|
|
115
|
+
/**
|
|
116
|
+
* peerConnection 下行资源,暂不需要
|
|
117
|
+
*/
|
|
118
|
+
subscribeList?: ISubscribeAttr[] | undefined;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* 根据 trackId 获取 peerConnection 对象
|
|
122
|
+
*/
|
|
123
|
+
getPCByTrackId(trackId: string, isPub?: boolean): RCRTCPeerConnection;
|
|
124
|
+
/**
|
|
125
|
+
* 获取所有的 peerConnection
|
|
126
|
+
*/
|
|
127
|
+
getPCList(): RCRTCPeerConnection[];
|
|
128
|
+
/**
|
|
129
|
+
* 获取存储的多 peerConnection 数据
|
|
130
|
+
*/
|
|
131
|
+
getMutilPeerCData(): {
|
|
132
|
+
[key: string]: {
|
|
133
|
+
/**
|
|
134
|
+
* RCRTCPeerConnection 对象
|
|
135
|
+
*/
|
|
136
|
+
pc: RCRTCPeerConnection;
|
|
137
|
+
/**
|
|
138
|
+
* 存放 peerConnection 上本次要发布、取消发布、订阅、取消订阅的 track
|
|
139
|
+
*/
|
|
140
|
+
tracks: TrackParam[];
|
|
141
|
+
/**
|
|
142
|
+
* 当前 peerC 是否为发上行的 peerConnection
|
|
143
|
+
*/
|
|
144
|
+
isPub: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* peerConnection 上行资源,暂不需要
|
|
147
|
+
*/
|
|
148
|
+
publishList?: IPublishedResource[] | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* peerConnection 下行资源,暂不需要
|
|
151
|
+
*/
|
|
152
|
+
subscribeList?: ISubscribeAttr[] | undefined;
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
setPeerCData(pcName: string, key: string, value: any): void;
|
|
156
|
+
/**
|
|
157
|
+
* 销毁资源
|
|
158
|
+
*/
|
|
159
|
+
clear(): void;
|
|
160
|
+
}
|
|
161
|
+
//# 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,120 @@
|
|
|
1
|
+
import { IRCTrackBitrate } from '../../interfaces';
|
|
2
|
+
import { ISdpSemantics, RtpTransceiverDirection } 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
|
+
static KBitrate: number;
|
|
16
|
+
get videoSdps(): string[];
|
|
17
|
+
get audioSdps(): string[];
|
|
18
|
+
constructor(SDP: string, type: ISdpSemantics);
|
|
19
|
+
/**
|
|
20
|
+
* 它从 SDP 中删除空行和尾随空格
|
|
21
|
+
* @param {string} sdp - 要处理的 SDP 字符串。
|
|
22
|
+
* @returns 删除了换行符的 sdp 字符串。
|
|
23
|
+
*/
|
|
24
|
+
static trimBlankLine(sdp: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* 通过 m=video | m=audio 将 SDP 进行分隔
|
|
27
|
+
* 它返回一个索引数组,其中在 SDP 中找到子字符串“m=video”或“m=audio”
|
|
28
|
+
* 它返回 SDP 中 execResult.index 的索引数组。
|
|
29
|
+
* @returns 一组数字。
|
|
30
|
+
*/
|
|
31
|
+
private getStreamIndex;
|
|
32
|
+
/**
|
|
33
|
+
* 它将 SDP 拆分为标头和流
|
|
34
|
+
* @param {number[]} streams - 表示每个流的开始和结束的数字数组。
|
|
35
|
+
*/
|
|
36
|
+
private spliteStreams;
|
|
37
|
+
/**
|
|
38
|
+
* 如果当前资源方向 RTCRtpTransceiverDirection 是 recvonly | inactive
|
|
39
|
+
* 表明当前不需要发送 RTP 数据所以将 SDP 中删除所有以 `a=ssrc` 或 `a=msid` 开头的行
|
|
40
|
+
* @param {string} stream - string - 要修改的 SDP 字符串
|
|
41
|
+
* @returns 正在返回流。
|
|
42
|
+
*/
|
|
43
|
+
static clearInactiveOrRecvonly(stream: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* 它采用 SDP 标头和音频和视频流并将它们连接到一个字符串中
|
|
46
|
+
* @returns SDP 标头和音频和视频流的字符串。
|
|
47
|
+
*/
|
|
48
|
+
abstract stringify(): string;
|
|
49
|
+
/**
|
|
50
|
+
* 它将 SDP 标头中的 `a=group` 行替换为 `b=AS` 和 `b=TIAS` 行
|
|
51
|
+
* @param {number} maxBitrate - 流的最大比特率。
|
|
52
|
+
*/
|
|
53
|
+
setHeaderBitrate(maxBitrate: number): void;
|
|
54
|
+
/**
|
|
55
|
+
* 它获取音频流并将它们映射到一个新数组,其中每个项目都是调用 setAudioItemBitrate 函数的结果
|
|
56
|
+
* @param {IRCTrackBitrate} bitrate - 以 kbps 为单位的比特率。
|
|
57
|
+
*/
|
|
58
|
+
setAudiosBitrate(bitrate: IRCTrackBitrate): ASdpBuilder;
|
|
59
|
+
/**
|
|
60
|
+
* 它设置特定 MID 的音频比特率。
|
|
61
|
+
* @param {IRCTrackBitrate} bitrate - 音频流的比特率,以 kbps 为单位。
|
|
62
|
+
* @param {string} streamId - 音频流的媒体流 ID。
|
|
63
|
+
*/
|
|
64
|
+
setAudioBitrateWithStreamId(bitrate: IRCTrackBitrate, streamId: string): ASdpBuilder;
|
|
65
|
+
/**
|
|
66
|
+
* 它设置特定 MID 的音频比特率。
|
|
67
|
+
* @param {IRCTrackBitrate} bitrate - 音频流的比特率,以 kbps 为单位。
|
|
68
|
+
* @param {string} mid - 音频流的媒体流 ID。
|
|
69
|
+
*/
|
|
70
|
+
setAudioBitrateWithMid(bitrate: IRCTrackBitrate, mid: string): ASdpBuilder;
|
|
71
|
+
/**
|
|
72
|
+
* 它接受一个 SDP 音频块和一个比特率,并返回比特率设置为给定值的 SDP 音频块
|
|
73
|
+
* @param {string} sdpAudioBlock - SDP 的音频块。
|
|
74
|
+
* @param {IRCTrackBitrate} bitrate - 以 kbps 为单位的比特率。
|
|
75
|
+
* @returns 正在返回 sdpAudioBlock 并将比特率设置为传入的比特率。
|
|
76
|
+
*/
|
|
77
|
+
private setAudioItemBitrate;
|
|
78
|
+
/**
|
|
79
|
+
* 如果 SDP 的音频块没有 b=AS: 行,则添加一个
|
|
80
|
+
* @param {string} sdpAudioBlock - SDP 的音频块。
|
|
81
|
+
* @param {IRCTrackBitrate} bitrate - IRCTrack比特率
|
|
82
|
+
* @returns 正在返回 sdpAudioBlock。
|
|
83
|
+
*/
|
|
84
|
+
private addAudioBlineAS;
|
|
85
|
+
/**
|
|
86
|
+
* 对视频元素设置 SDP 相关信息
|
|
87
|
+
* 针对 SDP 中所有的 video 元素添加码率设置
|
|
88
|
+
* @param bitrate
|
|
89
|
+
*/
|
|
90
|
+
setVideosBitrate(bitrate: IRCTrackBitrate): ASdpBuilder;
|
|
91
|
+
/**
|
|
92
|
+
* 它设置特定中间的视频比特率, 针对 SDP 中给定 mid 的 video 元素添加码率设置。
|
|
93
|
+
* @param {IRCTrackBitrate} bitrate - 您要设置的比特率。
|
|
94
|
+
* @param {string} streamId - 媒体流 ID。
|
|
95
|
+
*/
|
|
96
|
+
setVideoBitrateWithStreamId(bitrate: IRCTrackBitrate, streamId: string): ASdpBuilder;
|
|
97
|
+
/**
|
|
98
|
+
* 它设置特定中间的视频比特率, 针对 SDP 中给定 mid 的 video 元素添加码率设置。
|
|
99
|
+
* @param {IRCTrackBitrate} bitrate - 您要设置的比特率。
|
|
100
|
+
* @param {string} streamId - 媒体流 ID。
|
|
101
|
+
*/
|
|
102
|
+
setVideoBitrateWithMid(bitrate: IRCTrackBitrate, mid: string): ASdpBuilder;
|
|
103
|
+
/**
|
|
104
|
+
* 它设置视频项目的比特率。
|
|
105
|
+
* @param {string} sdpVideoBlock - SDP 的视频块。
|
|
106
|
+
* @param {IRCTrackBitrate} bitrate - 包含最小、最大和起始比特率值的比特率对象。
|
|
107
|
+
* @returns 正在返回 sdpVideoBlock。
|
|
108
|
+
*/
|
|
109
|
+
private setVideoItemBitrate;
|
|
110
|
+
/**
|
|
111
|
+
* 如果视频块没有 b=AS: 行,则添加一个
|
|
112
|
+
* @param {string} sdpVideoBlock - SDP 的视频块。
|
|
113
|
+
* @param {IRCTrackBitrate} bitrate - IRCTrack比特率
|
|
114
|
+
* @returns 正在返回 sdpVideoBlock。
|
|
115
|
+
*/
|
|
116
|
+
private addVideoBlineAS;
|
|
117
|
+
clearnSsrcWithMid(mid: string, direction: RtpTransceiverDirection): ASdpBuilder;
|
|
118
|
+
private clearSSRC;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=ASdpBuilder.d.ts.map
|
|
@@ -0,0 +1,53 @@
|
|
|
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 declare enum RtpTransceiverDirection {
|
|
12
|
+
SENDONLY = "sendonly",
|
|
13
|
+
RECVONLY = "recvonly",
|
|
14
|
+
INACTIVE = "inactive"
|
|
15
|
+
}
|
|
16
|
+
export interface IOfferInfo {
|
|
17
|
+
type: 'offer';
|
|
18
|
+
sdp: string;
|
|
19
|
+
semantics: ISdpSemantics;
|
|
20
|
+
}
|
|
21
|
+
export declare type OutboundVideoInfo = {
|
|
22
|
+
trackId: string;
|
|
23
|
+
simulcast: RCStreamType;
|
|
24
|
+
resolution: string;
|
|
25
|
+
};
|
|
26
|
+
export declare abstract class ASdpStrategy {
|
|
27
|
+
protected _peer: RTCPeerConnection;
|
|
28
|
+
private static _sdpSemantics;
|
|
29
|
+
/**
|
|
30
|
+
* 设置指定的 SDP 协议版本
|
|
31
|
+
* @param sdpSemantics 优先版本
|
|
32
|
+
*/
|
|
33
|
+
static setSdpSemantics(sdpSemantics: ISdpSemantics): void;
|
|
34
|
+
/**
|
|
35
|
+
* 获取使用的 SDP 协议版本
|
|
36
|
+
*/
|
|
37
|
+
static getSdpSemantics(): ISdpSemantics;
|
|
38
|
+
protected _outboundStreams: {
|
|
39
|
+
[msid: string]: MediaStream;
|
|
40
|
+
};
|
|
41
|
+
constructor(_peer: RTCPeerConnection);
|
|
42
|
+
getOutboundVideoInfo(): OutboundVideoInfo[];
|
|
43
|
+
setRemoteAnswer(sdp: string): Promise<RCRTCCode>;
|
|
44
|
+
abstract updateRecvTransceiverMap(trackId: string, transceiver: RTCRtpTransceiver): void;
|
|
45
|
+
abstract setBitrate(max: number, min: number, start?: number): void;
|
|
46
|
+
abstract addLocalTrack(track: RCLocalTrack): void;
|
|
47
|
+
abstract removeLocalTrack(track: RCLocalTrack): void;
|
|
48
|
+
abstract updateSubRemoteTracks(remoteTracks: RCRemoteTrack[]): void;
|
|
49
|
+
abstract createOffer(iceRestart: boolean): Promise<IOfferInfo>;
|
|
50
|
+
getStatParsr(rtcPeerConn: RTCPeerConnection, sdpSemantics: string, currentUserId: string): IStatParser | null;
|
|
51
|
+
protected resetSdp(sdp: string): string;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=ASdpStrategy.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IRCTrackBitrate } from '../../interfaces';
|
|
2
|
+
import ASdpBuilder from './ASdpBuilder';
|
|
3
|
+
export default class PlanBSdpBuilder extends ASdpBuilder {
|
|
4
|
+
readonly SDP: string;
|
|
5
|
+
constructor(SDP: string);
|
|
6
|
+
/**
|
|
7
|
+
* 它采用 SDP 标头和音频和视频流并将它们连接到一个字符串中
|
|
8
|
+
* @returns SDP 标头和音频和视频流的字符串。
|
|
9
|
+
*/
|
|
10
|
+
stringify(): string;
|
|
11
|
+
/**
|
|
12
|
+
* @overwrite 因为 Plan-b 设置是针对整个 m=audio ,所以不需要单独设置
|
|
13
|
+
*/
|
|
14
|
+
setAudioBitrateWithStreamId(bitrate: IRCTrackBitrate, streamId: string): ASdpBuilder;
|
|
15
|
+
/**
|
|
16
|
+
* @overwrite 因为 Plan-b 设置是针对整个 m=video ,所以不需要单独设置
|
|
17
|
+
*/
|
|
18
|
+
setVideoBitrateWithStreamId(bitrate: IRCTrackBitrate, streamId: string): ASdpBuilder;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=PlanBSdpBuilder.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RCRTCCode } from '../../enums/RCRTCCode';
|
|
2
|
+
import { RCLocalTrack } from '../../tracks/RCLocalTrack';
|
|
3
|
+
import { RCRemoteTrack } from '../../tracks/RCRemoteTrack';
|
|
4
|
+
import { IOfferInfo, ASdpStrategy } from './ASdpStrategy';
|
|
5
|
+
export declare class PlanBStrategy extends ASdpStrategy {
|
|
6
|
+
private senders;
|
|
7
|
+
private _maxBitrate?;
|
|
8
|
+
private _minBitrate?;
|
|
9
|
+
private _startBitrate?;
|
|
10
|
+
private _localTracks;
|
|
11
|
+
addLocalTrack(track: RCLocalTrack): void;
|
|
12
|
+
removeLocalTrack(track: RCLocalTrack): void;
|
|
13
|
+
updateSubRemoteTracks(remoteTracks: RCRemoteTrack[]): void;
|
|
14
|
+
updateRecvTransceiverMap(trackId: string, transceiver: RTCRtpTransceiver): void;
|
|
15
|
+
/**
|
|
16
|
+
* 指定上行码率范围
|
|
17
|
+
* @param maxBitrate
|
|
18
|
+
* @param minBitrate
|
|
19
|
+
* @param startBitrate
|
|
20
|
+
*/
|
|
21
|
+
setBitrate(maxBitrate: number, minBitrate: number, startBitrate?: number): void;
|
|
22
|
+
createOffer(iceRestart: boolean): Promise<IOfferInfo>;
|
|
23
|
+
setRemoteAnswer(sdp: string): Promise<RCRTCCode>;
|
|
24
|
+
protected resetSdp(sdp: string): string;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=PlanBStrategy.d.ts.map
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
interface ssrcMedia {
|
|
2
|
+
ssrc: number;
|
|
3
|
+
attribute?: string;
|
|
4
|
+
value?: string;
|
|
5
|
+
}
|
|
6
|
+
interface Msid {
|
|
7
|
+
stream: string;
|
|
8
|
+
track: string;
|
|
9
|
+
}
|
|
10
|
+
interface mline {
|
|
11
|
+
kind: string;
|
|
12
|
+
port: number;
|
|
13
|
+
protocol: string;
|
|
14
|
+
fmt: string;
|
|
15
|
+
}
|
|
16
|
+
export default class SDPUtils {
|
|
17
|
+
static splitSections(blob: string): string[];
|
|
18
|
+
/**
|
|
19
|
+
* 它需要一个 SDP 文本块并返回一个仅包含媒体部分的 SDP 文本数组
|
|
20
|
+
* @param {string} blob - 您要解析的 SDP 字符串。
|
|
21
|
+
* @returns 字符串数组。
|
|
22
|
+
*/
|
|
23
|
+
static getMediaSections(blob: string): string[];
|
|
24
|
+
static parseExtmap(line: string): {
|
|
25
|
+
id: number;
|
|
26
|
+
direction: string;
|
|
27
|
+
uri: string;
|
|
28
|
+
};
|
|
29
|
+
static splitLines(blob: string): string[];
|
|
30
|
+
/**
|
|
31
|
+
* 它接受一个媒体部分并返回一个对象,其中包含媒体部分的种类、端口、协议和格式
|
|
32
|
+
* @param {string} mediaSection - SDP的媒体部分。
|
|
33
|
+
* @returns 具有以下属性的对象:
|
|
34
|
+
* kind:媒体的类型(音频、视频等)
|
|
35
|
+
* 端口:端口号
|
|
36
|
+
* 协议:使用的协议
|
|
37
|
+
* fmt:媒体的格式
|
|
38
|
+
*/
|
|
39
|
+
static parseMLine(mediaSection: string): mline;
|
|
40
|
+
static matchPrefix(blob: string, prefix: string): string[];
|
|
41
|
+
/**
|
|
42
|
+
* 它从 SDP 媒体部分解析 msid 属性
|
|
43
|
+
* @param {string} mediaSection - SDP的媒体部分。
|
|
44
|
+
* @returns 具有两个属性的对象:流和轨道。
|
|
45
|
+
*/
|
|
46
|
+
static parseMsid(mediaSection: string): Msid;
|
|
47
|
+
/**
|
|
48
|
+
* 它接受一个字符串并返回一个对象
|
|
49
|
+
* @param {string} line - 我们正在解析的 SDP 行。
|
|
50
|
+
*/
|
|
51
|
+
static parseSsrcMedia(line: string): ssrcMedia;
|
|
52
|
+
/**
|
|
53
|
+
* 它从 SDP 的媒体部分返回中间值
|
|
54
|
+
* @param {string} mediaSection - SDP的媒体部分。
|
|
55
|
+
* @returns 媒体部分的中间。
|
|
56
|
+
*/
|
|
57
|
+
static getMid(mediaSection: string): string | undefined;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=SDPUtils.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import ASdpBuilder from './ASdpBuilder';
|
|
2
|
+
export default class UnifiedPlanSdpBuilder extends ASdpBuilder {
|
|
3
|
+
readonly SDP: string;
|
|
4
|
+
constructor(SDP: string);
|
|
5
|
+
/**
|
|
6
|
+
* 它采用 SDP 标头和音频和视频流并将它们连接到一个字符串中
|
|
7
|
+
* @returns SDP 标头和音频和视频流的字符串。
|
|
8
|
+
*/
|
|
9
|
+
stringify(): string;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=UnifiedPlanSdpBuilder.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { RCRTCCode } from '../../enums/RCRTCCode';
|
|
2
|
+
import { RCLocalTrack } from '../../tracks/RCLocalTrack';
|
|
3
|
+
import { RCRemoteTrack } from '../../tracks/RCRemoteTrack';
|
|
4
|
+
import { ASdpStrategy, IOfferInfo } from './ASdpStrategy';
|
|
5
|
+
export declare class UnifiedPlanStrategy extends ASdpStrategy {
|
|
6
|
+
private _sendTransceiver;
|
|
7
|
+
setBitrate(max: number, min: number, start?: number): void;
|
|
8
|
+
private _localTracks;
|
|
9
|
+
addLocalTrack(track: RCLocalTrack): void;
|
|
10
|
+
removeLocalTrack(track: RCLocalTrack): void;
|
|
11
|
+
private _recvAudio;
|
|
12
|
+
private _recvVideo;
|
|
13
|
+
private _recvTransceiver;
|
|
14
|
+
private _subedTracks;
|
|
15
|
+
updateRecvTransceiverMap(trackId: string, transceiver: RTCRtpTransceiver): void;
|
|
16
|
+
updateSubRemoteTracks(tracks: RCRemoteTrack[]): void;
|
|
17
|
+
protected midMsid: {
|
|
18
|
+
[key: string]: string;
|
|
19
|
+
};
|
|
20
|
+
createOffer(iceRestart: boolean): Promise<IOfferInfo>;
|
|
21
|
+
setRemoteAnswer(sdp: string): Promise<RCRTCCode>;
|
|
22
|
+
protected resetOfferSdp(sdp: string): string;
|
|
23
|
+
protected resetAnswerSdp(sdp: string): string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=UnifiedPlanStrategy.d.ts.map
|