@rongcloud/plugin-rtc 5.6.1 → 5.6.3-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/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /*
2
- * RCRTC - v5.6.1
3
- * CommitId - 399760e414ea5e87658f8ab721f294ad81902201
4
- * Tue Nov 08 2022 22:03:15 GMT+0800 (China Standard Time)
2
+ * RCRTC - v5.6.3-alpha.2
3
+ * CommitId - 2fda2b34be0736183519f005f2d4157acd8a3161
4
+ * Sun Nov 13 2022 12:38:30 GMT+0800 (China Standard Time)
5
5
  * ©2020 RongCloud, Inc. All rights reserved.
6
6
  */
7
7
  import { EventEmitter, BasicLogger, INaviInfo, RTCPluginContext, AbsCodec, IPromiseResult, ErrorCode, KVString, IRuntime, IAsyncRes, ConnectionStatus, ConversationType, ISendMsgOptions, IReceivedMessage, EnableLogL, IPluginGenerator } from '@rongcloud/engine';
@@ -497,59 +497,6 @@ interface IStatParser {
497
497
  }[];
498
498
  }
499
499
 
500
- declare type ISdpSemantics = 'plan-b' | 'unified-plan';
501
- interface IOfferInfo {
502
- type: 'offer';
503
- sdp: string;
504
- semantics: ISdpSemantics;
505
- }
506
- declare type OutboundVideoInfo = {
507
- trackId: string;
508
- simulcast: RCStreamType;
509
- resolution: string;
510
- };
511
-
512
- declare enum RCInnerCDNPullKind {
513
- RTMP = "rtmp",
514
- FLV = "flv",
515
- HLS = "hls"
516
- }
517
-
518
- declare enum RCInnerCDNPullIsHttps {
519
- NOT_HTTPS = 0,
520
- HTTPS = 1
521
- }
522
-
523
- declare enum RCKickReason {
524
- /**
525
- * Server 主动踢(掉 Server API 踢出)
526
- */
527
- SERVER_KICK = 1,
528
- /**
529
- * 其他设备登陆后,本端被踢
530
- */
531
- OTHER_KICK = 2
532
- }
533
-
534
- declare enum RCRTCPingResult {
535
- SUCCESS = "Success",
536
- FAIL = "Fail"
537
- }
538
-
539
- /**
540
- * 直播角色
541
- */
542
- declare enum RCRTCLiveRole {
543
- /**
544
- * 主播降级
545
- */
546
- ANCHOR = 1,
547
- /**
548
- * 观众升级
549
- */
550
- AUDIENCE = 2
551
- }
552
-
553
500
  /**
554
501
  * RTC 消息类型常量
555
502
  * @private
@@ -1714,6 +1661,189 @@ declare class RCMediaService {
1714
1661
  }>;
1715
1662
  }
1716
1663
 
1664
+ declare enum RCEncoder {
1665
+ VP8 = "VP8",
1666
+ VP9 = "VP9",
1667
+ H264 = "H264"
1668
+ }
1669
+
1670
+ /**
1671
+ * PC 实例管理类
1672
+ */
1673
+ declare class RCRTCPeerConnection extends EventEmitter {
1674
+ /**
1675
+ * peerConnection 对应名称
1676
+ */
1677
+ private readonly _pcName;
1678
+ /**
1679
+ * _reTryExchange 方法
1680
+ */
1681
+ private readonly _reTryExchange;
1682
+ /**
1683
+ * 当前用户 id
1684
+ */
1685
+ private readonly _currentUserId;
1686
+ /**
1687
+ * 北极星上传实例
1688
+ */
1689
+ private readonly _polarisReport?;
1690
+ private readonly onTrackTrouble?;
1691
+ /**
1692
+ * store 实例
1693
+ */
1694
+ private readonly _store?;
1695
+ /**
1696
+ * 是否是房间内观众
1697
+ */
1698
+ private readonly _isRoomAudience;
1699
+ protected readonly _initOptions?: IRCRTCInitOptions | undefined;
1700
+ static __INNER_EVENT_TRACK_READY__: string;
1701
+ private readonly senderAndReciveSize;
1702
+ private readonly _rtcPeerConn;
1703
+ private readonly _sdpStrategy;
1704
+ reportParser: IStatParser | null;
1705
+ private pubLocalTracks;
1706
+ private _reTryExchangeTimer;
1707
+ private _reportStatsTimer;
1708
+ private _reportR3R4ToPolarisTimer;
1709
+ private _isDestroyed;
1710
+ private _reportStatsData?;
1711
+ private _originReportStatsData?;
1712
+ private _logger;
1713
+ constructor(
1714
+ /**
1715
+ * peerConnection 对应名称
1716
+ */
1717
+ _pcName: string,
1718
+ /**
1719
+ * _reTryExchange 方法
1720
+ */
1721
+ _reTryExchange: Function,
1722
+ /**
1723
+ * 当前用户 id
1724
+ */
1725
+ _currentUserId: string,
1726
+ /**
1727
+ * 北极星上传实例
1728
+ */
1729
+ _polarisReport?: PolarisHttpReporter | undefined, onTrackTrouble?: Function | undefined,
1730
+ /**
1731
+ * store 实例
1732
+ */
1733
+ _store?: ReadableStore | undefined,
1734
+ /**
1735
+ * 是否是房间内观众
1736
+ */
1737
+ _isRoomAudience?: boolean, _initOptions?: IRCRTCInitOptions | undefined);
1738
+ getName(): string;
1739
+ getLocalTracks(): RCLocalTrack[];
1740
+ private _onConnectionStateChange;
1741
+ private startAutoExecute;
1742
+ private stopAutoExecute;
1743
+ private _onICEConnectionStateChange;
1744
+ private _onTrackReady;
1745
+ /**
1746
+ * 它设置对等连接的比特率。
1747
+ * @deprecated use RCLocalTrack.setBitrate instead of setBitrate
1748
+ */
1749
+ setBitrate(max: number, min: number, start?: number): Promise<void>;
1750
+ /**
1751
+ * `createOffer` 是一个创建报价并记录报价 SDP 和 SDP 语义的函数
1752
+ * @param {boolean} iceRestart - 布尔值
1753
+ * @returns 具有两个属性的对象:
1754
+ * - sdp:SDP 字符串
1755
+ * - 语义:SDP 语义
1756
+ */
1757
+ createOffer(iceRestart: boolean): Promise<IOfferInfo>;
1758
+ setRemoteAnswer(answer: string): Promise<RCRTCCode>;
1759
+ getLocalTrack(trackId: string): RCLocalTrack | null;
1760
+ /**
1761
+ * 它将本地轨道添加到对等连接。
1762
+ * @param {RCLocalTrack} track - 要添加的本地轨道。
1763
+ */
1764
+ addLocalTrack(track: RCLocalTrack): void;
1765
+ /**
1766
+ * 按 ID 删除本地轨道
1767
+ * @param {string} trackId - 要移除的轨道的 ID。
1768
+ * @returns 正在删除的轨道。
1769
+ */
1770
+ removeLocalTrackById(trackId: string): void;
1771
+ /**
1772
+ * 它会删除所有本地Track。
1773
+ */
1774
+ removeAllLocalTrack(): void;
1775
+ /**
1776
+ * 从对等连接中删除本地轨道。
1777
+ * @param {RCLocalTrack} track - 要删除的本地轨道。
1778
+ */
1779
+ removeLocalTrack(track: RCLocalTrack): void;
1780
+ private _updateRecvTransceiverMap;
1781
+ updateSubRemoteTracks(remoteTracks: RCRemoteTrack[]): void;
1782
+ /**
1783
+ * 获取当前已发布视频流信息
1784
+ */
1785
+ getOutboundVideoInfo(): OutboundVideoInfo[];
1786
+ private _onLocalTrackMuted;
1787
+ private _onLocalTrackDestroied;
1788
+ private _reportListener;
1789
+ /**
1790
+ * 注册连接数据监控,开启质量数据上报定时器
1791
+ * @param listener
1792
+ */
1793
+ registerReportListener(listener: IRCRTCReportListener | null): void;
1794
+ private _createRCRTCStateReport;
1795
+ /**
1796
+ * 获取 peerConnection stats 数据并格式化
1797
+ * @returns 返回格式化后的数据
1798
+ */
1799
+ private _getStatsData;
1800
+ getAudioLevelReportData(gap?: number): Promise<{
1801
+ trackId: string;
1802
+ audioLevel: number | null;
1803
+ }[] | undefined>;
1804
+ /**
1805
+ * 通知用户质量数据、peerConnection 北极星数据上报
1806
+ * @todo
1807
+ */
1808
+ private _reportHandle;
1809
+ /**
1810
+ * 获取合流音源信息
1811
+ */
1812
+ private _getLiveAudioState;
1813
+ /**
1814
+ * 获取缓存的本地质量数据
1815
+ */
1816
+ _getCacheStatsData(): Promise<IInnerRCRTCStateReport | undefined>;
1817
+ /**
1818
+ * 北极星上报 R3、R4 数据
1819
+ */
1820
+ private _sendR3R4Data;
1821
+ /**
1822
+ * 2s 给北极星上报一次 R3、R4
1823
+ */
1824
+ __reportR3R4ToPolaris(): Promise<void>;
1825
+ getRTCPeerConn(): RTCPeerConnection;
1826
+ /**
1827
+ * 它返回一个 RTCRtpCodecCapability 对象数组,第一个元素是与传入的编码器类型匹配的元素
1828
+ * @param {RCEncoder} encoder - RCEncoder.H264
1829
+ * @returns 正在返回 RTCRtpCodecCapability[] 数组。
1830
+ */
1831
+ private getCapabilitiesCodes;
1832
+ /**
1833
+ * 它为视频流设置编码器首选项。
1834
+ * @param {RCEncoder} [encoder] - RC编码器
1835
+ */
1836
+ setEncoderPreferences(encoder?: RCEncoder): Promise<void>;
1837
+ destroy(): void;
1838
+ clearReTryExchangeTimer(): void;
1839
+ isDestroyed(): boolean;
1840
+ /**
1841
+ * 视频不可使用的收集器
1842
+ */
1843
+ private troubleTracksCollection;
1844
+ private setTroubleTrack;
1845
+ }
1846
+
1717
1847
  /**
1718
1848
  * 直播间类型
1719
1849
  */
