trtc-electron-sdk 12.1.701-alpha.0 → 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.
- package/liteav/Live/Player/index.d.ts +167 -0
- package/liteav/Live/Player/index.js +376 -0
- package/liteav/Live/Pusher/index.d.ts +350 -0
- package/liteav/Live/Pusher/index.js +641 -0
- package/liteav/Live/converter.d.ts +4 -0
- package/liteav/Live/converter.js +30 -0
- package/liteav/Live/live_define.d.ts +312 -0
- package/liteav/Live/live_define.js +554 -0
- package/liteav/Live/video-render.d.ts +21 -0
- package/liteav/Live/video-render.js +92 -0
- package/liteav/LocalMediaTranscoder/index.d.ts +24 -132
- package/liteav/LocalMediaTranscoder/index.js +111 -133
- package/liteav/LocalMediaTranscoder/types.d.ts +159 -0
- package/liteav/LocalMediaTranscoder/types.js +134 -0
- package/liteav/MediaMixingDesigner/Movable.d.ts +26 -0
- package/liteav/MediaMixingDesigner/Movable.js +162 -0
- package/liteav/MediaMixingDesigner/Resizable.d.ts +48 -0
- package/liteav/MediaMixingDesigner/Resizable.js +501 -0
- package/liteav/MediaMixingDesigner/index.d.ts +71 -0
- package/liteav/MediaMixingDesigner/index.js +498 -0
- package/liteav/Renderer/VideoRenderer/index.js +7 -2
- package/liteav/Renderer/util.d.ts +1 -1
- package/liteav/Renderer/util.js +1 -1
- package/liteav/VideoRenderControl/VideoRenderFPSMonitor.d.ts +2 -1
- package/liteav/VideoRenderControl/VideoRenderFPSMonitor.js +27 -14
- package/liteav/base/PromiseStore.d.ts +10 -0
- package/liteav/base/PromiseStore.js +58 -0
- package/liteav/constant.d.ts +1 -0
- package/liteav/constant.js +4 -0
- package/liteav/extensions/AudioEffectManager/index.d.ts +231 -36
- package/liteav/extensions/AudioEffectManager/index.js +329 -62
- package/liteav/extensions/DeviceManager/index.d.ts +43 -59
- package/liteav/extensions/DeviceManager/index.js +216 -227
- package/liteav/extensions/MediaMixingManager/MediaMixingManager.d.ts +427 -0
- package/liteav/extensions/MediaMixingManager/MediaMixingManager.js +1262 -0
- package/liteav/extensions/MediaMixingManager/MediaMixingService.d.ts +60 -0
- package/liteav/extensions/MediaMixingManager/MediaMixingService.js +80 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/BaseStreamLayoutManager.d.ts +31 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/BaseStreamLayoutManager.js +106 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/CustomStreamLayoutManager.d.ts +11 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/CustomStreamLayoutManager.js +119 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/NoneStreamLayoutManager.d.ts +11 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/NoneStreamLayoutManager.js +73 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/index.d.ts +7 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/index.js +34 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/types.d.ts +25 -0
- package/liteav/extensions/MediaMixingManager/StreamLayout/types.js +2 -0
- package/liteav/extensions/MediaMixingManager/index.d.ts +4 -57
- package/liteav/extensions/MediaMixingManager/index.js +30 -121
- package/liteav/extensions/MediaMixingManager/types.d.ts +107 -0
- package/liteav/extensions/MediaMixingManager/types.js +26 -0
- package/liteav/extensions/PluginManager/index.d.ts +28 -8
- package/liteav/extensions/PluginManager/index.js +131 -22
- package/liteav/index.d.ts +14 -0
- package/liteav/index.js +29 -0
- package/liteav/trtc.d.ts +474 -65
- package/liteav/trtc.js +723 -255
- package/liteav/trtc_define.d.ts +102 -26
- package/liteav/trtc_define.js +352 -43
- package/liteav/utils.d.ts +37 -0
- package/liteav/utils.js +133 -0
- package/package.json +4 -4
- package/scripts/copy-sdk.js +2 -2
- package/scripts/download.js +153 -169
- package/scripts/prerelase.js +19 -7
- package/liteav/Render/BGRAVideoRenderer/index.js +0 -114
- package/liteav/Render/Canvas3DRGBARenderer/index.js +0 -241
- package/liteav/Render/GlRenderer/index.js +0 -439
- package/liteav/Render/GlRenderer/webgl-utils.js +0 -1337
- package/liteav/Render/I420VideoRenderer/index.js +0 -106
- package/liteav/Render/RGBAVideoRenderer/index.js +0 -115
- package/liteav/Render/RGBRenderer/index.js +0 -112
- package/liteav/Render/SoftwareRenderer/index.js +0 -153
- package/liteav/Render/index.d.ts +0 -58
- package/liteav/Render/index.js +0 -63
- package/liteav/Render/util.d.ts +0 -46
- 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;
|