@osaas/client-transcode 0.7.1 → 0.8.0
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/README.md +31 -0
- package/lib/encore.d.ts +55 -0
- package/lib/encore.d.ts.map +1 -1
- package/lib/encore.js +155 -0
- package/lib/encore.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/lib/pool.d.ts +10 -4
- package/lib/pool.d.ts.map +1 -1
- package/lib/pool.js +82 -18
- package/lib/pool.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -40,6 +40,37 @@ async function main() {
|
|
|
40
40
|
main();
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
+
Transcode and create streaming package
|
|
44
|
+
|
|
45
|
+
```javascript
|
|
46
|
+
import { Context, Log } from '@osaas/client-core';
|
|
47
|
+
import { QueuePool } from '@osaas/client-transcode';
|
|
48
|
+
|
|
49
|
+
async function main() {
|
|
50
|
+
const ctx = new Context();
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
const pool = new QueuePool({ context: ctx, usePackagingQueue: true });
|
|
54
|
+
await pool.init();
|
|
55
|
+
await pool.transcode(
|
|
56
|
+
new URL(
|
|
57
|
+
'https://testcontent.eyevinn.technology/mp4/stswe-tvplus-promo.mp4'
|
|
58
|
+
),
|
|
59
|
+
new URL('s3://lab-testcontent-store/birme/'),
|
|
60
|
+
{
|
|
61
|
+
packageDestination: new URL(
|
|
62
|
+
's3://lab-testcontent-storate/birme/output/'
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
} catch (err) {
|
|
67
|
+
Log().error(err);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
main();
|
|
72
|
+
```
|
|
73
|
+
|
|
43
74
|
## About Open Source Cloud
|
|
44
75
|
|
|
45
76
|
Open Source Cloud reduces the barrier to get started with open source without having to host it on your own infrastructure.
|
package/lib/encore.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Context } from '@osaas/client-core';
|
|
1
2
|
export type FileOutput = {
|
|
2
3
|
file: string;
|
|
3
4
|
fileSize: number;
|
|
@@ -8,4 +9,58 @@ export type FileOutput = {
|
|
|
8
9
|
audioStreams: any[];
|
|
9
10
|
type: string;
|
|
10
11
|
};
|
|
12
|
+
export type EncoreCallbackListenerOpts = {
|
|
13
|
+
context: Context;
|
|
14
|
+
name: string;
|
|
15
|
+
redisUrl: string;
|
|
16
|
+
encoreUrl: string;
|
|
17
|
+
redisQueue?: string;
|
|
18
|
+
};
|
|
19
|
+
export declare class EncoreCallbackListener {
|
|
20
|
+
private context;
|
|
21
|
+
private name;
|
|
22
|
+
private redisUrl;
|
|
23
|
+
private redisQueue?;
|
|
24
|
+
private encoreUrl;
|
|
25
|
+
private token?;
|
|
26
|
+
private callbackUrl?;
|
|
27
|
+
constructor({ context, name, redisUrl, encoreUrl, redisQueue }: EncoreCallbackListenerOpts);
|
|
28
|
+
static list(ctx: Context): Promise<EncoreCallbackListener[]>;
|
|
29
|
+
init(): Promise<void>;
|
|
30
|
+
destroy(): Promise<void>;
|
|
31
|
+
getCallbackUrl(): string | undefined;
|
|
32
|
+
getRedisUrl(): string;
|
|
33
|
+
getEncoreUrl(): string;
|
|
34
|
+
getRedisQueue(): string | undefined;
|
|
35
|
+
getName(): string;
|
|
36
|
+
}
|
|
37
|
+
export type EncorePackagerOpts = {
|
|
38
|
+
context: Context;
|
|
39
|
+
name: string;
|
|
40
|
+
redisUrl: string;
|
|
41
|
+
redisQueue?: string;
|
|
42
|
+
outputFolder: string;
|
|
43
|
+
concurrency?: number;
|
|
44
|
+
personalAccessTokenSecret?: string;
|
|
45
|
+
awsAccessKeyIdSecret?: string;
|
|
46
|
+
awsSecretAccessKeySecret?: string;
|
|
47
|
+
};
|
|
48
|
+
export declare class EncorePackager {
|
|
49
|
+
private context;
|
|
50
|
+
private name;
|
|
51
|
+
private token?;
|
|
52
|
+
private redisUrl;
|
|
53
|
+
private redisQueue?;
|
|
54
|
+
private concurrency?;
|
|
55
|
+
private personalAccessTokenSecret;
|
|
56
|
+
private awsAccessKeyIdSecret;
|
|
57
|
+
private awsSecretAccessKeySecret;
|
|
58
|
+
private outputFolder;
|
|
59
|
+
constructor({ context, name, redisUrl, redisQueue, outputFolder, concurrency, personalAccessTokenSecret, awsAccessKeyIdSecret, awsSecretAccessKeySecret }: EncorePackagerOpts);
|
|
60
|
+
static list(ctx: Context): Promise<EncorePackager[]>;
|
|
61
|
+
init(): Promise<void>;
|
|
62
|
+
destroy(): Promise<void>;
|
|
63
|
+
getOutputFolder(): string;
|
|
64
|
+
getName(): string;
|
|
65
|
+
}
|
|
11
66
|
//# sourceMappingURL=encore.d.ts.map
|
package/lib/encore.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encore.d.ts","sourceRoot":"","sources":["../src/encore.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"encore.d.ts","sourceRoot":"","sources":["../src/encore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAOR,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,WAAW,CAAC,CAAS;gBAEjB,EACV,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,UAAU,EACX,EAAE,0BAA0B;WAQT,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAqB5D,IAAI;IA6BJ,OAAO;IAgBb,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,WAAW,IAAI,MAAM;IAIrB,YAAY,IAAI,MAAM;IAItB,aAAa,IAAI,MAAM,GAAG,SAAS;IAOnC,OAAO,IAAI,MAAM;CAGzB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAIF,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,YAAY,CAAS;gBAEjB,EACV,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,EACX,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACzB,EAAE,kBAAkB;WAaD,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAyBpD,IAAI;IA8BJ,OAAO;IAgBb,eAAe,IAAI,MAAM;IAIzB,OAAO,IAAI,MAAM;CAGzB"}
|
package/lib/encore.js
CHANGED
|
@@ -1,3 +1,158 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EncorePackager = exports.EncoreCallbackListener = void 0;
|
|
4
|
+
const client_core_1 = require("@osaas/client-core");
|
|
5
|
+
const CALLBACK_SERVICE_ID = 'eyevinn-encore-callback-listener';
|
|
6
|
+
class EncoreCallbackListener {
|
|
7
|
+
context;
|
|
8
|
+
name;
|
|
9
|
+
redisUrl;
|
|
10
|
+
redisQueue;
|
|
11
|
+
encoreUrl;
|
|
12
|
+
token;
|
|
13
|
+
callbackUrl;
|
|
14
|
+
constructor({ context, name, redisUrl, encoreUrl, redisQueue }) {
|
|
15
|
+
this.context = context;
|
|
16
|
+
this.name = name;
|
|
17
|
+
this.redisUrl = redisUrl;
|
|
18
|
+
this.redisQueue = redisQueue;
|
|
19
|
+
this.encoreUrl = encoreUrl;
|
|
20
|
+
}
|
|
21
|
+
static async list(ctx) {
|
|
22
|
+
const token = await ctx.getServiceAccessToken(CALLBACK_SERVICE_ID);
|
|
23
|
+
const instances = await (0, client_core_1.listInstances)(ctx, CALLBACK_SERVICE_ID, token);
|
|
24
|
+
return instances.map((instance) => {
|
|
25
|
+
return new EncoreCallbackListener({
|
|
26
|
+
context: ctx,
|
|
27
|
+
name: instance.name,
|
|
28
|
+
redisUrl: instance.RedisUrl,
|
|
29
|
+
encoreUrl: instance.EncoreUrl,
|
|
30
|
+
redisQueue: instance.RedisQueue
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async init() {
|
|
35
|
+
this.token = await this.context.getServiceAccessToken(CALLBACK_SERVICE_ID);
|
|
36
|
+
const instance = await (0, client_core_1.getInstance)(this.context, CALLBACK_SERVICE_ID, this.name, this.token);
|
|
37
|
+
if (!instance) {
|
|
38
|
+
const newInstance = await (0, client_core_1.createInstance)(this.context, CALLBACK_SERVICE_ID, this.token, {
|
|
39
|
+
name: this.name,
|
|
40
|
+
RedisUrl: this.redisUrl,
|
|
41
|
+
EncoreUrl: this.encoreUrl,
|
|
42
|
+
RedisQueue: this.redisQueue
|
|
43
|
+
});
|
|
44
|
+
if (!newInstance) {
|
|
45
|
+
throw new Error('Failed to create Encore Callback Listener instance');
|
|
46
|
+
}
|
|
47
|
+
this.callbackUrl = newInstance.url + '/encoreCallback';
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.callbackUrl = instance.url + '/encoreCallback';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async destroy() {
|
|
54
|
+
try {
|
|
55
|
+
this.token = await this.context.getServiceAccessToken(CALLBACK_SERVICE_ID);
|
|
56
|
+
await (0, client_core_1.removeInstance)(this.context, CALLBACK_SERVICE_ID, this.name, this.token);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
(0, client_core_1.Log)().error(err.message);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
getCallbackUrl() {
|
|
63
|
+
return this.callbackUrl;
|
|
64
|
+
}
|
|
65
|
+
getRedisUrl() {
|
|
66
|
+
return (0, client_core_1.valueOrSecret)(this.redisUrl);
|
|
67
|
+
}
|
|
68
|
+
getEncoreUrl() {
|
|
69
|
+
return (0, client_core_1.valueOrSecret)(this.encoreUrl);
|
|
70
|
+
}
|
|
71
|
+
getRedisQueue() {
|
|
72
|
+
if (this.redisQueue) {
|
|
73
|
+
return (0, client_core_1.valueOrSecret)(this.redisQueue);
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
getName() {
|
|
78
|
+
return this.name;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.EncoreCallbackListener = EncoreCallbackListener;
|
|
82
|
+
const PACKAGER_SERVICE_ID = 'eyevinn-encore-packager';
|
|
83
|
+
class EncorePackager {
|
|
84
|
+
context;
|
|
85
|
+
name;
|
|
86
|
+
token;
|
|
87
|
+
redisUrl;
|
|
88
|
+
redisQueue;
|
|
89
|
+
concurrency;
|
|
90
|
+
personalAccessTokenSecret;
|
|
91
|
+
awsAccessKeyIdSecret;
|
|
92
|
+
awsSecretAccessKeySecret;
|
|
93
|
+
outputFolder;
|
|
94
|
+
constructor({ context, name, redisUrl, redisQueue, outputFolder, concurrency, personalAccessTokenSecret, awsAccessKeyIdSecret, awsSecretAccessKeySecret }) {
|
|
95
|
+
this.context = context;
|
|
96
|
+
this.name = name;
|
|
97
|
+
this.redisUrl = redisUrl;
|
|
98
|
+
this.redisQueue = redisQueue;
|
|
99
|
+
this.outputFolder = outputFolder;
|
|
100
|
+
this.concurrency = concurrency;
|
|
101
|
+
this.personalAccessTokenSecret = personalAccessTokenSecret || 'osctoken';
|
|
102
|
+
this.awsAccessKeyIdSecret = awsAccessKeyIdSecret || 'awsaccesskeyid';
|
|
103
|
+
this.awsSecretAccessKeySecret =
|
|
104
|
+
awsSecretAccessKeySecret || 'awssecretaccesskey';
|
|
105
|
+
}
|
|
106
|
+
static async list(ctx) {
|
|
107
|
+
const token = await ctx.getServiceAccessToken(PACKAGER_SERVICE_ID);
|
|
108
|
+
const instances = await (0, client_core_1.listInstances)(ctx, PACKAGER_SERVICE_ID, token);
|
|
109
|
+
return instances.map((instance) => {
|
|
110
|
+
return new EncorePackager({
|
|
111
|
+
context: ctx,
|
|
112
|
+
name: instance.name,
|
|
113
|
+
redisUrl: instance.RedisUrl,
|
|
114
|
+
redisQueue: instance.RedisQueue,
|
|
115
|
+
outputFolder: instance.OutputFolder,
|
|
116
|
+
concurrency: instance.Concurrency
|
|
117
|
+
? parseInt(instance.Concurrency)
|
|
118
|
+
: undefined
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
async init() {
|
|
123
|
+
this.token = await this.context.getServiceAccessToken(PACKAGER_SERVICE_ID);
|
|
124
|
+
const instance = await (0, client_core_1.getInstance)(this.context, PACKAGER_SERVICE_ID, this.name, this.token);
|
|
125
|
+
if (!instance) {
|
|
126
|
+
const newInstance = await (0, client_core_1.createInstance)(this.context, PACKAGER_SERVICE_ID, this.token, {
|
|
127
|
+
name: this.name,
|
|
128
|
+
RedisUrl: this.redisUrl,
|
|
129
|
+
RedisQueue: this.redisQueue,
|
|
130
|
+
OutputFolder: this.outputFolder,
|
|
131
|
+
Concurrency: this.concurrency?.toString(),
|
|
132
|
+
PersonalAccessToken: `{{secrets.${this.personalAccessTokenSecret}}}`,
|
|
133
|
+
AwsAccessKeyId: `{{secrets.${this.awsAccessKeyIdSecret}}}`,
|
|
134
|
+
AwsSecretAccessKey: `{{secrets.${this.awsSecretAccessKeySecret}}}`
|
|
135
|
+
});
|
|
136
|
+
if (!newInstance) {
|
|
137
|
+
throw new Error('Failed to create Encore Packager instance');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async destroy() {
|
|
142
|
+
try {
|
|
143
|
+
this.token = await this.context.getServiceAccessToken(PACKAGER_SERVICE_ID);
|
|
144
|
+
await (0, client_core_1.removeInstance)(this.context, PACKAGER_SERVICE_ID, this.name, this.token);
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
(0, client_core_1.Log)().error(err.message);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
getOutputFolder() {
|
|
151
|
+
return this.outputFolder;
|
|
152
|
+
}
|
|
153
|
+
getName() {
|
|
154
|
+
return this.name;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.EncorePackager = EncorePackager;
|
|
3
158
|
//# sourceMappingURL=encore.js.map
|
package/lib/encore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encore.js","sourceRoot":"","sources":["../src/encore.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"encore.js","sourceRoot":"","sources":["../src/encore.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SubtitlingPool = exports.listSingleBitrateHLS = exports.removeLiveSingleBitrateHLS = exports.createLiveSingleBitrateHLS = exports.createStreamingPackage = exports.vmafCompare = exports.QueuePool = void 0;
|
|
3
|
+
exports.SubtitlingPool = exports.listSingleBitrateHLS = exports.removeLiveSingleBitrateHLS = exports.createLiveSingleBitrateHLS = exports.createStreamingPackage = exports.vmafCompare = exports.QueuePool = exports.EncorePackager = exports.EncoreCallbackListener = void 0;
|
|
4
4
|
/** @module @osaas/client-transcode */
|
|
5
|
+
var encore_1 = require("./encore");
|
|
6
|
+
Object.defineProperty(exports, "EncoreCallbackListener", { enumerable: true, get: function () { return encore_1.EncoreCallbackListener; } });
|
|
7
|
+
Object.defineProperty(exports, "EncorePackager", { enumerable: true, get: function () { return encore_1.EncorePackager; } });
|
|
5
8
|
var pool_1 = require("./pool");
|
|
6
9
|
Object.defineProperty(exports, "QueuePool", { enumerable: true, get: function () { return pool_1.QueuePool; } });
|
|
7
10
|
var vmaf_1 = require("./vmaf");
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,+BAAmC;AAA1B,iGAAA,SAAS,OAAA;AAClB,+BAAqC;AAA5B,mGAAA,WAAW,OAAA;AACpB,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA;AAC/B,+BAIgB;AAHd,kHAAA,0BAA0B,OAAA;AAC1B,kHAAA,0BAA0B,OAAA;AAC1B,4GAAA,oBAAoB,OAAA;AAEtB,2CAA8C;AAArC,4GAAA,cAAc,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,mCAAkE;AAAzD,gHAAA,sBAAsB,OAAA;AAAE,wGAAA,cAAc,OAAA;AAC/C,+BAAmC;AAA1B,iGAAA,SAAS,OAAA;AAClB,+BAAqC;AAA5B,mGAAA,WAAW,OAAA;AACpB,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA;AAC/B,+BAIgB;AAHd,kHAAA,0BAA0B,OAAA;AAC1B,kHAAA,0BAA0B,OAAA;AAC1B,4GAAA,oBAAoB,OAAA;AAEtB,2CAA8C;AAArC,4GAAA,cAAc,OAAA"}
|
package/lib/pool.d.ts
CHANGED
|
@@ -5,6 +5,11 @@ export type TranscodeOptions = {
|
|
|
5
5
|
duration?: number;
|
|
6
6
|
packageDestination?: URL;
|
|
7
7
|
};
|
|
8
|
+
export type QueuePoolOptions = {
|
|
9
|
+
context: Context;
|
|
10
|
+
size?: number;
|
|
11
|
+
usePackagingQueue?: boolean;
|
|
12
|
+
};
|
|
8
13
|
/**
|
|
9
14
|
* Represents a pool of Encore queues (instances) in Open Source Cloud
|
|
10
15
|
* @memberof module:@osaas/client-transcode
|
|
@@ -14,11 +19,15 @@ export declare class QueuePool {
|
|
|
14
19
|
private token?;
|
|
15
20
|
private instances;
|
|
16
21
|
private queueSize;
|
|
22
|
+
private redisPackagingQueue?;
|
|
23
|
+
private encoreCallbacks;
|
|
24
|
+
private encorePackager?;
|
|
17
25
|
/**
|
|
18
26
|
* @typedef QueuePoolOptions
|
|
19
27
|
* @type object
|
|
20
28
|
* @property {Context} context - Open Source Cloud configuration context
|
|
21
29
|
* @property {number} size - Number of queues in the pool
|
|
30
|
+
* @property {boolean?} usePackagingQueue - If true, use a packaging queue (default: false)
|
|
22
31
|
*/
|
|
23
32
|
/**
|
|
24
33
|
* @typedef TranscodeOptions
|
|
@@ -39,10 +48,7 @@ export declare class QueuePool {
|
|
|
39
48
|
* const pool = new QueuePool({ context: ctx, size: 2 });
|
|
40
49
|
* await pool.init();
|
|
41
50
|
*/
|
|
42
|
-
constructor({ context, size }:
|
|
43
|
-
context: Context;
|
|
44
|
-
size?: number;
|
|
45
|
-
});
|
|
51
|
+
constructor({ context, size, usePackagingQueue }: QueuePoolOptions);
|
|
46
52
|
/**
|
|
47
53
|
* Initializes the pool by creating the queues
|
|
48
54
|
* @async
|
package/lib/pool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAMR,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAMR,MAAM,oBAAoB,CAAC;AAO5B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,GAAG,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,mBAAmB,CAAC,CAAW;IACvC,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,cAAc,CAAC,CAAiB;IAExC;;;;;;OAMG;IAEH;;;;;;OAMG;IAEH;;;;;;;;;;;OAWG;gBACS,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,gBAAgB;IAalE;;;;;OAKG;IACU,IAAI;IAiDjB;;;;;OAKG;IACU,OAAO;IAkBpB;;;;;;;;;;;;;;;OAeG;IACU,SAAS,CACpB,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,GAAG,EAChB,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,gBAAgB;CAuG9D"}
|
package/lib/pool.js
CHANGED
|
@@ -5,7 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.QueuePool = void 0;
|
|
7
7
|
const client_core_1 = require("@osaas/client-core");
|
|
8
|
+
const client_db_1 = require("@osaas/client-db");
|
|
8
9
|
const util_1 = require("./util");
|
|
10
|
+
const encore_1 = require("./encore");
|
|
9
11
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
12
|
const packager_1 = require("./packager");
|
|
11
13
|
/**
|
|
@@ -17,11 +19,15 @@ class QueuePool {
|
|
|
17
19
|
token;
|
|
18
20
|
instances;
|
|
19
21
|
queueSize;
|
|
22
|
+
redisPackagingQueue;
|
|
23
|
+
encoreCallbacks;
|
|
24
|
+
encorePackager;
|
|
20
25
|
/**
|
|
21
26
|
* @typedef QueuePoolOptions
|
|
22
27
|
* @type object
|
|
23
28
|
* @property {Context} context - Open Source Cloud configuration context
|
|
24
29
|
* @property {number} size - Number of queues in the pool
|
|
30
|
+
* @property {boolean?} usePackagingQueue - If true, use a packaging queue (default: false)
|
|
25
31
|
*/
|
|
26
32
|
/**
|
|
27
33
|
* @typedef TranscodeOptions
|
|
@@ -42,10 +48,17 @@ class QueuePool {
|
|
|
42
48
|
* const pool = new QueuePool({ context: ctx, size: 2 });
|
|
43
49
|
* await pool.init();
|
|
44
50
|
*/
|
|
45
|
-
constructor({ context, size }) {
|
|
51
|
+
constructor({ context, size, usePackagingQueue }) {
|
|
46
52
|
this.context = context;
|
|
47
53
|
this.instances = [];
|
|
48
54
|
this.queueSize = size || 1;
|
|
55
|
+
if (usePackagingQueue) {
|
|
56
|
+
this.redisPackagingQueue = new client_db_1.ValkeyDb({
|
|
57
|
+
context,
|
|
58
|
+
name: 'packaging'
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
this.encoreCallbacks = {};
|
|
49
62
|
}
|
|
50
63
|
/**
|
|
51
64
|
* Initializes the pool by creating the queues
|
|
@@ -54,6 +67,13 @@ class QueuePool {
|
|
|
54
67
|
* await pool.init();
|
|
55
68
|
*/
|
|
56
69
|
async init() {
|
|
70
|
+
let redisUrl = undefined;
|
|
71
|
+
if (this.redisPackagingQueue) {
|
|
72
|
+
redisUrl = await this.redisPackagingQueue.getRedisUrl();
|
|
73
|
+
if (!redisUrl) {
|
|
74
|
+
throw new Error('Failed to get Redis URL');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
57
77
|
this.token = await this.context.getServiceAccessToken('encore');
|
|
58
78
|
if (this.instances.length > 0) {
|
|
59
79
|
throw new Error('Pool already initialized');
|
|
@@ -63,10 +83,10 @@ class QueuePool {
|
|
|
63
83
|
names.push(`node${i + 1}`);
|
|
64
84
|
}
|
|
65
85
|
for (const name of names) {
|
|
66
|
-
|
|
86
|
+
let instance = await (0, client_core_1.getInstance)(this.context, 'encore', name, this.token);
|
|
67
87
|
if (!instance) {
|
|
68
88
|
(0, client_core_1.Log)().debug(`Creating pool instance ${name}`);
|
|
69
|
-
|
|
89
|
+
instance = await (0, client_core_1.createInstance)(this.context, 'encore', this.token, {
|
|
70
90
|
name
|
|
71
91
|
});
|
|
72
92
|
await (0, util_1.delay)(5000);
|
|
@@ -75,6 +95,17 @@ class QueuePool {
|
|
|
75
95
|
else {
|
|
76
96
|
this.instances.push(instance.name);
|
|
77
97
|
}
|
|
98
|
+
if (redisUrl) {
|
|
99
|
+
const callback = new encore_1.EncoreCallbackListener({
|
|
100
|
+
context: this.context,
|
|
101
|
+
name,
|
|
102
|
+
redisUrl: redisUrl.toString(),
|
|
103
|
+
encoreUrl: instance.url.replace(/\/$/, '')
|
|
104
|
+
});
|
|
105
|
+
(0, client_core_1.Log)().debug(`Creating callback listener for ${name}`);
|
|
106
|
+
await callback.init();
|
|
107
|
+
this.encoreCallbacks[name] = callback;
|
|
108
|
+
}
|
|
78
109
|
}
|
|
79
110
|
}
|
|
80
111
|
/**
|
|
@@ -85,10 +116,19 @@ class QueuePool {
|
|
|
85
116
|
*/
|
|
86
117
|
async destroy() {
|
|
87
118
|
if (!this.token) {
|
|
88
|
-
|
|
119
|
+
this.token = await this.context.getServiceAccessToken('encore');
|
|
89
120
|
}
|
|
90
121
|
for (const instance of this.instances) {
|
|
91
122
|
await (0, client_core_1.removeInstance)(this.context, 'encore', instance, this.token);
|
|
123
|
+
if (this.encoreCallbacks[instance]) {
|
|
124
|
+
await this.encoreCallbacks[instance].destroy();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (this.encorePackager) {
|
|
128
|
+
await this.encorePackager.destroy();
|
|
129
|
+
}
|
|
130
|
+
if (this.redisPackagingQueue) {
|
|
131
|
+
await this.redisPackagingQueue.destroy();
|
|
92
132
|
}
|
|
93
133
|
}
|
|
94
134
|
/**
|
|
@@ -125,6 +165,7 @@ class QueuePool {
|
|
|
125
165
|
outputFolder: `/usercontent/${jobId}`,
|
|
126
166
|
baseName: jobId,
|
|
127
167
|
duration: duration,
|
|
168
|
+
progressCallbackUri: this.encoreCallbacks[name]?.getCallbackUrl(),
|
|
128
169
|
inputs: [
|
|
129
170
|
{
|
|
130
171
|
type: 'AudioVideo',
|
|
@@ -138,20 +179,43 @@ class QueuePool {
|
|
|
138
179
|
}
|
|
139
180
|
});
|
|
140
181
|
const encoreJob = JSON.parse(data);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
182
|
+
if (!this.encoreCallbacks[name]?.getCallbackUrl()) {
|
|
183
|
+
const job = await (0, util_1.waitForEncoreJobToComplete)(new URL(encoreJobUrl.toString() + '/' + encoreJob.id), this.token, this.context);
|
|
184
|
+
(0, client_core_1.Log)().debug(job);
|
|
185
|
+
const outputFiles = job.output.filter((file) => file.type === 'VideoFile' || file.type === 'AudioFile');
|
|
186
|
+
const transferPromises = outputFiles.map((file) => (0, util_1.transferFile)(this.context, node_path_1.default.basename(file.file), new URL(file.file, instance.url), destination, this.token || ''));
|
|
187
|
+
await Promise.all(transferPromises);
|
|
188
|
+
if (packageDestination) {
|
|
189
|
+
(0, client_core_1.Log)().debug(`Creating streaming package on ${packageDestination}`);
|
|
190
|
+
const videos = outputFiles
|
|
191
|
+
.filter((file) => file.type === 'VideoFile')
|
|
192
|
+
.map((file) => node_path_1.default.basename(file.file));
|
|
193
|
+
const audio = outputFiles.find((file) => file.type === 'AudioFile')?.file;
|
|
194
|
+
(0, client_core_1.Log)().debug(videos, audio);
|
|
195
|
+
if (videos && audio) {
|
|
196
|
+
await (0, packager_1.createStreamingPackage)(this.context, destination, videos, node_path_1.default.basename(audio), packageDestination);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
if (packageDestination) {
|
|
202
|
+
// Create packaging queue processor
|
|
203
|
+
if (!this.redisPackagingQueue) {
|
|
204
|
+
throw new Error('Packaging queue not initialized');
|
|
205
|
+
}
|
|
206
|
+
const redisUrl = await this.redisPackagingQueue.getRedisUrl();
|
|
207
|
+
if (!redisUrl) {
|
|
208
|
+
throw new Error('Failed to get Redis URL');
|
|
209
|
+
}
|
|
210
|
+
this.encorePackager = new encore_1.EncorePackager({
|
|
211
|
+
context: this.context,
|
|
212
|
+
name: 'packager',
|
|
213
|
+
redisUrl: redisUrl.toString(),
|
|
214
|
+
outputFolder: packageDestination.toString()
|
|
215
|
+
});
|
|
216
|
+
await this.encorePackager.init();
|
|
217
|
+
(0, client_core_1.Log)().info('Streaming packaging delegated to Encore Packager to output to ' +
|
|
218
|
+
packageDestination);
|
|
155
219
|
}
|
|
156
220
|
}
|
|
157
221
|
}
|
package/lib/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":";;;;;;AAAA,oDAO4B;AAC5B,iCAAyE;
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osaas/client-transcode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Open Source Cloud Client SDK transcode library",
|
|
5
5
|
"author": "Eyevinn Technology <work@eyevinn.se>",
|
|
6
6
|
"homepage": "https://www.osaas.io",
|
|
@@ -25,11 +25,12 @@
|
|
|
25
25
|
"test": "jest --passWithNoTests"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@osaas/client-core": "^0.
|
|
28
|
+
"@osaas/client-core": "^0.9.0",
|
|
29
|
+
"@osaas/client-db": "^0.2.0",
|
|
29
30
|
"chalk": "4.1.2"
|
|
30
31
|
},
|
|
31
32
|
"publishConfig": {
|
|
32
33
|
"access": "public"
|
|
33
34
|
},
|
|
34
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "b80ac35f717ad81d9684a3316f7226255da7b673"
|
|
35
36
|
}
|