@@ -1740,6 +1870,31 @@ declare enum RCCommandKind {
1740
1870
  AsyncCommand = "AsyncCommand"
1741
1871
  }
1742
1872
 
1873
+ declare enum CommandPriority {
1874
+ LOW = 0,
1875
+ NORMAL = 1,
1876
+ HIGH = 2
1877
+ }
1878
+ /**
1879
+ * 命令基类
1880
+ */
1881
+ declare abstract class BaseCommand<RES, STORE = Store> {
1882
+ /**
1883
+ * 执行指令
1884
+ * @param store
1885
+ */
1886
+ abstract execute(store: STORE, invoker: BaseInvoker<STORE>): Promise<RES>;
1887
+ /**
1888
+ * 获取指令优先级,必要时可 override 此函数
1889
+ */
1890
+ get priority(): CommandPriority;
1891
+ /**
1892
+ * 它返回命令的种类。
1893
+ * @returns 命令的种类。
1894
+ */
1895
+ get kind(): RCCommandKind;
1896
+ }
1897
+
1743
1898
  declare class RCRTCPeerCManager {
1744
1899
  /**
1745
1900
  * 是否使用多 peerConnection
@@ -1761,6 +1916,14 @@ declare class RCRTCPeerCManager {
1761
1916
  * 北极星上报模块
1762
1917
  */
1763
1918
  private readonly _polarisReport?;
1919
+ /**
1920
+ * 是否是房间内观众
1921
+ */
1922
+ private readonly _isRoomAudience?;
1923
+ /**
1924
+ * context
1925
+ */
1926
+ protected readonly _initOptions?: IRCRTCInitOptions | undefined;
1764
1927
  /**
1765
1928
  * 存储创建的所有 peerC,key 为 pcName,/exchange 请求中 request header 中的 Peer-Connection-Id 值
1766
1929
  */
@@ -1786,7 +1949,15 @@ declare class RCRTCPeerCManager {
1786
1949
  /**
1787
1950
  * 北极星上报模块
1788
1951
  */
1789
- _polarisReport?: PolarisHttpReporter | undefined);
1952
+ _polarisReport?: PolarisHttpReporter | undefined,
1953
+ /**
1954
+ * 是否是房间内观众
1955
+ */
1956
+ _isRoomAudience?: boolean | undefined,
1957
+ /**
1958
+ * context
1959
+ */
1960
+ _initOptions?: IRCRTCInitOptions | undefined);
1790
1961
  get useMutilPeerC(): boolean;
