trtc-electron-sdk 11.4.503-beta.3 → 11.4.503-beta.5

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.
@@ -534,10 +534,10 @@ class TRTCLocalMediaTranscoder extends events_1.EventEmitter {
534
534
  // 重新记录渲染的 HTML 节点并创建渲染器
535
535
  this.container = view;
536
536
  this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, {
537
- type: Renderer_1.RenderType.WebGL,
537
+ type: Renderer_1.RenderType.Video,
538
538
  onContextLost: () => {
539
539
  this.container = view;
540
- this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, { type: Renderer_1.RenderType.Video });
540
+ this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, { type: Renderer_1.RenderType.Canvas2D });
541
541
  },
542
542
  });
543
543
  }
@@ -545,10 +545,10 @@ class TRTCLocalMediaTranscoder extends events_1.EventEmitter {
545
545
  // 第一次设置渲染的 HTML 节点,并创建渲染器,设置渲染回调
546
546
  this.container = view;
547
547
  this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, {
548
- type: Renderer_1.RenderType.WebGL,
548
+ type: Renderer_1.RenderType.Video,
549
549
  onContextLost: () => {
550
550
  this.container = view;
551
- this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, { type: Renderer_1.RenderType.Video });
551
+ this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, { type: Renderer_1.RenderType.Canvas2D });
552
552
  },
553
553
  });
554
554
  this.setMixedVideoFrameRenderCallback();
