trtc-electron-sdk 13.3.800-alpha.4 → 13.3.800-alpha.6

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.
@@ -28,7 +28,6 @@ export declare class TRTCVodPlayer implements IVodPlayer {
28
28
  private nativeVodPlayer;
29
29
  private videoRender;
30
30
  private mediaFilePath;
31
- private isStarted;
32
31
  private isDestroyed;
33
32
  private isRenderPrepared;
34
33
  private _setBufferRetryCount;
@@ -103,8 +102,6 @@ export declare class TRTCVodPlayer implements IVodPlayer {
103
102
  * 重复调用会被忽略。
104
103
  *
105
104
  * @note 可以先调用 {@link preload} 预加载完成后再调用 start,也可以跳过 preload 直接调用 start。
106
- * @note 从 SDK 10.7 版本开始,需要通过 TXLiveBase#setLicence 设置 Licence 后方可成功播放,
107
- * 否则将播放失败(黑屏),全局仅设置一次即可。
108
105
  */
109
106
  start(): void;
110
107
  /**
@@ -132,14 +129,19 @@ export declare class TRTCVodPlayer implements IVodPlayer {
132
129
  */
133
130
  seek(msPos: number): void;
134
131
  /**
135
- * 无缝切换当前播放的媒体文件
132
+ * 切换当前播放的媒体文件
136
133
  *
137
- * 在后台预加载新的媒体源,待新源就绪后无缝切换,避免切换时出现黑屏。
138
- * 切换成功后触发 {@link TRTCVodPlayerEvent.onVodPlayerLoaded} 事件,携带新文件的媒体信息。
134
+ * 底层实现等价于 `stop + 加载新源`,**切换后是否自动播放取决于切换前的状态**:
135
+ * - 切换前在播放中:底层会自动 Started 新源,业务方无需再调 {@link start}
136
+ * - 切换前在暂停中:底层只 Loaded 新源不自动播放,业务方需在
137
+ * {@link TRTCVodPlayerEvent.onVodPlayerLoaded} 之后调 {@link start} 才会播。
138
+ *
139
+ * 切换过程中会按顺序触发:
140
+ * `onVodPlayerStopped` → `onVodPlayerLoaded`(新源信息) →
141
+ * `onVodPlayerStarted`(仅"切换前在播放中"路径才会有)。
139
142
  *
140
143
  * @param newMediaFile - 新的媒体文件路径或 URL
141
144
  *
142
- * @note 若当前处于暂停状态,切换后仍保持暂停并展示新文件第一帧。
143
145
  * @note 切换过程中调用 {@link stop} 会取消切换并停止当前播放。
144
146
  * @note 调用前必须先 {@link preload} 或 {@link start},否则会被忽略并打 warn 日志。
145
147
  * @note 传入空串会被忽略并打 warn 日志(C++ 层亦有同等保护)。
@@ -36,7 +36,6 @@ class TRTCVodPlayer {
36
36
  this._dataRenderCallback = this._dataRenderCallback.bind(this);
37
37
  this.nativeVodPlayer = new NodeTRTCEngine.NodeVodPlayer(mediaFilePath, repeat);
38
38
  this.mediaFilePath = mediaFilePath;
39
- this.isStarted = false;
40
39
  this.isDestroyed = false;
41
40
  this.isRenderPrepared = false;
42
41
  this._setBufferRetryCount = 0;
@@ -135,10 +134,6 @@ class TRTCVodPlayer {
135
134
  this.logger.warn('preload: player already destroyed');
136
135
  return;
137
136
  }
138
- if (this.isStarted) {
139
- this.logger.warn('preload: already started, ignored');
140
- return;
141
- }
142
137
  this.logger.info(`preload mediaFile: ${this.mediaFilePath}`);
143
138
  this._prepareRender();
144
139
  (_a = this.nativeVodPlayer) === null || _a === void 0 ? void 0 : _a.preload();
@@ -152,24 +147,18 @@ class TRTCVodPlayer {
152
147
  * 重复调用会被忽略。
153
148
  *
154
149
  * @note 可以先调用 {@link preload} 预加载完成后再调用 start,也可以跳过 preload 直接调用 start。
155
- * @note 从 SDK 10.7 版本开始,需要通过 TXLiveBase#setLicence 设置 Licence 后方可成功播放,
156
- * 否则将播放失败(黑屏),全局仅设置一次即可。
157
150
  */
158
151
  start() {
159
- var _a;
152
+ var _a, _b;
160
153
  if (this.isDestroyed) {
161
154
  this.logger.warn('start: player already destroyed');
162
155
  return;
163
156
  }
164
157
  this.logger.info(`start mediaFile: ${this.mediaFilePath}`);
165
- if (this.isStarted) {
166
- this.logger.warn('start: already started, ignored');
167
- return;
168
- }
169
158
  this._prepareRender();
170
159
  this.attachTRTC();
171
160
  (_a = this.nativeVodPlayer) === null || _a === void 0 ? void 0 : _a.start();
172
- this.isStarted = true;
161
+ (_b = this.nativeVodPlayer) === null || _b === void 0 ? void 0 : _b.resume();
173
162
  }
174
163
  /**
175
164
  * 停止播放
@@ -181,14 +170,8 @@ class TRTCVodPlayer {
181
170
  return;
182
171
  }
183
172
  this.logger.info('stop');
184
- if (!this.isStarted && !this.isRenderPrepared) {
185
- return;
186
- }
187
- if (this.isStarted) {
188
- this.isStarted = false;
189
- (_a = this.nativeVodPlayer) === null || _a === void 0 ? void 0 : _a.stop();
190
- this.detachTRTC();
191
- }
173
+ (_a = this.nativeVodPlayer) === null || _a === void 0 ? void 0 : _a.stop();
174
+ this.detachTRTC();
192
175
  this._teardownRender();
193
176
  }
194
177
  /**
@@ -202,10 +185,6 @@ class TRTCVodPlayer {
202
185
  this.logger.warn('pause: player already destroyed');
203
186
  return;
204
187
  }
205
- if (!this.isStarted) {
206
- this.logger.warn('pause: player not started, ignored');
207
- return;
208
- }
209
188
  this.logger.info('pause');
210
189
  (_a = this.nativeVodPlayer) === null || _a === void 0 ? void 0 : _a.pause();
211
190
  }
@@ -215,17 +194,14 @@ class TRTCVodPlayer {
215
194
  * @note 仅在 {@link start} 之后调用才有效;未播放时调用会被忽略并打 warn 日志。
216
195
  */
217
196
  resume() {
218
- var _a;
197
+ var _a, _b;
219
198
  if (this.isDestroyed) {
220
199
  this.logger.warn('resume: player already destroyed');
221
200
  return;
222
201
  }
223
- if (!this.isStarted) {
224
- this.logger.warn('resume: player not started, ignored');
225
- return;
226
- }
227
202
  this.logger.info('resume');
228
- (_a = this.nativeVodPlayer) === null || _a === void 0 ? void 0 : _a.resume();
203
+ (_a = this.nativeVodPlayer) === null || _a === void 0 ? void 0 : _a.start();
204
+ (_b = this.nativeVodPlayer) === null || _b === void 0 ? void 0 : _b.resume();
229
205
  }
230
206
  /**
231
207
  * 跳转到指定播放位置(seek)
@@ -240,7 +216,7 @@ class TRTCVodPlayer {
240
216
  this.logger.warn('seek: player already destroyed');
241
217
  return;
242
218
  }
243
- if (!this.isStarted && !this.isRenderPrepared) {
219
+ if (!this.isRenderPrepared) {
244
220
  this.logger.warn(`seek: player not preloaded or started, ignored (msPos=${msPos})`);
245
221
  return;
246
222
  }
@@ -248,14 +224,19 @@ class TRTCVodPlayer {
248
224
  (_a = this.nativeVodPlayer) === null || _a === void 0 ? void 0 : _a.seek(msPos);
249
225
  }
250
226
  /**
251
- * 无缝切换当前播放的媒体文件
227
+ * 切换当前播放的媒体文件
252
228
  *
253
- * 在后台预加载新的媒体源,待新源就绪后无缝切换,避免切换时出现黑屏。
254
- * 切换成功后触发 {@link TRTCVodPlayerEvent.onVodPlayerLoaded} 事件,携带新文件的媒体信息。
229
+ * 底层实现等价于 `stop + 加载新源`,**切换后是否自动播放取决于切换前的状态**:
230
+ * - 切换前在播放中:底层会自动 Started 新源,业务方无需再调 {@link start}
231
+ * - 切换前在暂停中:底层只 Loaded 新源不自动播放,业务方需在
232
+ * {@link TRTCVodPlayerEvent.onVodPlayerLoaded} 之后调 {@link start} 才会播。
233
+ *
234
+ * 切换过程中会按顺序触发:
235
+ * `onVodPlayerStopped` → `onVodPlayerLoaded`(新源信息) →
236
+ * `onVodPlayerStarted`(仅"切换前在播放中"路径才会有)。
255
237
  *
256
238
  * @param newMediaFile - 新的媒体文件路径或 URL
257
239
  *
258
- * @note 若当前处于暂停状态,切换后仍保持暂停并展示新文件第一帧。
259
240
  * @note 切换过程中调用 {@link stop} 会取消切换并停止当前播放。
260
241
  * @note 调用前必须先 {@link preload} 或 {@link start},否则会被忽略并打 warn 日志。
261
242
  * @note 传入空串会被忽略并打 warn 日志(C++ 层亦有同等保护)。
@@ -270,7 +251,7 @@ class TRTCVodPlayer {
270
251
  this.logger.warn('switchSource: newMediaFile is empty, ignored');
271
252
  return;
272
253
  }
273
- if (!this.isStarted && !this.isRenderPrepared) {
254
+ if (!this.isRenderPrepared) {
274
255
  this.logger.warn(`switchSource: player not preloaded or started, ignored (newMediaFile=${newMediaFile})`);
275
256
  return;
276
257
  }
@@ -597,7 +578,8 @@ class TRTCVodPlayer {
597
578
  _initEventCallback() {
598
579
  var _a;
599
580
  (_a = this.nativeVodPlayer) === null || _a === void 0 ? void 0 : _a.setEventCallback((args) => {
600
- switch (args[0]) {
581
+ const event = args[0];
582
+ switch (event) {
601
583
  case trtc_define_1.TRTCVodPlayerEvent.onVodPlayerStarted:
602
584
  this.fire(trtc_define_1.TRTCVodPlayerEvent.onVodPlayerStarted, args[1].msLength);
603
585
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trtc-electron-sdk",
3
- "version": "13.3.800-alpha.4",
3
+ "version": "13.3.800-alpha.6",
4
4
  "description": "trtc electron sdk",
5
5
  "main": "./liteav/index.js",
6
6
  "types": "./liteav/index.d.ts",