trtc-electron-sdk 12.1.608 → 12.2.115-alpha.19

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.
Files changed (77) hide show
  1. package/liteav/Live/Player/index.d.ts +167 -0
  2. package/liteav/Live/Player/index.js +376 -0
  3. package/liteav/Live/Pusher/index.d.ts +350 -0
  4. package/liteav/Live/Pusher/index.js +641 -0
  5. package/liteav/Live/converter.d.ts +4 -0
  6. package/liteav/Live/converter.js +30 -0
  7. package/liteav/Live/live_define.d.ts +312 -0
  8. package/liteav/Live/live_define.js +554 -0
  9. package/liteav/Live/video-render.d.ts +21 -0
  10. package/liteav/Live/video-render.js +92 -0
  11. package/liteav/LocalMediaTranscoder/index.d.ts +24 -132
  12. package/liteav/LocalMediaTranscoder/index.js +111 -133
  13. package/liteav/LocalMediaTranscoder/types.d.ts +159 -0
  14. package/liteav/LocalMediaTranscoder/types.js +134 -0
  15. package/liteav/MediaMixingDesigner/Movable.d.ts +26 -0
  16. package/liteav/MediaMixingDesigner/Movable.js +162 -0
  17. package/liteav/MediaMixingDesigner/Resizable.d.ts +48 -0
  18. package/liteav/MediaMixingDesigner/Resizable.js +501 -0
  19. package/liteav/MediaMixingDesigner/index.d.ts +71 -0
  20. package/liteav/MediaMixingDesigner/index.js +498 -0
  21. package/liteav/Renderer/VideoRenderer/index.js +7 -2
  22. package/liteav/Renderer/util.d.ts +1 -1
  23. package/liteav/Renderer/util.js +1 -1
  24. package/liteav/VideoRenderControl/VideoRenderFPSMonitor.d.ts +2 -1
  25. package/liteav/VideoRenderControl/VideoRenderFPSMonitor.js +27 -14
  26. package/liteav/base/PromiseStore.d.ts +10 -0
  27. package/liteav/base/PromiseStore.js +58 -0
  28. package/liteav/constant.d.ts +1 -0
  29. package/liteav/constant.js +4 -0
  30. package/liteav/extensions/AudioEffectManager/index.d.ts +239 -0
  31. package/liteav/extensions/AudioEffectManager/index.js +428 -0
  32. package/liteav/extensions/DeviceManager/index.d.ts +83 -0
  33. package/liteav/extensions/DeviceManager/index.js +504 -0
  34. package/liteav/extensions/MediaMixingManager/MediaMixingManager.d.ts +427 -0
  35. package/liteav/extensions/MediaMixingManager/MediaMixingManager.js +1262 -0
  36. package/liteav/extensions/MediaMixingManager/MediaMixingService.d.ts +60 -0
  37. package/liteav/extensions/MediaMixingManager/MediaMixingService.js +80 -0
  38. package/liteav/extensions/MediaMixingManager/StreamLayout/BaseStreamLayoutManager.d.ts +31 -0
  39. package/liteav/extensions/MediaMixingManager/StreamLayout/BaseStreamLayoutManager.js +106 -0
  40. package/liteav/extensions/MediaMixingManager/StreamLayout/CustomStreamLayoutManager.d.ts +11 -0
  41. package/liteav/extensions/MediaMixingManager/StreamLayout/CustomStreamLayoutManager.js +119 -0
  42. package/liteav/extensions/MediaMixingManager/StreamLayout/NoneStreamLayoutManager.d.ts +11 -0
  43. package/liteav/extensions/MediaMixingManager/StreamLayout/NoneStreamLayoutManager.js +73 -0
  44. package/liteav/extensions/MediaMixingManager/StreamLayout/index.d.ts +7 -0
  45. package/liteav/extensions/MediaMixingManager/StreamLayout/index.js +34 -0
  46. package/liteav/extensions/MediaMixingManager/StreamLayout/types.d.ts +25 -0
  47. package/liteav/extensions/MediaMixingManager/StreamLayout/types.js +2 -0
  48. package/liteav/extensions/MediaMixingManager/index.d.ts +5 -0
  49. package/liteav/extensions/MediaMixingManager/index.js +33 -0
  50. package/liteav/extensions/MediaMixingManager/types.d.ts +107 -0
  51. package/liteav/extensions/MediaMixingManager/types.js +26 -0
  52. package/liteav/extensions/PluginManager/index.d.ts +53 -0
  53. package/liteav/extensions/PluginManager/index.js +185 -0
  54. package/liteav/index.d.ts +14 -0
  55. package/liteav/index.js +29 -0
  56. package/liteav/trtc.d.ts +473 -45
  57. package/liteav/trtc.js +758 -167
  58. package/liteav/trtc_define.d.ts +129 -9
  59. package/liteav/trtc_define.js +372 -78
  60. package/liteav/utils.d.ts +37 -0
  61. package/liteav/utils.js +133 -0
  62. package/package.json +4 -4
  63. package/scripts/copy-sdk.js +2 -2
  64. package/scripts/download.js +153 -169
  65. package/scripts/prerelase.js +19 -7
  66. package/liteav/Render/BGRAVideoRenderer/index.js +0 -114
  67. package/liteav/Render/Canvas3DRGBARenderer/index.js +0 -241
  68. package/liteav/Render/GlRenderer/index.js +0 -439
  69. package/liteav/Render/GlRenderer/webgl-utils.js +0 -1337
  70. package/liteav/Render/I420VideoRenderer/index.js +0 -106
  71. package/liteav/Render/RGBAVideoRenderer/index.js +0 -115
  72. package/liteav/Render/RGBRenderer/index.js +0 -112
  73. package/liteav/Render/SoftwareRenderer/index.js +0 -153
  74. package/liteav/Render/index.d.ts +0 -58
  75. package/liteav/Render/index.js +0 -63
  76. package/liteav/Render/util.d.ts +0 -46
  77. package/liteav/Render/util.js +0 -140
