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.
- package/liteav/LocalMediaTranscoder/index.js +4 -4
- package/liteav/Renderer/Canvas3DRenderer/I420Canvas3DRenderer.js +3 -3
- package/liteav/Renderer/Canvas3DRenderer/index.js +1 -1
- package/liteav/Renderer/index.js +12 -15
- package/liteav/trtc.d.ts +1 -0
- package/liteav/trtc.js +11 -8
- package/liteav/vod_player.js +7 -2
- package/package.json +1 -1
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
21
|
+
logger_1.default.debug('currentCreatedCount=', currentCreatedCount);
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
24
|
throw new Error('WebGL context reach up limit');
|
package/liteav/Renderer/index.js
CHANGED
|
@@ -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.
|
|
35
|
+
options.type = RenderType.Video;
|
|
36
36
|
}
|
|
37
37
|
let renderer = null;
|
|
38
|
-
if (
|
|
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.
|
|
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
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
4411
|
+
type: Renderer_1.RenderType.Video,
|
|
4409
4412
|
onContextLost: () => {
|
|
4410
4413
|
onContextLost(key, view);
|
|
4411
4414
|
},
|
package/liteav/vod_player.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
}
|