1791
1962
  /**
1792
1963
  * 根据 track 判断是否为上行
@@ -1897,109 +2068,11 @@ declare class RCRTCPeerCManager {
1897
2068
  * 销毁资源
1898
2069
  */
1899
2070
  clear(): void;
1900
- }
1901
-
1902
- declare abstract class ReadableStore {
1903
- readonly context: RTCContext;
1904
- readonly service: RCMediaService;
1905
- readonly peerMgr: RCRTCPeerCManager;
1906
- readonly roomId: string;
1907
- readonly crtUserId: string;
1908
- readonly roomMode: RTCMode;
1909
- readonly polarisReport: PolarisHttpReporter;
1910
- readonly isUpgrade?: boolean | undefined;
1911
- readonly isMainRoom?: boolean | undefined;
1912
2071
  /**
1913
- * 房间资源数据
2072
+ * 需从 store 中获取 peerConnection 质量数据中的 resourceId
1914
2073
  */
1915
- protected _roomResources: RoomData;
1916
- /**
1917
- * 远端 track
1918
- */
1919
- protected _remoteTracks: {
1920
- [trackId: string]: RCRemoteAudioTrack | RCRemoteVideoTrack;
1921
- };
1922
- /**
1923
- * 已订阅参数
1924
- */
1925
- protected _subscribedList: ISubscribeAttr[];
1926
- protected _collectSubscribeList: ISubscribeAttr[];
1927
- /**
1928
- * 与 MediaServer 交互需要的 token 信息
1929
- */
1930
- protected _token: string;
1931
- /**
1932
- * 每次加入房间后都会改变
1933
- */
1934
- protected _sessionId: string;
1935
- /**
1936
- * cdn_uris 信令扩散数据
1937
- */
1938
- protected _CDNUris: ICDNUris | null;
1939
- protected _CDNEnable: boolean;
1940
- protected _destroyed: boolean;
1941
- protected _roomStatusVersion: number;
1942
- constructor(context: RTCContext, service: RCMediaService, peerMgr: RCRTCPeerCManager, roomId: string, crtUserId: string, roomMode: RTCMode, polarisReport: PolarisHttpReporter, isUpgrade?: boolean | undefined, isMainRoom?: boolean | undefined);
1943
- get useMutilPeerC(): boolean;
1944
- getResourcesByUserId(userId: string): IPublishedResource[] | undefined;
1945
- getRemoteTrack(trackId: string): RCRemoteTrack | undefined;
1946
- getRemoteTracksByUserId(userId: string): RCRemoteTrack[];
1947
- getRemoteTracks(): {
1948
- [trackId: string]: RCRemoteAudioTrack | RCRemoteVideoTrack;
1949
- };
1950
- getSessionId(): string;
1951
- getAllUserIds(): string[];
1952
- getRemoteUserIds(): string[];
1953
- getSubscribedList(): ISubscribeAttr[];
1954
- getCollectSubscribeList(): ISubscribeAttr[];
1955
- getPublishedResourceByTrackId(trackId: string): IPublishedResource | undefined;
1956
- getToken(): string;
1957
- getLocalTrack(trackId: string): RCLocalTrack | null;
1958
- getLocalTracks(): RCLocalTrack[];
1959
- getTrackState(trackId: string): 0 | 1;
1960
- getCDNEnable(): boolean;
1961
- getCDNUris(): ICDNUris | null;
1962
- getRoomStatusVersion(): number;
1963
- }
1964
- declare class Store extends ReadableStore {
1965
- private _initRemoteTracks;
1966
- initWithRoomData(data: IJoinRTCRoomData, traceId: string): void;
1967
- assignRoomData(data: RoomData): void;
1968
- setResourcesByUserId(userId: string, arr: IPublishedResource[]): void;
1969
- removeRemoteTrack(trackId: string): void;
1970
- removeResourcesByUserId(userId: string): void;
1971
- addRemoteTrack(track: RCRemoteTrack): void;
1972
- removeRemoteTracks(): void;
1973
- setCDNEnabel(bool: boolean): void;
1974
- setCDNUris(uris: ICDNUris | null): void;
1975
- resetSubscribedList(subscribeList: ISubscribeAttr[]): void;
1976
- resetCollectSubscribeList(collectSubscribeList: ISubscribeAttr[]): void;
1977
- setRoomStatusVersion(version: number): void;
1978
- }
1979
-
1980
- declare enum CommandPriority {
1981
- LOW = 0,
1982
- NORMAL = 1,
1983
- HIGH = 2
1984
- }
1985
- /**
1986
- * 命令基类
1987
- */
1988
- declare abstract class BaseCommand<RES, STORE = Store> {
1989
- /**
1990
- * 执行指令
1991
- * @param store
1992
- */
1993
- abstract execute(store: STORE, invoker: BaseInvoker<STORE>): Promise<RES>;
1994
- /**
1995
- * 获取指令优先级,必要时可 override 此函数
1996
- */
1997
- get priority(): CommandPriority;
1998
- /**
1999
- * 它返回命令的种类。
2000
- * @returns 命令的种类。
2001
- */
2002
- get kind(): RCCommandKind;
2074
+ private _store;
2075
+ setStore(store: ReadableStore): void;
2003
2076
  }
