eyevinn-channel-engine 4.3.4 → 4.3.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/dist/engine/server.d.ts +2 -0
- package/dist/engine/server.js +12 -6
- package/dist/examples/default.js +1 -0
- package/dist/examples/demux.js +2 -1
- package/dist/package.json +1 -1
- package/engine/server.ts +15 -7
- package/examples/default.ts +1 -0
- package/examples/demux.ts +2 -1
- package/package.json +1 -1
package/dist/engine/server.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface ChannelEngineOpts {
|
|
|
16
16
|
dummySubtitleEndpoint?: string;
|
|
17
17
|
subtitleSliceEndpoint?: string;
|
|
18
18
|
useVTTSubtitles?: boolean;
|
|
19
|
+
vttBasePath?: string;
|
|
19
20
|
alwaysNewSegments?: boolean;
|
|
20
21
|
partialStoreHLSVod?: boolean;
|
|
21
22
|
alwaysMapBandwidthByNearest?: boolean;
|
|
@@ -30,6 +31,7 @@ export interface ChannelEngineOpts {
|
|
|
30
31
|
volatileKeyTTL?: number;
|
|
31
32
|
autoCreateSession?: boolean;
|
|
32
33
|
sessionResetKey?: string;
|
|
34
|
+
keepAliveTimeout?: number;
|
|
33
35
|
}
|
|
34
36
|
export interface VodRequest {
|
|
35
37
|
sessionId: string;
|
package/dist/engine/server.js
CHANGED
|
@@ -59,8 +59,8 @@ var sessionsLive = {}; // Should be a persistent store...
|
|
|
59
59
|
var sessionSwitchers = {}; // Should be a persistent store...
|
|
60
60
|
var switcherStatus = {}; // Should be a persistent store...
|
|
61
61
|
var eventStreams = {};
|
|
62
|
-
var DefaultDummySubtitleEndpointPath = "/
|
|
63
|
-
var DefaultSubtitleSpliceEndpointPath = "/
|
|
62
|
+
var DefaultDummySubtitleEndpointPath = "/dummyUrl";
|
|
63
|
+
var DefaultSubtitleSpliceEndpointPath = "/sliceUrl";
|
|
64
64
|
var ScheduleStreamType;
|
|
65
65
|
(function (ScheduleStreamType) {
|
|
66
66
|
ScheduleStreamType[ScheduleStreamType["LIVE"] = 1] = "LIVE";
|
|
@@ -84,8 +84,9 @@ var ChannelEngine = /** @class */ (function () {
|
|
|
84
84
|
this.useDemuxedAudio = true;
|
|
85
85
|
}
|
|
86
86
|
this.useVTTSubtitles = (options && options.useVTTSubtitles) ? options.useVTTSubtitles : false;
|
|
87
|
-
|
|
88
|
-
this.
|
|
87
|
+
var vttBasePath = (options && options.vttBasePath) ? options.vttBasePath : '/vtt';
|
|
88
|
+
this.dummySubtitleEndpoint = (options && options.dummySubtitleEndpoint) ? options.dummySubtitleEndpoint : vttBasePath + DefaultDummySubtitleEndpointPath;
|
|
89
|
+
this.subtitleSliceEndpoint = (options && options.subtitleSliceEndpoint) ? options.subtitleSliceEndpoint : vttBasePath + DefaultSubtitleSpliceEndpointPath;
|
|
89
90
|
this.sessionResetKey = "";
|
|
90
91
|
if (options && options.sessionResetKey) {
|
|
91
92
|
this.sessionResetKey = options.sessionResetKey;
|
|
@@ -116,6 +117,11 @@ var ChannelEngine = /** @class */ (function () {
|
|
|
116
117
|
this.assetMgr = assetMgr;
|
|
117
118
|
this.monitorTimer = {};
|
|
118
119
|
this.server = restify.createServer();
|
|
120
|
+
if (options && options.keepAliveTimeout) {
|
|
121
|
+
this.server.server.keepAliveTimeout = options.keepAliveTimeout;
|
|
122
|
+
this.server.server.headersTimeout = options.keepAliveTimeout + 1000;
|
|
123
|
+
}
|
|
124
|
+
console.log(this.server);
|
|
119
125
|
this.server.use(restify.plugins.queryParser());
|
|
120
126
|
this.serverStartTime = Date.now();
|
|
121
127
|
this.instanceId = uuidv4();
|
|
@@ -269,8 +275,8 @@ var ChannelEngine = /** @class */ (function () {
|
|
|
269
275
|
this.server.get('/health/:sessionId', this._handleSessionHealth.bind(this));
|
|
270
276
|
this.server.get('/reset', this._handleSessionsReset.bind(this));
|
|
271
277
|
this.server.get('/reset/:sessionId', this._handleSessionReset.bind(this));
|
|
272
|
-
this.server.get(DefaultDummySubtitleEndpointPath, this._handleDummySubtitleEndpoint.bind(this));
|
|
273
|
-
this.server.get(DefaultSubtitleSpliceEndpointPath, this._handleSubtitleSliceEndpoint.bind(this));
|
|
278
|
+
this.server.get(vttBasePath + DefaultDummySubtitleEndpointPath, this._handleDummySubtitleEndpoint.bind(this));
|
|
279
|
+
this.server.get(vttBasePath + DefaultSubtitleSpliceEndpointPath, this._handleSubtitleSliceEndpoint.bind(this));
|
|
274
280
|
this.server.on('NotFound', function (req, res, err, next) {
|
|
275
281
|
res.header("X-Instance-Id", _this.instanceId + "<".concat(version, ">"));
|
|
276
282
|
return next();
|
package/dist/examples/default.js
CHANGED
|
@@ -94,6 +94,7 @@ var engineOptions = {
|
|
|
94
94
|
defaultSlateUri: "https://maitv-vod.lab.eyevinn.technology/slate-consuo.mp4/master.m3u8",
|
|
95
95
|
slateRepetitions: 10,
|
|
96
96
|
redisUrl: process.env.REDIS_URL,
|
|
97
|
+
keepAliveTimeout: process.env.KEEP_ALIVE_TIMEOUT ? parseInt(process.env.KEEP_ALIVE_TIMEOUT) * 1000 : undefined
|
|
97
98
|
};
|
|
98
99
|
var engine = new index_1.ChannelEngine(refAssetManager, engineOptions);
|
|
99
100
|
engine.start();
|
package/dist/examples/demux.js
CHANGED
|
@@ -100,7 +100,8 @@ var engineOptions = {
|
|
|
100
100
|
redisUrl: process.env.REDIS_URL,
|
|
101
101
|
useDemuxedAudio: true,
|
|
102
102
|
alwaysNewSegments: false,
|
|
103
|
-
useVTTSubtitles: true
|
|
103
|
+
useVTTSubtitles: true,
|
|
104
|
+
vttBasePath: '/subtitles'
|
|
104
105
|
};
|
|
105
106
|
var engine = new index_1.ChannelEngine(refAssetManager, engineOptions);
|
|
106
107
|
engine.start();
|
package/dist/package.json
CHANGED
package/engine/server.ts
CHANGED
|
@@ -24,8 +24,8 @@ const sessionsLive = {}; // Should be a persistent store...
|
|
|
24
24
|
const sessionSwitchers = {}; // Should be a persistent store...
|
|
25
25
|
const switcherStatus = {}; // Should be a persistent store...
|
|
26
26
|
const eventStreams = {};
|
|
27
|
-
const DefaultDummySubtitleEndpointPath = "/
|
|
28
|
-
const DefaultSubtitleSpliceEndpointPath = "/
|
|
27
|
+
const DefaultDummySubtitleEndpointPath = "/dummyUrl"
|
|
28
|
+
const DefaultSubtitleSpliceEndpointPath = "/sliceUrl"
|
|
29
29
|
|
|
30
30
|
export interface ChannelEngineOpts {
|
|
31
31
|
defaultSlateUri?: string;
|
|
@@ -45,6 +45,7 @@ export interface ChannelEngineOpts {
|
|
|
45
45
|
dummySubtitleEndpoint?: string;
|
|
46
46
|
subtitleSliceEndpoint?: string;
|
|
47
47
|
useVTTSubtitles?: boolean;
|
|
48
|
+
vttBasePath?: string;
|
|
48
49
|
alwaysNewSegments?: boolean;
|
|
49
50
|
partialStoreHLSVod?: boolean;
|
|
50
51
|
alwaysMapBandwidthByNearest?: boolean;
|
|
@@ -58,7 +59,8 @@ export interface ChannelEngineOpts {
|
|
|
58
59
|
noSessionDataTags?: boolean;
|
|
59
60
|
volatileKeyTTL?: number;
|
|
60
61
|
autoCreateSession?: boolean;
|
|
61
|
-
sessionResetKey?:string;
|
|
62
|
+
sessionResetKey?: string;
|
|
63
|
+
keepAliveTimeout?: number;
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
interface StreamerOpts {
|
|
@@ -220,8 +222,9 @@ export class ChannelEngine {
|
|
|
220
222
|
}
|
|
221
223
|
|
|
222
224
|
this.useVTTSubtitles = (options && options.useVTTSubtitles) ? options.useVTTSubtitles : false ;
|
|
223
|
-
|
|
224
|
-
this.
|
|
225
|
+
const vttBasePath = (options && options.vttBasePath) ? options.vttBasePath : '/vtt';
|
|
226
|
+
this.dummySubtitleEndpoint = (options && options.dummySubtitleEndpoint) ? options.dummySubtitleEndpoint : vttBasePath + DefaultDummySubtitleEndpointPath;
|
|
227
|
+
this.subtitleSliceEndpoint = (options && options.subtitleSliceEndpoint) ? options.subtitleSliceEndpoint : vttBasePath + DefaultSubtitleSpliceEndpointPath;
|
|
225
228
|
|
|
226
229
|
this.sessionResetKey = "";
|
|
227
230
|
if (options && options.sessionResetKey) {
|
|
@@ -253,6 +256,11 @@ export class ChannelEngine {
|
|
|
253
256
|
this.assetMgr = assetMgr;
|
|
254
257
|
this.monitorTimer = {};
|
|
255
258
|
this.server = restify.createServer();
|
|
259
|
+
if (options && options.keepAliveTimeout) {
|
|
260
|
+
this.server.server.keepAliveTimeout = options.keepAliveTimeout;
|
|
261
|
+
this.server.server.headersTimeout = options.keepAliveTimeout + 1000;
|
|
262
|
+
}
|
|
263
|
+
console.log(this.server);
|
|
256
264
|
this.server.use(restify.plugins.queryParser());
|
|
257
265
|
this.serverStartTime = Date.now();
|
|
258
266
|
this.instanceId = uuidv4();
|
|
@@ -369,8 +377,8 @@ export class ChannelEngine {
|
|
|
369
377
|
this.server.get('/health/:sessionId', this._handleSessionHealth.bind(this));
|
|
370
378
|
this.server.get('/reset', this._handleSessionsReset.bind(this));
|
|
371
379
|
this.server.get('/reset/:sessionId', this._handleSessionReset.bind(this));
|
|
372
|
-
this.server.get(DefaultDummySubtitleEndpointPath, this._handleDummySubtitleEndpoint.bind(this));
|
|
373
|
-
this.server.get(DefaultSubtitleSpliceEndpointPath, this._handleSubtitleSliceEndpoint.bind(this));
|
|
380
|
+
this.server.get(vttBasePath + DefaultDummySubtitleEndpointPath, this._handleDummySubtitleEndpoint.bind(this));
|
|
381
|
+
this.server.get(vttBasePath + DefaultSubtitleSpliceEndpointPath, this._handleSubtitleSliceEndpoint.bind(this));
|
|
374
382
|
|
|
375
383
|
this.server.on('NotFound', (req, res, err, next) => {
|
|
376
384
|
res.header("X-Instance-Id", this.instanceId + `<${version}>`);
|
package/examples/default.ts
CHANGED
|
@@ -106,6 +106,7 @@ const engineOptions: ChannelEngineOpts = {
|
|
|
106
106
|
"https://maitv-vod.lab.eyevinn.technology/slate-consuo.mp4/master.m3u8",
|
|
107
107
|
slateRepetitions: 10,
|
|
108
108
|
redisUrl: process.env.REDIS_URL,
|
|
109
|
+
keepAliveTimeout: process.env.KEEP_ALIVE_TIMEOUT ? parseInt(process.env.KEEP_ALIVE_TIMEOUT) * 1000: undefined
|
|
109
110
|
};
|
|
110
111
|
|
|
111
112
|
const engine = new ChannelEngine(refAssetManager, engineOptions);
|
package/examples/demux.ts
CHANGED
|
@@ -112,7 +112,8 @@ const engineOptions: ChannelEngineOpts = {
|
|
|
112
112
|
redisUrl: process.env.REDIS_URL,
|
|
113
113
|
useDemuxedAudio: true,
|
|
114
114
|
alwaysNewSegments: false,
|
|
115
|
-
useVTTSubtitles: true
|
|
115
|
+
useVTTSubtitles: true,
|
|
116
|
+
vttBasePath: '/subtitles'
|
|
116
117
|
};
|
|
117
118
|
|
|
118
119
|
const engine = new ChannelEngine(refAssetManager, engineOptions);
|