@@ -238,7 +238,7 @@ class I420Canvas3DRenderer {
238
238
  if (util_1.config.getDebugMode()) {
239
239
  e = this.gl.getError();
240
240
  if (e != this.gl.NO_ERROR) {
241
- logger_1.default.log('upload y plane ', width, height, yplane.byteLength, ' error', e);
241
+ logger_1.default.warn('upload y plane ', width, height, yplane.byteLength, ' error', e);
242
242
  }
243
243
  }
244
244
  this.gl.activeTexture(this.gl.TEXTURE1);
@@ -247,7 +247,7 @@ class I420Canvas3DRenderer {
247
247
  if (util_1.config.getDebugMode()) {
248
248
  e = this.gl.getError();
249
249
  if (e != this.gl.NO_ERROR) {
250
- logger_1.default.log('upload u plane ', width, height, uplane.byteLength, ' error', e);
250
+ logger_1.default.warn('upload u plane ', width, height, uplane.byteLength, ' error', e);
251
251
  }
252
252
  }
253
253
  this.gl.activeTexture(this.gl.TEXTURE2);
@@ -256,7 +256,7 @@ class I420Canvas3DRenderer {
256
256
  if (util_1.config.getDebugMode()) {
257
257
  e = this.gl.getError();
258
258
  if (e != this.gl.NO_ERROR) {
259
- logger_1.default.log('upload v plane ', width, height, vplane.byteLength, ' error', e);
259
+ logger_1.default.warn('upload v plane ', width, height, vplane.byteLength, ' error', e);
260
260
  }
261
261
  }
262
262
  }
@@ -18,7 +18,7 @@ class Canvas3dRenderer {
18
18
  this.i420Rotation = 0;
19
19
  if (currentCreatedCount < UP_LIMIT_COUNT) {
20
20
  currentCreatedCount = currentCreatedCount + 1;
21
- logger_1.default.log('currentCreatedCount=', currentCreatedCount);
21
+ logger_1.default.debug('currentCreatedCount=', currentCreatedCount);
22
22
  }
23
23
  else {
24
24
  throw new Error('WebGL context reach up limit');
@@ -32,10 +32,15 @@ var RenderType;
32
32
  })(RenderType = exports.RenderType || (exports.RenderType = {}));
33
33
  function createRenderer(pixelFormat, view, options) {
34
34
  if (options && !options.type) {
35
- options.type = RenderType.WebGL;
35
+ options.type = RenderType.Video;
36
36
  }
37
37
  let renderer = null;
38
- if (isWebGLSupported && options.type === RenderType.WebGL) {
38
+ if (window.VideoFrame && window.VideoDecoder && options.type === RenderType.Video) {
39
+ // Electron 15+ 版本支持 WebCodec API
40
+ renderer = new VideoRenderer_1.default(pixelFormat, view);
41
+ logger_1.default.log('created Video render');
42
+ }
43
+ else if (isWebGLSupported && (options.type === RenderType.Video || options.type === RenderType.WebGL)) {
39
44
  try {
40
45
  renderer = new Canvas3DRenderer_1.default(pixelFormat, view, {
41
46
  onContextLost: options.onContextLost || null,
@@ -43,23 +48,15 @@ function createRenderer(pixelFormat, view, options) {
43
48
  logger_1.default.log('created WebGL render');
44
49
  }
45
50
  catch (err) {
46
- logger_1.default.log('create WebGL renderer error.', err.message);
47
- renderer = null;
48
- }
49
- }
50
- if (!renderer) {
51
- // @ts-ignore
52
- if (window.VideoFrame && window.VideoDecoder
53
- && (options.type === RenderType.WebGL || options.type === RenderType.Video)) {
54
- // Electron 15+ 版本支持 WebCodec API
55
- renderer = new VideoRenderer_1.default(pixelFormat, view);
56
- logger_1.default.log('created Video render');
57
- }
58
- else {
51
+ logger_1.default.warn('create WebGL renderer error.', err.message);
59
52
  renderer = new Canvas2DRenderer_1.default(pixelFormat, view);
60
53
  logger_1.default.log('created Canvas 2D render');
61
54
  }
62
55
  }
56
+ else {
57
+ renderer = new Canvas2DRenderer_1.default(pixelFormat, view);
58
+ logger_1.default.log('created Canvas 2D render');
59
+ }
63
60
  return renderer;
64
61
  }
65
62
  exports.createRenderer = createRenderer;
package/liteav/trtc.d.ts CHANGED
@@ -1208,6 +1208,7 @@ declare class TRTCCloud extends EventEmitter {
1208
1208
  * 如果录制任务在退出房间前尚未通过本接口停止,则退出房间后录音任务会自动被停止。
1209
1209
  */
1210
1210
  stopLocalRecording(): void;
1211
+ setVideoRenderingFPS(fps: number): void;
1211
1212
  /**
1212
1213
  * 开启本地音频的采集和上行
1213
1214
  *
package/liteav/trtc.js CHANGED
@@ -735,7 +735,6 @@ class TRTCCloud extends events_1.EventEmitter {
735
735
  * @event TRTCCallback#onSendFirstLocalAudioFrame
736
736
  */
737
737
  handleOnSendFirstLocalAudioFrame() {
738
- logger_1.default.log(`onSendFirstLocalAudioFrame`);
739
738
  this.fire('onSendFirstLocalAudioFrame');
740
739
  }
741
740
  /**
@@ -1781,7 +1780,7 @@ class TRTCCloud extends events_1.EventEmitter {
1781
1780
  * - 如果传入 `null` 则不预览摄像头画面,但不影响摄像头采集
1782
1781
  */
1783
1782
  startLocalPreview(views) {
1784
- logger_1.default.log(`startLocalPreview`, views);
1783
+ logger_1.default.debug(`startLocalPreview`, views);
1785
1784
  if (views !== undefined) {
1786
1785
  if (views !== null) {
1787
1786
  if (Array.isArray(views)) {
@@ -1825,7 +1824,7 @@ class TRTCCloud extends events_1.EventEmitter {
1825
1824
  * @param {Array<HTMLElement>|HTMLElement|null} views - 承载预览画面单个的 HTML 块节点或者 HTML 块节点数组,传入 `null` 结束本地摄像头采集视频的预览。
1826
1825
  */
1827
1826
  updateLocalView(views) {
1828
- logger_1.default.log(`updateLocalView`, views);
1827
+ logger_1.default.debug(`updateLocalView`, views);
1829
1828
  const key = this.getKey(LOCAL_USER_VIDEO_ID, trtc_define_1.TRTCVideoStreamType.TRTCVideoStreamTypeBig);
1830
1829
  if (views !== undefined) {
1831
1830
  if (views !== null) {
@@ -1934,7 +1933,7 @@ class TRTCCloud extends events_1.EventEmitter {
1934
1933
  * @param {TRTCVideoStreamType} streamType - 视频流类型
1935
1934
  */
1936
1935
  startRemoteView(userId, views, streamType) {
1937
- logger_1.default.log(`startRemoteView userId:${userId} streamType:${streamType}`, views);
1936
+ logger_1.default.debug(`startRemoteView userId:${userId} streamType:${streamType}`, views);
1938
1937
  if (views !== undefined) {
1939
1938
  if (views !== null) {
1940
1939
  if (Array.isArray(views)) {
@@ -2005,7 +2004,7 @@ class TRTCCloud extends events_1.EventEmitter {
2005
2004
  *
2006
2005
  */
2007
2006
  updateRemoteView(userId, views, streamType) {
2008
- logger_1.default.log(`updateRemoteView userId:${userId} streamType:${streamType}`, views);
2007
+ logger_1.default.debug(`updateRemoteView userId:${userId} streamType:${streamType}`, views);
2009
2008
  const rendererStreamType = this._calcRemoteVideoRendererStreamType(streamType);
2010
2009
  const key = this.getKey(userId, rendererStreamType);
2011
2010
  if (views !== undefined) {
@@ -2382,6 +2381,10 @@ class TRTCCloud extends events_1.EventEmitter {
2382
2381
  stopLocalRecording() {
2383
2382
  this.rtcCloud.stopLocalRecording();
2384
2383
  }
2384
+ setVideoRenderingFPS(fps) {
2385
+ const valid_fps = fps >= 5 ? fps : 5;
2386
+ this.rtcCloud.setVideoRenderingFPS(valid_fps);
2387
+ }
2385
2388
  /////////////////////////////////////////////////////////////////////////////////
2386
2389
  //
2387
2390
  // (四)音频相关接口函数
@@ -4364,7 +4367,7 @@ class TRTCCloud extends events_1.EventEmitter {
4364
4367
  const onContextLost = (key, view) => {
4365
4368
  const rendererMap = this.videoRendererMap.get(key);
4366
4369
  if (rendererMap) {
4367
- const render = this._createVideoRenderer(view, key, { type: Renderer_1.RenderType.Video });
4370
+ const render = this._createVideoRenderer(view, key, { type: Renderer_1.RenderType.Canvas2D });
4368
4371
  rendererMap === null || rendererMap === void 0 ? void 0 : rendererMap.set(view, render);
4369
4372
  this.videoRendererMap.set(key, rendererMap);
4370
4373
  }
@@ -4392,7 +4395,7 @@ class TRTCCloud extends events_1.EventEmitter {
4392
4395
  validViews.forEach((view) => {
4393
4396
  if (!(rendererMap === null || rendererMap === void 0 ? void 0 : rendererMap.has(view))) {
4394
4397
  const renderer = this._createVideoRenderer(view, key, {
4395
- type: Renderer_1.RenderType.WebGL,
4398
+ type: Renderer_1.RenderType.Video,
4396
4399
  onContextLost: () => {
4397
4400
  onContextLost(key, view);
4398
4401
  },
@@ -4405,7 +4408,7 @@ class TRTCCloud extends events_1.EventEmitter {
4405
4408
  rendererMap = new Map();
4406
4409
  validViews.forEach((view) => {
4407
4410
  const renderer = this._createVideoRenderer(view, key, {
4408
- type: Renderer_1.RenderType.WebGL,
4411
+ type: Renderer_1.RenderType.Video,
4409
4412
  onContextLost: () => {
4410
4413
  onContextLost(key, view);
4411
4414
  },
@@ -1,9 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.VodPlayer = exports.PlayerEvents = void 0;
4
7
  const events_1 = require("events");
5
8
  const Renderer_1 = require("./Renderer");
6
9
  const trtc_define_1 = require("./trtc_define");
10
+ const logger_1 = __importDefault(require("./logger"));
7
11
  var PlayerEvents;
8
12
  (function (PlayerEvents) {
9
13
  PlayerEvents["onVodPlayerStarted"] = "onVodPlayerStarted";
@@ -144,9 +148,9 @@ class VodPlayer extends events_1.EventEmitter {
144
148
  }
145
149
  view.innerHTML = ''; // 事先清空一下,避免画面叠加
146
150
  this.renderer = (0, Renderer_1.createRenderer)(trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420, view, {
147
- type: Renderer_1.RenderType.WebGL,
151
+ type: Renderer_1.RenderType.Video,
148
152
  onContextLost: () => {
149
- this.renderer = (0, Renderer_1.createRenderer)(trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420, view, { type: Renderer_1.RenderType.Video });
153
+ this.renderer = (0, Renderer_1.createRenderer)(trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420, view, { type: Renderer_1.RenderType.Canvas2D });
150
154
  },
151
155
  });
152
156
  }
@@ -156,6 +160,7 @@ class VodPlayer extends events_1.EventEmitter {
156
160
  this.renderer = null;
157
161
  }
158
162
  catch (err) {
163
+ logger_1.default.error('[VodPlayer]destroyRender failed:', err);
159
164
  }
160
165
  }
161
166
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trtc-electron-sdk",
3
- "version": "11.4.503-beta.3",
3
+ "version": "11.4.503-beta.5",
4
4
  "description": "trtc electron sdk",
5
5
  "main": "./liteav/trtc.js",
6
6
  "types": "./liteav/trtc.d.ts",