@@ -0,0 +1,167 @@
1
+ import { V2LiveRotation, V2LiveFillMode, V2LivePlayerEvent } from '../live_define';
2
+ /**
3
+ * 腾讯云直播播放器
4
+ *
5
+ * @example
6
+ *
7
+ * // 创建/销毁 V2LivePlayer 对象,以及回调事件监听。
8
+ *
9
+ * import { V2LivePlayer } from 'trtc-electron-sdk';
10
+ * const livePlayer = V2LivePlayer.createV2LivePlayer();
11
+ *
12
+ * subscribeEvents = (livePlayer) => {
13
+ * livePlayer.on('onError', (errcode, errmsg) => {
14
+ * console.info('livePlayer_demo: onError :' + errcode + " msg" + errmsg);
15
+ * });
16
+ * };
17
+ *
18
+ * V2LivePlayer.releaseV2livePlayer(livePlayer);
19
+ *
20
+ */
21
+ export declare class V2LivePlayer {
22
+ private livePlayer;
23
+ private playerVideoRender;
24
+ private pixelFormat;
25
+ private eventEmitter;
26
+ private logger;
27
+ /**
28
+ * 创建 V2LivePlayer 实例
29
+ *
30
+ * @return {V2LivePlayer} - 播放器实例
31
+ */
32
+ static createV2LivePlayer(): V2LivePlayer;
33
+ /**
34
+ * 析构 V2LivePlayer 对象
35
+ *
36
+ * @param {V2LivePlayer} livePlayer - 推流器实例
37
+ */
38
+ static releaseV2LivePlayer(livePlayer: V2LivePlayer): void;
39
+ constructor();
40
+ destroy(): void;
41
+ /**
42
+ * 监听 LivePlayer 对象事件。
43
+ *
44
+ * @param {V2LivePlayerEvent} event - 事件名称。
45
+ * @param {Function} listener - 事件回调函数。
46
+ */
47
+ on(event: V2LivePlayerEvent | symbol, listener: (...args: any[]) => void): void;
48
+ /**
49
+ * 取消监听 LivePlayer 对象事件。
50
+ *
51
+ * @param {V2LivePlayerEvent} event - 事件名称。
52
+ * @param {Function} listener - 事件回调函数。
53
+ */
54
+ off(event: V2LivePlayerEvent | symbol, listener: (...args: any[]) => void): void;
55
+ /**
56
+ * 设置播放器的视频渲染 View, 播放器的视频最终会显示到传入的 View 上。
57
+ *
58
+ * @param {HTMLElement | null} view - 播放器的视频渲染 View。
59
+ */
60
+ setRenderView(view: HTMLElement | null): void;
61
+ /**
62
+ * 设置播放器画面的旋转角度, 默认不旋转。
63
+ *
64
+ * @param {V2LiveRotation} rotation - 播放器画面的旋转角度, 参考 V2LiveRotation 的定义。
65
+ * @return {Number} - 参考 V2LiveCode 的定义
66
+ */
67
+ setRenderRotation(rotation: V2LiveRotation): number;
68
+ /**
69
+ * 设置画面的填充模式
70
+ *
71
+ * @param {V2LiveFillMode} mode - 画面填充模式,参考 V2LiveFillMode 的定义。
72
+ * @return {Number} - 参考 V2LiveCode 的定义
73
+ */
74
+ setRenderFillMode(mode: V2LiveFillMode): number;
75
+ /**
76
+ * 开始播放音视频流
77
+ *
78
+ * @param {String} url - 音视频流地址
79
+ * @return {Number} - 参考 V2LiveCode 的定义
80
+ */
81
+ startPlay(url: string): number;
82
+ /**
83
+ * 停止播放音视频流
84
+ *
85
+ * @return {Number} - 参考 V2LiveCode 的定义
86
+ */
87
+ stopPlay(): number;
88
+ /**
89
+ * 播放器是否正在播放中
90
+ *
91
+ * @return {Number} - 是否正在播放中, 1 表示正在播放中, 0 表示未在播放中
92
+ */
93
+ isPlaying(): number;
94
+ /**
95
+ * 暂停播放器的音频流
96
+ *
97
+ * @return {Number} - 参考 V2LiveCode 的定义
98
+ */
99
+ pauseAudio(): number;
100
+ /**
101
+ * 恢复播放器的音频流
102
+ *
103
+ * @return {Number} - 参考 V2LiveCode 的定义
104
+ */
105
+ resumeAudio(): number;
106
+ /**
107
+ * 暂停播放器的视频流
108
+ *
109
+ * @return {Number} - 参考 V2LiveCode 的定义
110
+ */
111
+ pauseVideo(): number;
112
+ /**
113
+ * 恢复播放器的视频流
114
+ *
115
+ * @return {Number} - 参考 V2LiveCode 的定义
116
+ */
117
+ resumeVideo(): number;
118
+ /**
119
+ * 设置播放器音量
120
+ *
121
+ * @param {Number} volume - 音量大小,取值范围0 - 100。【默认值】: 100
122
+ * @return {Number} - 参考 V2LiveCode 的定义
123
+ */
124
+ setPlayoutVolume(volume: number): number;
125
+ /**
126
+ * 设置播放器缓存自动调整的最小和最大时间
127
+ *
128
+ * @param {Number} minTime - 缓存自动调整的最小时间,取值需要大于0。【默认值】:1
129
+ * @param {Number} maxTime - 缓存自动调整的最大时间,取值需要大于0。【默认值】:5
130
+ * @return {Number} - 参考 V2LiveCode 的定义
131
+ */
132
+ setCacheParams(minTime: number, maxTime: number): number;
133
+ /**
134
+ * 直播流无缝切换,支持 FLV 和 LEB
135
+ *
136
+ * @param {String} url - 新的拉流地址
137
+ * @return {Number} - 参考 V2LiveCode 的定义
138
+ */
139
+ switchStream(newUrl: string): number;
140
+ /**
141
+ * 启用播放音量大小提示
142
+ *
143
+ * @param {Number} intervalMs - onPlayoutVolumeUpdate 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;【默认值】:0,不开启。
144
+ * @return {Number} - 参考 V2LiveCode 的定义
145
+ */
146
+ enableVolumeEvaluation(intervalMs: number): number;
147
+ private enableObserveVideoFrame;
148
+ private _createPlayerRender;
149
+ private _destroyPlayerRender;
150
+ private _setVideoRenderBuffer;
151
+ private _addVideoRenderCallback;
152
+ private _removeVideoRenderCallback;
153
+ private _playerVideoRenderCallback;
154
+ private initObserver;
155
+ fire(event: string, ...args: any): void;
156
+ private handleOnError;
157
+ private handleOnWarning;
158
+ private handleOnVideoResolutionChanged;
159
+ private handleOnConnected;
160
+ private handleOnVideoPlaying;
161
+ private handleOnAudioPlaying;
162
+ private handleOnVideoLoading;
163
+ private handleOnAudioLoading;
164
+ private handleOnPlayoutVolumeUpdate;
165
+ private handleOnStatisticsUpdate;
166
+ private handleOnStreamSwitched;
167
+ }
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.V2LivePlayer = void 0;
4
+ const events_1 = require("events");
5
+ const live_define_1 = require("../live_define");
6
+ const video_render_1 = require("../video-render");
7
+ const converter_1 = require("../converter");
8
+ const logger_1 = require("../../logger");
9
+ const NodeTRTCEngine = require('../../../build/Release/trtc_electron_sdk.node');
10
+ /**
11
+ * 腾讯云直播播放器
12
+ *
13
+ * @example
14
+ *
15
+ * // 创建/销毁 V2LivePlayer 对象,以及回调事件监听。
16
+ *
17
+ * import { V2LivePlayer } from 'trtc-electron-sdk';
18
+ * const livePlayer = V2LivePlayer.createV2LivePlayer();
19
+ *
20
+ * subscribeEvents = (livePlayer) => {
21
+ * livePlayer.on('onError', (errcode, errmsg) => {
22
+ * console.info('livePlayer_demo: onError :' + errcode + " msg" + errmsg);
23
+ * });
24
+ * };
25
+ *
26
+ * V2LivePlayer.releaseV2livePlayer(livePlayer);
27
+ *
28
+ */
29
+ class V2LivePlayer {
30
+ constructor() {
31
+ this.livePlayer = new NodeTRTCEngine.NodeV2LivePlayer();
32
+ this.initObserver();
33
+ this.playerVideoRender = null;
34
+ this.pixelFormat = live_define_1.V2LivePixelFormat.V2LivePixelFormatI420;
35
+ this.eventEmitter = new events_1.EventEmitter();
36
+ this.logger = new logger_1.Logger(`V2LivePlayer`);
37
+ this._playerVideoRenderCallback = this._playerVideoRenderCallback.bind(this);
38
+ this._createPlayerRender();
39
+ }
40
+ /**
41
+ * 创建 V2LivePlayer 实例
42
+ *
43
+ * @return {V2LivePlayer} - 播放器实例
44
+ */
45
+ static createV2LivePlayer() {
46
+ return new V2LivePlayer();
47
+ }
48
+ /**
49
+ * 析构 V2LivePlayer 对象
50
+ *
51
+ * @param {V2LivePlayer} livePlayer - 推流器实例
52
+ */
53
+ static releaseV2LivePlayer(livePlayer) {
54
+ livePlayer.destroy();
55
+ }
56
+ destroy() {
57
+ this._destroyPlayerRender();
58
+ this.livePlayer.destroy();
59
+ this.livePlayer = null;
60
+ }
61
+ /**
62
+ * 监听 LivePlayer 对象事件。
63
+ *
64
+ * @param {V2LivePlayerEvent} event - 事件名称。
65
+ * @param {Function} listener - 事件回调函数。
66
+ */
67
+ on(event, listener) {
68
+ this.eventEmitter.on(event, listener);
69
+ }
70
+ /**
71
+ * 取消监听 LivePlayer 对象事件。
72
+ *
73
+ * @param {V2LivePlayerEvent} event - 事件名称。
74
+ * @param {Function} listener - 事件回调函数。
75
+ */
76
+ off(event, listener) {
77
+ this.eventEmitter.off(event, listener);
78
+ }
79
+ /////////////////////////////////////////////////////////////////////////////////
80
+ //
81
+ // (一)LivePlayer相关接口函数
82
+ //
83
+ /////////////////////////////////////////////////////////////////////////////////
84
+ /**
85
+ * 设置播放器的视频渲染 View, 播放器的视频最终会显示到传入的 View 上。
86
+ *
87
+ * @param {HTMLElement | null} view - 播放器的视频渲染 View。
88
+ */
89
+ setRenderView(view) {
90
+ var _a;
91
+ this.logger.debug(`setRenderView view:${view}`);
92
+ (_a = this.playerVideoRender) === null || _a === void 0 ? void 0 : _a.setRenderView(view);
93
+ }
94
+ /**
95
+ * 设置播放器画面的旋转角度, 默认不旋转。
96
+ *
97
+ * @param {V2LiveRotation} rotation - 播放器画面的旋转角度, 参考 V2LiveRotation 的定义。
98
+ * @return {Number} - 参考 V2LiveCode 的定义
99
+ */
100
+ setRenderRotation(rotation) {
101
+ var _a;
102
+ this.logger.debug(`setRenderRotation rotation:${rotation}`);
103
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.setRenderRotation(rotation);
104
+ }
105
+ /**
106
+ * 设置画面的填充模式
107
+ *
108
+ * @param {V2LiveFillMode} mode - 画面填充模式,参考 V2LiveFillMode 的定义。
109
+ * @return {Number} - 参考 V2LiveCode 的定义
110
+ */
111
+ setRenderFillMode(mode) {
112
+ var _a, _b;
113
+ this.logger.debug(`setRenderFillMode mode:${mode}`);
114
+ (_a = this.playerVideoRender) === null || _a === void 0 ? void 0 : _a.setVideoFillMode((0, converter_1.convertFillModeFromLive)(mode));
115
+ return (_b = this.livePlayer) === null || _b === void 0 ? void 0 : _b.setRenderFillMode(mode);
116
+ }
117
+ /**
118
+ * 开始播放音视频流
119
+ *
120
+ * @param {String} url - 音视频流地址
121
+ * @return {Number} - 参考 V2LiveCode 的定义
122
+ */
123
+ startPlay(url) {
124
+ var _a, _b;
125
+ this.logger.debug(`startPlay url:${url}`);
126
+ (_a = this.playerVideoRender) === null || _a === void 0 ? void 0 : _a.createRender();
127
+ this._setVideoRenderBuffer();
128
+ this._addVideoRenderCallback();
129
+ this.enableObserveVideoFrame(true, this.pixelFormat, live_define_1.V2LiveBufferType.V2LiveBufferTypeByteBuffer);
130
+ return (_b = this.livePlayer) === null || _b === void 0 ? void 0 : _b.startPlay(url);
131
+ }
132
+ /**
133
+ * 停止播放音视频流
134
+ *
135
+ * @return {Number} - 参考 V2LiveCode 的定义
136
+ */
137
+ stopPlay() {
138
+ var _a, _b;
139
+ this.logger.debug(`stopPlay`);
140
+ (_a = this.playerVideoRender) === null || _a === void 0 ? void 0 : _a.destroyRender();
141
+ this._removeVideoRenderCallback();
142
+ this.enableObserveVideoFrame(false, this.pixelFormat, live_define_1.V2LiveBufferType.V2LiveBufferTypeByteBuffer);
143
+ return (_b = this.livePlayer) === null || _b === void 0 ? void 0 : _b.stopPlay();
144
+ }
145
+ /**
146
+ * 播放器是否正在播放中
147
+ *
148
+ * @return {Number} - 是否正在播放中, 1 表示正在播放中, 0 表示未在播放中
149
+ */
150
+ isPlaying() {
151
+ var _a;
152
+ this.logger.debug(`isPlaying`);
153
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.isPlaying();
154
+ }
155
+ /**
156
+ * 暂停播放器的音频流
157
+ *
158
+ * @return {Number} - 参考 V2LiveCode 的定义
159
+ */
160
+ pauseAudio() {
161
+ var _a;
162
+ this.logger.debug(`pauseAudio`);
163
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.pauseAudio();
164
+ }
165
+ /**
166
+ * 恢复播放器的音频流
167
+ *
168
+ * @return {Number} - 参考 V2LiveCode 的定义
169
+ */
170
+ resumeAudio() {
171
+ var _a;
172
+ this.logger.debug(`resumeAudio`);
173
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.resumeAudio();
174
+ }
175
+ /**
176
+ * 暂停播放器的视频流
177
+ *
178
+ * @return {Number} - 参考 V2LiveCode 的定义
179
+ */
180
+ pauseVideo() {
181
+ var _a;
182
+ this.logger.debug(`pauseVideo`);
183
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.pauseVideo();
184
+ }
185
+ /**
186
+ * 恢复播放器的视频流
187
+ *
188
+ * @return {Number} - 参考 V2LiveCode 的定义
189
+ */
190
+ resumeVideo() {
191
+ var _a;
192
+ this.logger.debug(`resumeVideo`);
193
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.resumeVideo();
194
+ }
195
+ /**
196
+ * 设置播放器音量
197
+ *
198
+ * @param {Number} volume - 音量大小,取值范围0 - 100。【默认值】: 100
199
+ * @return {Number} - 参考 V2LiveCode 的定义
200
+ */
201
+ setPlayoutVolume(volume) {
202
+ var _a;
203
+ this.logger.debug(`setPlayoutVolume volume:${volume}`);
204
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.setPlayoutVolume(volume);
205
+ }
206
+ /**
207
+ * 设置播放器缓存自动调整的最小和最大时间
208
+ *
209
+ * @param {Number} minTime - 缓存自动调整的最小时间,取值需要大于0。【默认值】:1
210
+ * @param {Number} maxTime - 缓存自动调整的最大时间,取值需要大于0。【默认值】:5
211
+ * @return {Number} - 参考 V2LiveCode 的定义
212
+ */
213
+ setCacheParams(minTime, maxTime) {
214
+ var _a;
215
+ this.logger.debug(`setCacheParams minTime:${minTime}, maxTime:${maxTime}`);
216
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.setCacheParams(minTime, maxTime);
217
+ }
218
+ /**
219
+ * 直播流无缝切换,支持 FLV 和 LEB
220
+ *
221
+ * @param {String} url - 新的拉流地址
222
+ * @return {Number} - 参考 V2LiveCode 的定义
223
+ */
224
+ switchStream(newUrl) {
225
+ var _a;
226
+ this.logger.debug(`switchStream newUrl:${newUrl}`);
227
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.switchStream(newUrl);
228
+ }
229
+ /**
230
+ * 启用播放音量大小提示
231
+ *
232
+ * @param {Number} intervalMs - onPlayoutVolumeUpdate 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;【默认值】:0,不开启。
233
+ * @return {Number} - 参考 V2LiveCode 的定义
234
+ */
235
+ enableVolumeEvaluation(intervalMs) {
236
+ var _a;
237
+ this.logger.debug(`enableVolumeEvaluation intervalMs:${intervalMs}`);
238
+ return (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.enableVolumeEvaluation(intervalMs);
239
+ }
240
+ ////////////////////////////////////////////////////////////////////////////////
241
+ //
242
+ // 内部接口
243
+ //
244
+ ////////////////////////////////////////////////////////////////////////////////
245
+ enableObserveVideoFrame(enable, pixelFormat, bufferType) {
246
+ var _a;
247
+ this.logger.debug(`enableObserveVideoFrame enable:${enable}, pixelFormat:${pixelFormat}, bufferType:${bufferType}`);
248
+ (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.enableObserveVideoFrame(enable, pixelFormat, bufferType);
249
+ }
250
+ _createPlayerRender() {
251
+ if (this.playerVideoRender !== null) {
252
+ return;
253
+ }
254
+ this.playerVideoRender = new video_render_1.VideoRender();
255
+ const trtcPixelFormat = (0, converter_1.convertPixelFormatFromLive)(this.pixelFormat);
256
+ this.playerVideoRender.setVideoPixelFormat(trtcPixelFormat);
257
+ }
258
+ _destroyPlayerRender() {
259
+ if (this.playerVideoRender) {
260
+ this.playerVideoRender.destroy();
261
+ this.playerVideoRender = null;
262
+ }
263
+ this._removeVideoRenderCallback();
264
+ this.enableObserveVideoFrame(false, this.pixelFormat, live_define_1.V2LiveBufferType.V2LiveBufferTypeByteBuffer);
265
+ }
266
+ _setVideoRenderBuffer() {
267
+ var _a;
268
+ if (this.playerVideoRender !== null) {
269
+ const videoBuffer = this.playerVideoRender.getVideoBuffer();
270
+ (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.setVideoRenderBuffer(videoBuffer.buffer, videoBuffer.width, videoBuffer.height, this.pixelFormat, videoBuffer.id);
271
+ }
272
+ }
273
+ _addVideoRenderCallback() {
274
+ var _a;
275
+ (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.addVideoRenderCallback(this._playerVideoRenderCallback);
276
+ }
277
+ _removeVideoRenderCallback() {
278
+ var _a;
279
+ (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.removeVideoRenderCallback();
280
+ }
281
+ _playerVideoRenderCallback(args) {
282
+ if (this.playerVideoRender) {
283
+ const [userId, type, width, height, timestamp, rotation, valid, bufferId] = args;
284
+ const result = this.playerVideoRender.renderVideoData(userId, type, width, height, timestamp, rotation, valid, bufferId);
285
+ if (!result) {
286
+ this._setVideoRenderBuffer();
287
+ }
288
+ }
289
+ }
290
+ initObserver() {
291
+ var _a;
292
+ (_a = this.livePlayer) === null || _a === void 0 ? void 0 : _a.setObserver((args) => {
293
+ const key = args[0];
294
+ const data = args[1];
295
+ switch (key) {
296
+ case 'onError':
297
+ this.handleOnError(data.errCode, data.errMsg);
298
+ break;
299
+ case 'onWarning':
300
+ this.handleOnWarning(data.warningCode, data.warningMsg);
301
+ break;
302
+ case 'onVideoResolutionChanged':
303
+ this.handleOnVideoResolutionChanged(data.width, data.height);
304
+ break;
305
+ case 'onConnected':
306
+ this.handleOnConnected();
307
+ break;
308
+ case 'onVideoPlaying':
309
+ this.handleOnVideoPlaying(data.firstPlay);
310
+ break;
311
+ case 'onAudioPlaying':
312
+ this.handleOnAudioPlaying(data.firstPlay);
313
+ break;
314
+ case 'onVideoLoading':
315
+ this.handleOnVideoLoading();
316
+ break;
317
+ case 'onAudioLoading':
318
+ this.handleOnAudioLoading();
319
+ break;
320
+ case 'onPlayoutVolumeUpdate':
321
+ this.handleOnPlayoutVolumeUpdate(data.volume);
322
+ break;
323
+ case 'onStatisticsUpdate':
324
+ this.handleOnStatisticsUpdate(data.statistics);
325
+ break;
326
+ case 'onStreamSwitched':
327
+ this.handleOnStreamSwitched(data.url, data.code);
328
+ break;
329
+ default:
330
+ this.logger.error(`unknown event: ${key}`);
331
+ break;
332
+ }
333
+ });
334
+ }
335
+ // Event Handler define
336
+ fire(event, ...args) {
337
+ setImmediate(() => {
338
+ var _a;
339
+ (_a = this.eventEmitter) === null || _a === void 0 ? void 0 : _a.emit(event, ...args);
340
+ });
341
+ }
342
+ handleOnError(errCode, errMsg) {
343
+ this.fire('onError', errCode, errMsg);
344
+ }
345
+ handleOnWarning(warningCode, warningMsg) {
346
+ this.fire('onWarning', warningCode, warningMsg);
347
+ }
348
+ handleOnVideoResolutionChanged(width, height) {
349
+ this.fire('onVideoResolutionChanged', width, height);
350
+ }
351
+ handleOnConnected() {
352
+ this.fire('onConnected');
353
+ }
354
+ handleOnVideoPlaying(firstPlay) {
355
+ this.fire('onVideoPlaying', firstPlay);
356
+ }
357
+ handleOnAudioPlaying(firstPlay) {
358
+ this.fire('onAudioPlaying', firstPlay);
359
+ }
360
+ handleOnVideoLoading() {
361
+ this.fire('onVideoLoading');
362
+ }
363
+ handleOnAudioLoading() {
364
+ this.fire('onAudioLoading');
365
+ }
366
+ handleOnPlayoutVolumeUpdate(volume) {
367
+ this.fire('onPlayoutVolumeUpdate', volume);
368
+ }
369
+ handleOnStatisticsUpdate(statistics) {
370
+ this.fire('onStatisticsUpdate', statistics);
371
+ }
372
+ handleOnStreamSwitched(url, code) {
373
+ this.fire('onStreamSwitched', url, code);
374
+ }
375
+ }
376
+ exports.V2LivePlayer = V2LivePlayer;