@osaas/client-transcode 0.4.0 → 0.6.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/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -1
- package/lib/index.js.map +1 -1
- package/lib/live.d.ts +12 -0
- package/lib/live.d.ts.map +1 -0
- package/lib/live.js +37 -0
- package/lib/live.js.map +1 -0
- package/lib/packager.d.ts +23 -0
- package/lib/packager.d.ts.map +1 -1
- package/lib/packager.js +23 -0
- package/lib/packager.js.map +1 -1
- package/lib/pool.d.ts +17 -10
- package/lib/pool.d.ts.map +1 -1
- package/lib/pool.js +24 -7
- package/lib/pool.js.map +1 -1
- package/lib/vmaf.d.ts +2 -0
- package/lib/vmaf.d.ts.map +1 -1
- package/lib/vmaf.js +2 -0
- package/lib/vmaf.js.map +1 -1
- package/package.json +3 -3
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
/** @module @osaas/client-transcode */
|
|
1
2
|
export { QueuePool } from './pool';
|
|
2
3
|
export { vmafCompare } from './vmaf';
|
|
3
4
|
export { createStreamingPackage } from './packager';
|
|
5
|
+
export { createLiveSingleBitrateHLS, removeLiveSingleBitrateHLS, listSingleBitrateHLS } from './live';
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
|
|
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"}
|
package/lib/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createStreamingPackage = exports.vmafCompare = exports.QueuePool = void 0;
|
|
3
|
+
exports.listSingleBitrateHLS = exports.removeLiveSingleBitrateHLS = exports.createLiveSingleBitrateHLS = exports.createStreamingPackage = exports.vmafCompare = exports.QueuePool = void 0;
|
|
4
|
+
/** @module @osaas/client-transcode */
|
|
4
5
|
var pool_1 = require("./pool");
|
|
5
6
|
Object.defineProperty(exports, "QueuePool", { enumerable: true, get: function () { return pool_1.QueuePool; } });
|
|
6
7
|
var vmaf_1 = require("./vmaf");
|
|
7
8
|
Object.defineProperty(exports, "vmafCompare", { enumerable: true, get: function () { return vmaf_1.vmafCompare; } });
|
|
8
9
|
var packager_1 = require("./packager");
|
|
9
10
|
Object.defineProperty(exports, "createStreamingPackage", { enumerable: true, get: function () { return packager_1.createStreamingPackage; } });
|
|
11
|
+
var live_1 = require("./live");
|
|
12
|
+
Object.defineProperty(exports, "createLiveSingleBitrateHLS", { enumerable: true, get: function () { return live_1.createLiveSingleBitrateHLS; } });
|
|
13
|
+
Object.defineProperty(exports, "removeLiveSingleBitrateHLS", { enumerable: true, get: function () { return live_1.removeLiveSingleBitrateHLS; } });
|
|
14
|
+
Object.defineProperty(exports, "listSingleBitrateHLS", { enumerable: true, get: function () { return live_1.listSingleBitrateHLS; } });
|
|
10
15
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAAmC;AAA1B,iGAAA,SAAS,OAAA;AAClB,+BAAqC;AAA5B,mGAAA,WAAW,OAAA;AACpB,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA"}
|
|
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"}
|
package/lib/live.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Context } from '@osaas/client-core';
|
|
3
|
+
export declare function createLiveSingleBitrateHLS(ctx: Context, name: string): Promise<{
|
|
4
|
+
rtmpUrl: URL;
|
|
5
|
+
hlsUrl: URL;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function removeLiveSingleBitrateHLS(ctx: Context, name: string): Promise<void>;
|
|
8
|
+
export declare function listSingleBitrateHLS(ctx: Context): Promise<{
|
|
9
|
+
name: string;
|
|
10
|
+
hlsUrl: URL;
|
|
11
|
+
}[]>;
|
|
12
|
+
//# sourceMappingURL=live.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAKR,MAAM,oBAAoB,CAAC;AAE5B,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,CAAC,CAsBxC;AAED,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAG1E;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,EAAE,CAAC,CAU1C"}
|
package/lib/live.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listSingleBitrateHLS = exports.removeLiveSingleBitrateHLS = exports.createLiveSingleBitrateHLS = void 0;
|
|
4
|
+
const client_core_1 = require("@osaas/client-core");
|
|
5
|
+
async function createLiveSingleBitrateHLS(ctx, name) {
|
|
6
|
+
const serviceAccessToken = await ctx.getServiceAccessToken('ossrs-srs');
|
|
7
|
+
const encoder = await (0, client_core_1.createInstance)(ctx, 'ossrs-srs', serviceAccessToken, {
|
|
8
|
+
name
|
|
9
|
+
});
|
|
10
|
+
const ports = await (0, client_core_1.getPortsForInstance)(ctx, 'ossrs-srs', encoder.name, serviceAccessToken);
|
|
11
|
+
const rtmpPort = ports.find((port) => port.internalPort == 1935);
|
|
12
|
+
if (!rtmpPort) {
|
|
13
|
+
throw new Error('Instance has no RTMP port mapped');
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
rtmpUrl: new URL(`rtmp://${rtmpPort.externalIp}:${rtmpPort.externalPort}/live/livestream`),
|
|
17
|
+
hlsUrl: new URL(encoder.url + '/live/livestream.m3u8')
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
exports.createLiveSingleBitrateHLS = createLiveSingleBitrateHLS;
|
|
21
|
+
async function removeLiveSingleBitrateHLS(ctx, name) {
|
|
22
|
+
const serviceAccessToken = await ctx.getServiceAccessToken('ossrs-srs');
|
|
23
|
+
await (0, client_core_1.removeInstance)(ctx, 'ossrs-srs', name, serviceAccessToken);
|
|
24
|
+
}
|
|
25
|
+
exports.removeLiveSingleBitrateHLS = removeLiveSingleBitrateHLS;
|
|
26
|
+
async function listSingleBitrateHLS(ctx) {
|
|
27
|
+
const serviceAccessToken = await ctx.getServiceAccessToken('ossrs-srs');
|
|
28
|
+
const instances = await (0, client_core_1.listInstances)(ctx, 'ossrs-srs', serviceAccessToken);
|
|
29
|
+
return instances.map((instance) => {
|
|
30
|
+
return {
|
|
31
|
+
name: instance.name,
|
|
32
|
+
hlsUrl: new URL(instance.url + '/live/livestream.m3u8')
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
exports.listSingleBitrateHLS = listSingleBitrateHLS;
|
|
37
|
+
//# sourceMappingURL=live.js.map
|
package/lib/live.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":";;;AAAA,oDAM4B;AAErB,KAAK,UAAU,0BAA0B,CAC9C,GAAY,EACZ,IAAY;IAEZ,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAExE,MAAM,OAAO,GAAG,MAAM,IAAA,4BAAc,EAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE;QACzE,IAAI;KACL,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,IAAA,iCAAmB,EACrC,GAAG,EACH,WAAW,EACX,OAAO,CAAC,IAAI,EACZ,kBAAkB,CACnB,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;KACrD;IACD,OAAO;QACL,OAAO,EAAE,IAAI,GAAG,CACd,UAAU,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,YAAY,kBAAkB,CACzE;QACD,MAAM,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,uBAAuB,CAAC;KACvD,CAAC;AACJ,CAAC;AAzBD,gEAyBC;AAEM,KAAK,UAAU,0BAA0B,CAAC,GAAY,EAAE,IAAY;IACzE,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACxE,MAAM,IAAA,4BAAc,EAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACnE,CAAC;AAHD,gEAGC;AAEM,KAAK,UAAU,oBAAoB,CACxC,GAAY;IAEZ,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAExE,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAa,EAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC5E,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAuC,EAAE,EAAE;QAC/D,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,uBAAuB,CAAC;SACxD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAZD,oDAYC"}
|
package/lib/packager.d.ts
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Context } from '@osaas/client-core';
|
|
3
|
+
/**
|
|
4
|
+
* Create a HLS and MPEG-DASH streaming package
|
|
5
|
+
*
|
|
6
|
+
* @async
|
|
7
|
+
* @memberof module:@osaas/client-transcode
|
|
8
|
+
* @param {Context} ctx - Open Source Cloud configuration context
|
|
9
|
+
* @param {URL} sourceBucket - URL to source bucket (supported protocols: s3)
|
|
10
|
+
* @param {string[]} videos - List of video files in source bucket
|
|
11
|
+
* @param {string} audio - Audio file in source bucket
|
|
12
|
+
* @param {URL} resultBucket - URL to bucket where streaming package will be stored (supported protocols: s3)
|
|
13
|
+
* @example
|
|
14
|
+
* import { Context } from '@osaas/client-core';
|
|
15
|
+
* import { createStreamingPackage } from '@osaas/client-transcode';
|
|
16
|
+
*
|
|
17
|
+
* const ctx = new Context();
|
|
18
|
+
* await createStreamingPackage(
|
|
19
|
+
* ctx,
|
|
20
|
+
* new URL('s3://video/abr'),
|
|
21
|
+
* ['video1080p.mp4', 'video720p.mp4', 'video360p.mp4'],
|
|
22
|
+
* 'audio.mp4',
|
|
23
|
+
* new URL('s3://video/streaming')
|
|
24
|
+
* );
|
|
25
|
+
*/
|
|
3
26
|
export declare function createStreamingPackage(ctx: Context, sourceBucket: URL, videos: string[], audio: string, resultBucket: URL): Promise<void>;
|
|
4
27
|
//# sourceMappingURL=packager.d.ts.map
|
package/lib/packager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packager.d.ts","sourceRoot":"","sources":["../src/packager.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAIR,MAAM,oBAAoB,CAAC;AAE5B,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EACZ,YAAY,EAAE,GAAG,EACjB,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,GAAG,iBAoClB"}
|
|
1
|
+
{"version":3,"file":"packager.d.ts","sourceRoot":"","sources":["../src/packager.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAIR,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,OAAO,EACZ,YAAY,EAAE,GAAG,EACjB,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,GAAG,iBAoClB"}
|
package/lib/packager.js
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createStreamingPackage = void 0;
|
|
4
4
|
const client_core_1 = require("@osaas/client-core");
|
|
5
|
+
/**
|
|
6
|
+
* Create a HLS and MPEG-DASH streaming package
|
|
7
|
+
*
|
|
8
|
+
* @async
|
|
9
|
+
* @memberof module:@osaas/client-transcode
|
|
10
|
+
* @param {Context} ctx - Open Source Cloud configuration context
|
|
11
|
+
* @param {URL} sourceBucket - URL to source bucket (supported protocols: s3)
|
|
12
|
+
* @param {string[]} videos - List of video files in source bucket
|
|
13
|
+
* @param {string} audio - Audio file in source bucket
|
|
14
|
+
* @param {URL} resultBucket - URL to bucket where streaming package will be stored (supported protocols: s3)
|
|
15
|
+
* @example
|
|
16
|
+
* import { Context } from '@osaas/client-core';
|
|
17
|
+
* import { createStreamingPackage } from '@osaas/client-transcode';
|
|
18
|
+
*
|
|
19
|
+
* const ctx = new Context();
|
|
20
|
+
* await createStreamingPackage(
|
|
21
|
+
* ctx,
|
|
22
|
+
* new URL('s3://video/abr'),
|
|
23
|
+
* ['video1080p.mp4', 'video720p.mp4', 'video360p.mp4'],
|
|
24
|
+
* 'audio.mp4',
|
|
25
|
+
* new URL('s3://video/streaming')
|
|
26
|
+
* );
|
|
27
|
+
*/
|
|
5
28
|
async function createStreamingPackage(ctx, sourceBucket, videos, audio, resultBucket) {
|
|
6
29
|
const serviceAccessToken = await ctx.getServiceAccessToken('eyevinn-shaka-packager-s3');
|
|
7
30
|
if (!process.env.AWS_ACCESS_KEY_ID || !process.env.AWS_SECRET_ACCESS_KEY) {
|
package/lib/packager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packager.js","sourceRoot":"","sources":["../src/packager.ts"],"names":[],"mappings":";;;AAAA,oDAK4B;
|
|
1
|
+
{"version":3,"file":"packager.js","sourceRoot":"","sources":["../src/packager.ts"],"names":[],"mappings":";;;AAAA,oDAK4B;AAE5B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACI,KAAK,UAAU,sBAAsB,CAC1C,GAAY,EACZ,YAAiB,EACjB,MAAgB,EAChB,KAAa,EACb,YAAiB;IAEjB,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,qBAAqB,CACxD,2BAA2B,CAC5B,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE;QACxE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,SAAS,GAAG,QAAQ,GAAG,IAAI,KAAK,EAAE,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,SAAS,IAAI,SAAS,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,IAAI,SAAS,EAAE,CAAC;IACzF,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAS,EACzB,GAAG,EACH,2BAA2B,EAC3B,kBAAkB,EAClB;QACE,IAAI,EAAE,KAAK;QACX,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7C,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACrD,WAAW;KACZ,CACF,CAAC;IACF,IAAA,iBAAG,GAAE,CAAC,KAAK,CACT,kCAAkC,MAAM,CAAC,MAAM,4BAA4B,CAC5E,CAAC;IACF,MAAM,IAAA,kCAAoB,EACxB,GAAG,EACH,2BAA2B,EAC3B,GAAG,CAAC,IAAI,EACR,kBAAkB,CACnB,CAAC;IACF,IAAA,iBAAG,GAAE,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;AACvD,CAAC;AAzCD,wDAyCC"}
|
package/lib/pool.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Context } from '@osaas/client-core';
|
|
3
|
+
export type TranscodeOptions = {
|
|
4
|
+
profile?: string;
|
|
5
|
+
duration?: number;
|
|
6
|
+
packageDestination?: URL;
|
|
7
|
+
};
|
|
3
8
|
/**
|
|
4
9
|
* Represents a pool of Encore queues (instances) in Open Source Cloud
|
|
10
|
+
* @memberof module:@osaas/client-transcode
|
|
5
11
|
*/
|
|
6
12
|
export declare class QueuePool {
|
|
7
13
|
private context;
|
|
@@ -14,6 +20,13 @@ export declare class QueuePool {
|
|
|
14
20
|
* @property {Context} context - Open Source Cloud configuration context
|
|
15
21
|
* @property {number} size - Number of queues in the pool
|
|
16
22
|
*/
|
|
23
|
+
/**
|
|
24
|
+
* @typedef TranscodeOptions
|
|
25
|
+
* @type object
|
|
26
|
+
* @property {string?} profile - Transcoding profile to use (default: program)
|
|
27
|
+
* @property {number?} duration - Duration in seconds (default: entire file)
|
|
28
|
+
* @property {URL?} packageDestination - If provided create a streaming package and store here
|
|
29
|
+
*/
|
|
17
30
|
/**
|
|
18
31
|
* Creates a new Queue Pool
|
|
19
32
|
* @constructor
|
|
@@ -44,12 +57,6 @@ export declare class QueuePool {
|
|
|
44
57
|
* await pool.destroy();
|
|
45
58
|
*/
|
|
46
59
|
destroy(): Promise<void>;
|
|
47
|
-
/**
|
|
48
|
-
* @typedef TranscodeOptions
|
|
49
|
-
* @type object
|
|
50
|
-
* @property {string?} profile - Transcoding profile to use (default: program)
|
|
51
|
-
* @property {number?} duration - Duration in seconds (default: entire file)
|
|
52
|
-
*/
|
|
53
60
|
/**
|
|
54
61
|
* Transcodes a media file into an ABR bundle that is transferred to a destination
|
|
55
62
|
* @async
|
|
@@ -62,10 +69,10 @@ export declare class QueuePool {
|
|
|
62
69
|
*
|
|
63
70
|
* // Transcode the first 10 seconds of the video
|
|
64
71
|
* await pool.transcode(source, destination, { duration: 10 });
|
|
72
|
+
*
|
|
73
|
+
* // Transcode the entire video and create a streaming package
|
|
74
|
+
* await pool.transcode(source, destination, { packageDestination: new URL('s3://mybucket/streaming/') });
|
|
65
75
|
*/
|
|
66
|
-
transcode(source: URL, destination: URL, { profile, duration }:
|
|
67
|
-
profile?: string;
|
|
68
|
-
duration?: number;
|
|
69
|
-
}): Promise<void>;
|
|
76
|
+
transcode(source: URL, destination: URL, { profile, duration, packageDestination }: TranscodeOptions): Promise<void>;
|
|
70
77
|
}
|
|
71
78
|
//# sourceMappingURL=pool.d.ts.map
|
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;AAM5B,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;;;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;IAE1B;;;;;OAKG;IAEH;;;;;;OAMG;IAEH;;;;;;;;;;;OAWG;gBACS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAMlE;;;;;OAKG;IACU,IAAI;IAmCjB;;;;;OAKG;IACU,OAAO;IASpB;;;;;;;;;;;;;;;OAeG;IACU,SAAS,CACpB,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,GAAG,EAChB,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,gBAAgB;CA2E9D"}
|
package/lib/pool.js
CHANGED
|
@@ -7,8 +7,10 @@ exports.QueuePool = void 0;
|
|
|
7
7
|
const client_core_1 = require("@osaas/client-core");
|
|
8
8
|
const util_1 = require("./util");
|
|
9
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const packager_1 = require("./packager");
|
|
10
11
|
/**
|
|
11
12
|
* Represents a pool of Encore queues (instances) in Open Source Cloud
|
|
13
|
+
* @memberof module:@osaas/client-transcode
|
|
12
14
|
*/
|
|
13
15
|
class QueuePool {
|
|
14
16
|
context;
|
|
@@ -21,6 +23,13 @@ class QueuePool {
|
|
|
21
23
|
* @property {Context} context - Open Source Cloud configuration context
|
|
22
24
|
* @property {number} size - Number of queues in the pool
|
|
23
25
|
*/
|
|
26
|
+
/**
|
|
27
|
+
* @typedef TranscodeOptions
|
|
28
|
+
* @type object
|
|
29
|
+
* @property {string?} profile - Transcoding profile to use (default: program)
|
|
30
|
+
* @property {number?} duration - Duration in seconds (default: entire file)
|
|
31
|
+
* @property {URL?} packageDestination - If provided create a streaming package and store here
|
|
32
|
+
*/
|
|
24
33
|
/**
|
|
25
34
|
* Creates a new Queue Pool
|
|
26
35
|
* @constructor
|
|
@@ -82,12 +91,6 @@ class QueuePool {
|
|
|
82
91
|
await (0, client_core_1.removeInstance)(this.context, 'encore', instance, this.token);
|
|
83
92
|
}
|
|
84
93
|
}
|
|
85
|
-
/**
|
|
86
|
-
* @typedef TranscodeOptions
|
|
87
|
-
* @type object
|
|
88
|
-
* @property {string?} profile - Transcoding profile to use (default: program)
|
|
89
|
-
* @property {number?} duration - Duration in seconds (default: entire file)
|
|
90
|
-
*/
|
|
91
94
|
/**
|
|
92
95
|
* Transcodes a media file into an ABR bundle that is transferred to a destination
|
|
93
96
|
* @async
|
|
@@ -100,8 +103,11 @@ class QueuePool {
|
|
|
100
103
|
*
|
|
101
104
|
* // Transcode the first 10 seconds of the video
|
|
102
105
|
* await pool.transcode(source, destination, { duration: 10 });
|
|
106
|
+
*
|
|
107
|
+
* // Transcode the entire video and create a streaming package
|
|
108
|
+
* await pool.transcode(source, destination, { packageDestination: new URL('s3://mybucket/streaming/') });
|
|
103
109
|
*/
|
|
104
|
-
async transcode(source, destination, { profile, duration }) {
|
|
110
|
+
async transcode(source, destination, { profile, duration, packageDestination }) {
|
|
105
111
|
if (!this.token) {
|
|
106
112
|
throw new Error('Pool not initialized');
|
|
107
113
|
}
|
|
@@ -137,6 +143,17 @@ class QueuePool {
|
|
|
137
143
|
const outputFiles = job.output.filter((file) => file.type === 'VideoFile' || file.type === 'AudioFile');
|
|
138
144
|
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 || ''));
|
|
139
145
|
await Promise.all(transferPromises);
|
|
146
|
+
if (packageDestination) {
|
|
147
|
+
(0, client_core_1.Log)().debug(`Creating streaming package on ${packageDestination}`);
|
|
148
|
+
const videos = outputFiles
|
|
149
|
+
.filter((file) => file.type === 'VideoFile')
|
|
150
|
+
.map((file) => node_path_1.default.basename(file.file));
|
|
151
|
+
const audio = outputFiles.find((file) => file.type === 'AudioFile')?.file;
|
|
152
|
+
(0, client_core_1.Log)().debug(videos, audio);
|
|
153
|
+
if (videos && audio) {
|
|
154
|
+
await (0, packager_1.createStreamingPackage)(this.context, destination, videos, node_path_1.default.basename(audio), packageDestination);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
140
157
|
}
|
|
141
158
|
}
|
|
142
159
|
exports.QueuePool = QueuePool;
|
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;AAEzE,0DAA6B;
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/lib/vmaf.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { Context } from '@osaas/client-core';
|
|
|
3
3
|
/**
|
|
4
4
|
* Compare two video files using VMAF
|
|
5
5
|
*
|
|
6
|
+
* @async
|
|
7
|
+
* @memberof module:@osaas/client-transcode
|
|
6
8
|
* @param {Context} ctx - Open Source Cloud configuration context
|
|
7
9
|
* @param {URL} reference - URL to reference video file (supported protocols: s3)
|
|
8
10
|
* @param {URL} distorted - URL to distorted video file (supported protocols: s3)
|
package/lib/vmaf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vmaf.d.ts","sourceRoot":"","sources":["../src/vmaf.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAIR,MAAM,oBAAoB,CAAC;AAG5B
|
|
1
|
+
{"version":3,"file":"vmaf.d.ts","sourceRoot":"","sources":["../src/vmaf.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAIR,MAAM,oBAAoB,CAAC;AAG5B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,GAAG,EACd,YAAY,EAAE,GAAG,GAChB,OAAO,CAAC,GAAG,CAAC,CA6Bd"}
|
package/lib/vmaf.js
CHANGED
|
@@ -9,6 +9,8 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
9
9
|
/**
|
|
10
10
|
* Compare two video files using VMAF
|
|
11
11
|
*
|
|
12
|
+
* @async
|
|
13
|
+
* @memberof module:@osaas/client-transcode
|
|
12
14
|
* @param {Context} ctx - Open Source Cloud configuration context
|
|
13
15
|
* @param {URL} reference - URL to reference video file (supported protocols: s3)
|
|
14
16
|
* @param {URL} distorted - URL to distorted video file (supported protocols: s3)
|
package/lib/vmaf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vmaf.js","sourceRoot":"","sources":["../src/vmaf.ts"],"names":[],"mappings":";;;;;;AAAA,oDAK4B;AAC5B,0DAA6B;AAE7B
|
|
1
|
+
{"version":3,"file":"vmaf.js","sourceRoot":"","sources":["../src/vmaf.ts"],"names":[],"mappings":";;;;;;AAAA,oDAK4B;AAC5B,0DAA6B;AAE7B;;;;;;;;;;;;;;;;;;;GAmBG;AACI,KAAK,UAAU,WAAW,CAC/B,GAAY,EACZ,SAAc,EACd,SAAc,EACd,YAAiB;IAEjB,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,qBAAqB,CACxD,qBAAqB,CACtB,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,GAAG,YAAY;SAC/B,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,mBAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC;IAE3E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE;QACxE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC5C;IACD,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAS,EAAC,GAAG,EAAE,qBAAqB,EAAE,kBAAkB,EAAE;QAC1E,IAAI,EAAE,KAAK;QACX,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7C,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACrD,WAAW,EAAE,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,SAAS,CAAC,QAAQ,EAAE,OAAO,UAAU,EAAE;KACtF,CAAC,CAAC;IACH,IAAA,iBAAG,GAAE,CAAC,KAAK,CACT,kBAAkB,SAAS,CAAC,QAAQ,EAAE,SAAS,SAAS,CAAC,QAAQ,EAAE,EAAE,CACtE,CAAC;IACF,MAAM,IAAA,kCAAoB,EACxB,GAAG,EACH,qBAAqB,EACrB,GAAG,CAAC,IAAI,EACR,kBAAkB,CACnB,CAAC;IACF,IAAA,iBAAG,GAAE,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC;IACrD,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7B,CAAC;AAlCD,kCAkCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osaas/client-transcode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.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,11 @@
|
|
|
25
25
|
"test": "jest --passWithNoTests"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@osaas/client-core": "^0.
|
|
28
|
+
"@osaas/client-core": "^0.7.0",
|
|
29
29
|
"chalk": "4.1.2"
|
|
30
30
|
},
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "c0a201146ca9996b48b5b436a4bee414c2401dcb"
|
|
35
35
|
}
|