2004
2077
 
2005
2078
  declare class BaseInvoker<STORE> {
@@ -2713,6 +2786,8 @@ declare class RCAudienceLivingRoom {
2713
2786
  private _peerCManager;
2714
2787
  private _isPulling;
2715
2788
  private _pullTime;
2789
+ private _store;
2790
+ private _crtUserId;
2716
2791
  constructor(_context: RTCContext, _runtime: IRuntime, _initOptions: IRCRTCInitOptions, _roomId: string, _joinResData: {
2717
2792
  token: string;
2718
2793
  kvEntries: IServerRTCRoomEntry[];
@@ -2927,231 +3002,211 @@ declare enum PolarisRole {
2927
3002
  declare class PolarisReporter {
2928
3003
  private readonly _context;
2929
3004
  private readonly _runtime;
2930
- private readonly _roomId;
2931
- private readonly _crtRTCRoom;
2932
- private readonly _userRole;
2933
- constructor(_context: RTCContext, _runtime: IRuntime, _roomId: string, _crtRTCRoom: RCAbstractRoom | RCAudienceLivingRoom, _userRole?: PolarisRole);
2934
- private _send;
2935
- private _getClientID;
2936
- /**
2937
- * 小流需去掉 _tiny,小流 resourceId 为 userId_tag_mediaType_tiny
2938
- */
2939
- private _getRealResourceId;
2940
- /**
2941
- * 生成北极星上报的 trackId
2942
- * @param resourceId userId_11_1_tiny 改为 userId_11_tiny_video
2943
- */
2944
- private _getPolarisTrackId;
2945
- sendR3R4Data(data: IInnerRCRTCStateReport): Promise<RCSendCode>;
2946
- /**
2947
- * 加入房间
2948
- */
2949
- sendR1(): void;
2950
- /**
2951
- * RTC 和 LIVE 发布、取消发布
2952
- * RTC 订阅、取消订阅
2953
- */
2954
- sendR2(action: string, status: string, trackIds: string[]): void;
2955
- }
2956
-
2957
- declare class PolarisHttpReporter {
2958
- private readonly _context;
2959
- private readonly _runtime;
2960
- private readonly _roomId;
2961
- private readonly _crtRTCRoom;
2962
- private readonly _userRole;
2963
- protected _polarisSignalReporter: PolarisReporter | null;
2964
- private _useHttp;
2965
- static logServer: string | undefined;
2966
- static dc: string | undefined;
2967
- constructor(_context: RTCContext, _runtime: IRuntime, _roomId: string, _crtRTCRoom: RCAbstractRoom | RCAudienceLivingRoom, _userRole?: PolarisRole);
2968
- private _send;
2969
- private _refetchNaviInfo;
2970
- /**
2971
- * 小流需去掉 _tiny,小流 resourceId 为 userId_tag_mediaType_tiny
2972
- */
2973
- private _getRealResourceId;
2974
- /**
2975
- * 生成北极星上报的 trackId
2976
- * @param resourceId userId_11_1_tiny 改为 userId_11_tiny_video
2977
- */
2978
- private _getPolarisTrackId;
2979
- private _formatReportBaseData;
2980
- private _formatReportData;
2981
- private _formatR1Data;
2982
- private _formatR2Data;
2983
- private _formatR3R4Data;
2984
- sendR3R4Data(data: IInnerRCRTCStateReport): Promise<RCSendCode>;
2985
- /**
2986
- * 加入房间
2987
- */
2988
- sendR1(): Promise<void>;
2989
- /**
2990
- * RTC 和 LIVE 发布、取消发布
2991
- * RTC 订阅、取消订阅
2992
- */
2993
- sendR2(action: string, status: string, trackIds: string[]): Promise<void>;
2994
- }
2995
-
2996
- declare enum RCEncoder {
2997
- VP8 = "VP8",
2998
- VP9 = "VP9",
2999
- H264 = "H264"
3000
- }
3001
-
3002
- /**
3003
- * PC 实例管理类
3004
- */
3005
- declare class RCRTCPeerConnection extends EventEmitter {
3006
- /**
3007
- * peerConnection 对应名称
3008
- */
3009
- private readonly _pcName;
3010
- /**
3011
- * _reTryExchange 方法
3012
- */
3013
- private readonly _reTryExchange;
3014
- /**
3015
- * 当前用户 id
3016
- */
3017
- private readonly _currentUserId;
3018
- /**
3019
- * 北极星上传实例
3020
- */
3021
- private readonly _polarisReport?;
3022
- private readonly onTrackTrouble?;
3023
- static __INNER_EVENT_TRACK_READY__: string;
3024
- private readonly _rtcPeerConn;
3025
- private readonly _sdpStrategy;
3026
- reportParser: IStatParser | null;
3027
- private pubLocalTracks;
3028
- private _reTryExchangeTimer;
3029
- private _reportStatsTimer;
3030
- private _reportR3R4ToPolarisTimer;
3031
- private _isDestroyed;
3032
- private _reportStatsData?;
3033
- private _originReportStatsData?;
3034
- private _logger;
3035
- constructor(
3005
+ private readonly _roomId;
3006
+ private readonly _crtRTCRoom;
3007
+ private readonly _userRole;
3008
+ constructor(_context: RTCContext, _runtime: IRuntime, _roomId: string, _crtRTCRoom: RCAbstractRoom | RCAudienceLivingRoom, _userRole?: PolarisRole);
3009
+ private _send;
3010
+ private _getClientID;
3036
3011
  /**
3037
- * peerConnection 对应名称
3038
- */
3039
- _pcName: string,
3012
+ * 小流需去掉 _tiny,小流 resourceId 为 userId_tag_mediaType_tiny
3013
+ */
3014
+ private _getRealResourceId;
3040
3015
  /**
3041
- * _reTryExchange 方法
3016
+ * 生成北极星上报的 trackId
3017
+ * @param resourceId userId_11_1_tiny 改为 userId_11_tiny_video
3042
3018
  */
3043
- _reTryExchange: Function,
3019
+ private _getPolarisTrackId;
3020
+ sendR3R4Data(data: IInnerRCRTCStateReport): Promise<RCSendCode>;
3044
3021
  /**
3045
- * 当前用户 id
3022
+ * 加入房间
3046
3023
  */
3047
- _currentUserId: string,
3024
+ sendR1(): void;
3048
3025
  /**
3049
- * 北极星上传实例
3026
+ * RTC 和 LIVE 发布、取消发布
3027
+ * RTC 订阅、取消订阅
3050
3028
  */
3051
- _polarisReport?: PolarisHttpReporter | undefined, onTrackTrouble?: Function | undefined);
3052
- getName(): string;
3053
- getLocalTracks(): RCLocalTrack[];
3054
- private _onConnectionStateChange;
3055
- private startAutoExecute;
3056
- private stopAutoExecute;
3057
- private _onICEConnectionStateChange;
3058
- private _onTrackReady;
3029
+ sendR2(action: string, status: string, trackIds: string[]): void;
3030
+ }
3031
+
3032
+ declare class PolarisHttpReporter {
3033
+ private readonly _context;
3034
+ private readonly _runtime;
3035
+ private readonly _roomId;
3036
+ private readonly _crtRTCRoom;
3037
+ private readonly _userRole;
3038
+ protected _polarisSignalReporter: PolarisReporter | null;
3039
+ private _useHttp;
3040
+ static logServer: string | undefined;
3041
+ static dc: string | undefined;
3042
+ constructor(_context: RTCContext, _runtime: IRuntime, _roomId: string, _crtRTCRoom: RCAbstractRoom | RCAudienceLivingRoom, _userRole?: PolarisRole);
3043
+ private _send;
3044
+ private _refetchNaviInfo;
3059
3045
  /**
3060
- * 它设置对等连接的比特率。
3061
- * @deprecated use RCLocalTrack.setBitrate instead of setBitrate
3046
+ * 小流需去掉 _tiny,小流 resourceId 为 userId_tag_mediaType_tiny
3062
3047
  */
3063
- setBitrate(max: number, min: number, start?: number): Promise<void>;
3048
+ private _getRealResourceId;
3064
3049
  /**
3065
- * `createOffer` 是一个创建报价并记录报价 SDP 和 SDP 语义的函数
3066
- * @param {boolean} iceRestart - 布尔值
3067
- * @returns 具有两个属性的对象:
3068
- * - sdp:SDP 字符串
3069
- * - 语义:SDP 语义
3050
+ * 生成北极星上报的 trackId
3051
+ * @param resourceId userId_11_1_tiny 改为 userId_11_tiny_video
3070
3052
  */
3071
- createOffer(iceRestart: boolean): Promise<IOfferInfo>;
3072
- setRemoteAnswer(answer: string): Promise<RCRTCCode>;
3073
- getLocalTrack(trackId: string): RCLocalTrack | null;
3053
+ private _getPolarisTrackId;
3054
+ private _formatReportBaseData;
3055
+ private _formatReportData;
3056
+ private _formatR1Data;
3057
+ private _formatR2Data;
3058
+ private _formatR3R4Data;
3059
+ sendR3R4Data(data: IInnerRCRTCStateReport): Promise<RCSendCode>;
3074
3060
  /**
3075
- * 它将本地轨道添加到对等连接。
3076
- * @param {RCLocalTrack} track - 要添加的本地轨道。
3061
+ * 加入房间
3077
3062
  */
3078
- addLocalTrack(track: RCLocalTrack): void;
3063
+ sendR1(): Promise<void>;
3079
3064
  /**
3080
- * ID 删除本地轨道
3081
- * @param {string} trackId - 要移除的轨道的 ID。
3082
- * @returns 正在删除的轨道。
3065
+ * RTC LIVE 发布、取消发布
3066
+ * RTC 订阅、取消订阅
3083
3067
  */
3084
- removeLocalTrackById(trackId: string): void;
3068
+ sendR2(action: string, status: string, trackIds: string[]): Promise<void>;
3069
+ }
3070
+
3071
+ declare abstract class ReadableStore {
3072
+ readonly context: RTCContext;
3073
+ readonly service: RCMediaService;
3074
+ readonly peerMgr: RCRTCPeerCManager;
3075
+ readonly roomId: string;
3076
+ readonly crtUserId: string;
3077
+ readonly roomMode?: RTCMode | undefined;
3078
+ readonly polarisReport?: PolarisHttpReporter | undefined;
3079
+ readonly isUpgrade?: boolean | undefined;
3080
+ readonly isMainRoom?: boolean | undefined;
3085
3081
  /**
3086
- * 它会删除所有本地Track。
3082
+ * 房间资源数据
3087
3083
  */
3088
- removeAllLocalTrack(): void;
3084
+ protected _roomResources: RoomData;
3089
3085
  /**
3090
- * 从对等连接中删除本地轨道。
3091
- * @param {RCLocalTrack} track - 要删除的本地轨道。
3086
+ * 远端 track
3092
3087
  */
3093
- removeLocalTrack(track: RCLocalTrack): void;
3094
- private _updateRecvTransceiverMap;
3095
- updateSubRemoteTracks(remoteTracks: RCRemoteTrack[]): void;
3088
+ protected _remoteTracks: {
3089
+ [trackId: string]: RCRemoteAudioTrack | RCRemoteVideoTrack;
3090
+ };
3096
3091
  /**
3097
- * 获取当前已发布视频流信息
3092
+ * 已订阅参数
3098
3093
  */
3099
- getOutboundVideoInfo(): OutboundVideoInfo[];
3100
- private _onLocalTrackMuted;
3101
- private _onLocalTrackDestroied;
3102
- private _reportListener;
3094
+ protected _subscribedList: ISubscribeAttr[];
3095
+ protected _collectSubscribeList: ISubscribeAttr[];
3103
3096
  /**
3104
- * 注册连接数据监控,开启质量数据上报定时器
3105
- * @param listener
3097
+ * 与 MediaServer 交互需要的 token 信息
3106
3098
  */
3107
- registerReportListener(listener: IRCRTCReportListener | null): void;
3108
- private _createRCRTCStateReport;
3099
+ protected _token: string;
3109
3100
  /**
3110
- * 获取 peerConnection stats 数据并格式化
3111
- * @returns 返回格式化后的数据
3101
+ * 每次加入房间后都会改变
3112
3102
  */
3113
- private _getStatsData;
3114
- getAudioLevelReportData(gap?: number): Promise<{
3115
- trackId: string;
3116
- audioLevel: number | null;
3117
- }[] | undefined>;
3103
+ protected _sessionId: string;
3118
3104
  /**
3119
- * 通知用户质量数据、peerConnection 北极星数据上报
3120
- * @todo
3105
+ * cdn_uris 信令扩散数据
3121
3106
  */
3122
- private _reportHandle;
3107
+ protected _CDNUris: ICDNUris | null;
3108
+ protected _CDNEnable: boolean;
3109
+ protected _destroyed: boolean;
3123
3110
  /**
3124
- * 获取缓存的本地质量数据
3111
+ * 存储 ssrc-trackId 的 map
3125
3112
  */
3126
- _getCacheStatsData(): IInnerRCRTCStateReport | null | undefined;
3113
+ protected _trackIdSSRCMap: Map<number, string>;
3114
+ protected _roomStatusVersion: number;
3115
+ constructor(context: RTCContext, service: RCMediaService, peerMgr: RCRTCPeerCManager, roomId: string, crtUserId: string, roomMode?: RTCMode | undefined, polarisReport?: PolarisHttpReporter | undefined, isUpgrade?: boolean | undefined, isMainRoom?: boolean | undefined);
3116
+ get useMutilPeerC(): boolean;
3117
+ getResourcesByUserId(userId: string): IPublishedResource[] | undefined;
3118
+ getRemoteTrack(trackId: string): RCRemoteTrack | undefined;
3119
+ getRemoteTracksByUserId(userId: string): RCRemoteTrack[];
3120
+ getRemoteTracks(): {
3121
+ [trackId: string]: RCRemoteAudioTrack | RCRemoteVideoTrack;
3122
+ };
3123
+ getSessionId(): string;
3124
+ getAllUserIds(): string[];
3125
+ getRemoteUserIds(): string[];
3126
+ getSubscribedList(): ISubscribeAttr[];
3127
+ getCollectSubscribeList(): ISubscribeAttr[];
3128
+ getPublishedResourceByTrackId(trackId: string): IPublishedResource | undefined;
3129
+ getToken(): string;
3130
+ getLocalTrack(trackId: string): RCLocalTrack | null;
3131
+ getLocalTracks(): RCLocalTrack[];
3132
+ getTrackState(trackId: string): 0 | 1;
3133
+ getCDNEnable(): boolean;
3134
+ getCDNUris(): ICDNUris | null;
3135
+ getRoomStatusVersion(): number;
3136
+ getTrackIdBySSRC(ssrc: number): string | undefined;
3137
+ }
3138
+ declare class Store extends ReadableStore {
3127
3139
  /**
3128
- * 北极星上报 R3、R4 数据
3140
+ * 更新房间内 ssrc-trackId 的 map
3129
3141
  */
3130
- private _sendR3R4Data;
3142
+ private _updateTrackIdSSRCMap;
3143
+ setTrackIdSSRCMap(ssrc: number, trackId: string): void;
3144
+ private _initRemoteTracks;
3145
+ initWithRoomData(data: IJoinRTCRoomData, traceId: string): void;
3146
+ assignRoomData(data: RoomData): void;
3147
+ setResourcesByUserId(userId: string, arr: IPublishedResource[]): void;
3148
+ removeRemoteTrack(trackId: string): void;
3149
+ removeResourcesByUserId(userId: string): void;
3150
+ addRemoteTrack(track: RCRemoteTrack): void;
3151
+ removeRemoteTracks(): void;
3152
+ setCDNEnabel(bool: boolean): void;
3153
+ setCDNUris(uris: ICDNUris | null): void;
3154
+ resetSubscribedList(subscribeList: ISubscribeAttr[]): void;
3155
+ resetCollectSubscribeList(collectSubscribeList: ISubscribeAttr[]): void;
3156
+ setRoomStatusVersion(version: number): void;
3157
+ }
3158
+
3159
+ declare type ISdpSemantics = 'plan-b' | 'unified-plan';
3160
+ interface IOfferInfo {
3161
+ type: 'offer';
3162
+ sdp: string;
3163
+ semantics: ISdpSemantics;
3164
+ }
3165
+ declare type OutboundVideoInfo = {
3166
+ trackId: string;
3167
+ simulcast: RCStreamType;
3168
+ resolution: string;
3169
+ };
3170
+
3171
+ declare enum RCInnerCDNPullKind {
3172
+ RTMP = "rtmp",
3173
+ FLV = "flv",
3174
+ HLS = "hls"
3175
+ }
3176
+
3177
+ declare enum RCInnerCDNPullIsHttps {
3178
+ NOT_HTTPS = 0,
3179
+ HTTPS = 1
3180
+ }
3181
+
3182
+ declare enum RCKickReason {
3131
3183
  /**
3132
- * 2s 给北极星上报一次 R3、R4
3184
+ * Server 主动踢(掉 Server API 踢出)
3133
3185
  */
3134
- __reportR3R4ToPolaris(): Promise<void>;
3135
- getRTCPeerConn(): RTCPeerConnection;
3186
+ SERVER_KICK = 1,
3136
3187
  /**
3137
- * 它返回一个 RTCRtpCodecCapability 对象数组,第一个元素是与传入的编码器类型匹配的元素
3138
- * @param {RCEncoder} encoder - RCEncoder.H264
3139
- * @returns 正在返回 RTCRtpCodecCapability[] 数组。
3188
+ * 其他设备登陆后,本端被踢
3140
3189
  */
3141
- private getCapabilitiesCodes;
3190
+ OTHER_KICK = 2
3191
+ }
3192
+
3193
+ declare enum RCRTCPingResult {
3194
+ SUCCESS = "Success",
3195
+ FAIL = "Fail"
3196
+ }
3197
+
3198
+ /**
3199
+ * 直播角色
3200
+ */
3201
+ declare enum RCRTCLiveRole {
3142
3202
  /**
3143
- * 它为视频流设置编码器首选项。
3144
- * @param {RCEncoder} [encoder] - RC编码器
3203
+ * 主播降级
3145
3204
  */
3146
- setEncoderPreferences(encoder?: RCEncoder): Promise<void>;
3147
- destroy(): void;
3148
- clearReTryExchangeTimer(): void;
3149
- isDestroyed(): boolean;
3205
+ ANCHOR = 1,
3150
3206
  /**
3151
- * 视频不可使用的收集器
3207
+ * 观众升级
3152
3208
  */
3153
- private troubleTracksCollection;
3154
- private setTroubleTrack;
3209
+ AUDIENCE = 2
3155
3210
  }
3156
3211
 
3157
3212
  /**
@@ -3383,6 +3438,7 @@ interface IInnerIcePair extends IRCCandidatePairStat {
3383
3438
  * 上、下行总丢包率
3384
3439
  */
3385
3440
  totalPacketsLost?: number;
3441
+ [key: string]: any;
3386
3442
  }
3387
3443
  /**
3388
3444
  * send track 所有字段
@@ -3473,6 +3529,23 @@ interface IRCRTCStateReport {
3473
3529
  */
3474
3530
  receivers: IRCTrackStat[];
3475
3531
  }
3532
+ /**
3533
+ * 合流音源数据
3534
+ */
3535
+ interface ILiveAudioState {
3536
+ /**
3537
+ * 用户 id
3538
+ */
3539
+ userId: string;
3540
+ /**
3541
+ * 资源 trackId
3542
+ */
3543
+ trackId: string;
3544
+ /**
3545
+ * 音量 0-100
3546
+ */
3547
+ audioLevel: number;
3548
+ }
3476
3549
  /**
3477
3550
  * http3 北极星上报基础数据
3478
3551
  */
@@ -3710,6 +3783,10 @@ interface IRCRTCReportListener {
3710
3783
  * @deprecated
3711
3784
  */
3712
3785
  onConnectionStateChange?(state: RTCPeerConnectionState, pcName?: string): void;
3786
+ /**
3787
+ * 上报合流音源数据
3788
+ */
3789
+ onReportLiveAudioStates?(data: ILiveAudioState[]): void;
3713
3790
  }
3714
3791
  interface IRCRTCTrackEventListener {
3715
3792
  /**
@@ -3861,6 +3938,10 @@ interface IRCRTCInitOptions {
3861
3938
  workletWasm?: string;
3862
3939
  isOpen?: boolean;
3863
3940
  };
3941
+ /**
3942
+ * 大会议场景下的北极星节流阀
3943
+ */
3944
+ polarisThrottle?: boolean;
3864
3945
  }
3865
3946
  interface ICameraVideoProfile extends IVideoProfile {
3866
3947
  cameraId?: string;
@@ -4425,7 +4506,7 @@ declare class RCRTCRoom extends RCAbstractRoom {
4425
4506
  * @param {boolean} [useMutilPeerC] - 是否使用多个 peerConnections
4426
4507
  * @param {string} [_clientSessionId] - 当前房间的clientSessionId,用于区分当前房间和其他房间。
4427
4508
  * @param {RTCMode} roomType - RTCMode = RTCMode.RTC,
4428
- * @param {number} signalRetryTime - 重新连接信令服务器的时间间隔。
4509
+ * @param {number} signalRetryTime - 连接信令服务器的超时时。
4429
4510
  */
4430
4511
  constructor(context: RTCContext, runtime: IRuntime, roomId: string, service: RCMediaService, initOptions: IRCRTCInitOptions, isUpgrade?: boolean, isMainRoom?: boolean,
4431
4512
  /**
@@ -4457,6 +4538,10 @@ declare class RCAudienceClient {
4457
4538
  * 已订阅的远端流
4458
4539
  */
4459
4540
  private readonly _subTracks;
4541
+ /**
4542
+ * 订阅的远端资源
4543
+ */
4544
+ private _subscribedList;
4460
4545
  /**
4461
4546
  * 客户端传入的数据上报事件
4462
4547
  */
@@ -4470,6 +4555,8 @@ declare class RCAudienceClient {
4470
4555
  */
4471
4556
  private _peerCManager;
4472
4557
  private readonly _clientSessionId;
4558
+ private _store;
4559
+ private _crtUserId;
4473
4560
  constructor(_context: RTCContext, runtime: IRuntime, _initOption: IRCRTCInitOptions,
4474
4561
  /**
4475
4562
  * 是否使用多 peerConnection
@@ -4494,6 +4581,10 @@ declare class RCAudienceClient {
4494
4581
  tracks: RCRemoteTrack[];
4495
4582
  }>;
4496
4583
  private __subscribe;
4584
+ /**
4585
+ * 处理订阅流的 ssrc 和 trackId map
4586
+ */
4587
+ private _updateTrackIdSSRCMap;
4497
4588
  /**
4498
4589
  * 取消订阅主播资源
4499
4590
  * @param liveUrl
@@ -4670,7 +4761,7 @@ declare class RCRTCClient extends RCMediaStreamCapture {
4670
4761
  * @param {IRTCUserData} [outerUserDatas] - 加入房间的用户的用户数据。
4671
4762
  * @param {boolean} [useMutilPeerC] - 是否使用多点连接,默认为false,即使用单点连接。
4672
4763
  * @param {RTCMode} roomType - RTCMode = RTCMode.RTC,
4673
- * @param {number} signalRetryTime - 重新连接信令服务器的时间间隔。
4764
+ * @param {number} signalRetryTime - 连接信令服务器的超时时间。
4674
4765
  */
4675
4766
  joinRTCRoom(roomId: string, joinType?: RTCJoinType, outerUserDatas?: IRTCUserData, useMutilPeerC?: boolean, roomType?: RTCMode, signalRetryTime?: number): Promise<{
4676
4767
  room?: RCRTCRoom;
@@ -4826,4 +4917,4 @@ declare const helper: {
4826
4917
  ifSupportScreenShare: typeof ifSupportScreenShare;
4827
4918
  };
4828
4919
 
4829
- export { BackgroundPictureFillMode, IAudienceRoomEventListener, ICameraVideoProfile, IMCUOutputConfig, IMCUOutputVideoConfig, IMicphoneAudioProfile, IPKEndInfo, IPKInviteAnswerInfo, IPKInviteInfo, IPubSuccessRes, IPublishAttrs, IPublishedResource, IRCCandidatePairStat, IRCRTCInitOptions, IRCRTCReportListener, IRCRTCStateReport, IRCTrackStat, IReqResPKOptions, IRoomEventListener, IRoomPKEventListener, ISubscribeAttr, IVideoProfile, MixLayoutMode, MixVideoRenderMode, RCAbstractRoom, RCAudienceClient, RCAudienceLivingRoom, RCAudioBitrate, RCCameraVideoTrack, RCFrameRate, RCInnerCDNPullIsHttps, RCInnerCDNPullKind, RCKickReason, RCLivingRoom, RCLivingType, RCLocalAudioTrack, RCLocalFileAudioTrack, RCLocalFileTrack, RCLocalFileVideoTrack, RCLocalTrack, RCLocalVideoTrack, RCMCUConfigBuilder, RCMediaStreamCapture, RCMediaType, RCMicphoneAudioTrack, RCRTCClient, RCRTCCode, RCRTCLiveRole, RCRTCPingResult, RCRTCRoom, RCRemoteAudioTrack, RCRemoteTrack, RCRemoteVideoTrack, RCResolution, RCScreenAudioTrack, RCScreenVideoTrack, RCTag, RCTrack, RCVideoBitrate, RTCJoinType, device, helper, installer };
4920
+ export { BackgroundPictureFillMode, IAudienceRoomEventListener, ICameraVideoProfile, ILiveAudioState, IMCUOutputConfig, IMCUOutputVideoConfig, IMicphoneAudioProfile, IPKEndInfo, IPKInviteAnswerInfo, IPKInviteInfo, IPubSuccessRes, IPublishAttrs, IPublishedResource, IRCCandidatePairStat, IRCRTCInitOptions, IRCRTCReportListener, IRCRTCStateReport, IRCTrackStat, IReqResPKOptions, IRoomEventListener, IRoomPKEventListener, ISubscribeAttr, IVideoProfile, MixLayoutMode, MixVideoRenderMode, RCAbstractRoom, RCAudienceClient, RCAudienceLivingRoom, RCAudioBitrate, RCCameraVideoTrack, RCFrameRate, RCInnerCDNPullIsHttps, RCInnerCDNPullKind, RCKickReason, RCLivingRoom, RCLivingType, RCLocalAudioTrack, RCLocalFileAudioTrack, RCLocalFileTrack, RCLocalFileVideoTrack, RCLocalTrack, RCLocalVideoTrack, RCMCUConfigBuilder, RCMediaStreamCapture, RCMediaType, RCMicphoneAudioTrack, RCRTCClient, RCRTCCode, RCRTCLiveRole, RCRTCPingResult, RCRTCRoom, RCRemoteAudioTrack, RCRemoteTrack, RCRemoteVideoTrack, RCResolution, RCScreenAudioTrack, RCScreenVideoTrack, RCTag, RCTrack, RCVideoBitrate, RTCJoinType, device, helper, installer };