@quatrain/worker 1.1.22 → 1.1.25
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/FileSystem.js +6 -2
- package/lib/Helpers.d.ts +11 -0
- package/lib/Helpers.js +39 -0
- package/lib/Worker.js +0 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -1
- package/package.json +2 -2
package/lib/FileSystem.js
CHANGED
|
@@ -91,6 +91,7 @@ class FileSystem {
|
|
|
91
91
|
static uploadFile(filename, meta, mime = 'video/mp4') {
|
|
92
92
|
// try to get more file metadata
|
|
93
93
|
meta = { ...meta, ...FileSystem.getInfo(filename) };
|
|
94
|
+
Worker_1.Worker.info(`Uploading file ${filename} to ${meta.uploadUrl}`);
|
|
94
95
|
return new Promise((resolve, reject) => {
|
|
95
96
|
try {
|
|
96
97
|
let done = 0; // total bytes uploaded
|
|
@@ -119,7 +120,10 @@ class FileSystem {
|
|
|
119
120
|
},
|
|
120
121
|
})
|
|
121
122
|
.then(() => resolve({ ...meta, size, uploadUrl: undefined }))
|
|
122
|
-
.catch((err) =>
|
|
123
|
+
.catch((err) => {
|
|
124
|
+
Worker_1.Worker.error(`An error occured while uploading ${filename}: ${err.message}`);
|
|
125
|
+
reject(err);
|
|
126
|
+
});
|
|
123
127
|
}
|
|
124
128
|
catch (err) {
|
|
125
129
|
Worker_1.Worker.error(err);
|
|
@@ -137,7 +141,7 @@ class FileSystem {
|
|
|
137
141
|
Worker_1.Worker.error(err);
|
|
138
142
|
reject(err);
|
|
139
143
|
}
|
|
140
|
-
|
|
144
|
+
// Worker.debug(`ffprobe getInfo: ${JSON.stringify(metadata)}`)
|
|
141
145
|
const { width, height, duration, bit_rate: bitrate, nb_frames: nbFramees, } = metadata.streams[0];
|
|
142
146
|
const nb_frames = parseFloat(nbFramees);
|
|
143
147
|
const framerate = nb_frames / parseFloat(duration);
|
package/lib/Helpers.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class Helpers {
|
|
2
|
+
static FFMPEG: string;
|
|
3
|
+
/**
|
|
4
|
+
* Generate a thubnail from a video file at given frame position
|
|
5
|
+
* @param videoPath path to video file
|
|
6
|
+
* @param frame frame to extract thumbnail from
|
|
7
|
+
* @param width width of thumbnail (4/3 ratio)
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
static generateVideoThumbnail: (videoPath: string, frame?: number, width?: number) => Promise<any>;
|
|
11
|
+
}
|
package/lib/Helpers.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Helpers = void 0;
|
|
7
|
+
const Worker_1 = require("./Worker");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
class Helpers {
|
|
10
|
+
static FFMPEG = '/usr/bin/ffmpeg';
|
|
11
|
+
/**
|
|
12
|
+
* Generate a thubnail from a video file at given frame position
|
|
13
|
+
* @param videoPath path to video file
|
|
14
|
+
* @param frame frame to extract thumbnail from
|
|
15
|
+
* @param width width of thumbnail (4/3 ratio)
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
static generateVideoThumbnail = async (videoPath, frame = 0, width = 320) => {
|
|
19
|
+
const resolution = `${width}x${Math.ceil(width * 0.75)}`;
|
|
20
|
+
const outputPath = path_1.default.resolve(videoPath.split('.')[0], `_${frame}_${resolution}.jpg`);
|
|
21
|
+
const ffmpegParams = [
|
|
22
|
+
'-i',
|
|
23
|
+
videoPath,
|
|
24
|
+
'-vframes',
|
|
25
|
+
'1',
|
|
26
|
+
'-vf',
|
|
27
|
+
`select=gte(n\,${frame})`,
|
|
28
|
+
'-s',
|
|
29
|
+
resolution,
|
|
30
|
+
'-ss',
|
|
31
|
+
'1',
|
|
32
|
+
outputPath,
|
|
33
|
+
'-y',
|
|
34
|
+
];
|
|
35
|
+
Worker_1.Worker.info(`Generating Thumbnail : ${outputPath}`);
|
|
36
|
+
return await Worker_1.Worker.execPromise(Helpers.FFMPEG, ffmpegParams);
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
exports.Helpers = Helpers;
|
package/lib/Worker.js
CHANGED
|
@@ -76,7 +76,6 @@ class Worker extends core_1.Core {
|
|
|
76
76
|
*/
|
|
77
77
|
static handler = async (messageHandler, config) => {
|
|
78
78
|
try {
|
|
79
|
-
Worker.info(`Worker version ${require('../package.json').version} started in ${config.mode} mode`);
|
|
80
79
|
switch (config.mode) {
|
|
81
80
|
case 'queue':
|
|
82
81
|
const { Queue } = require('@quatrain/queue');
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Worker } from './Worker';
|
|
2
2
|
import { FileSystem } from './FileSystem';
|
|
3
|
+
import { Helpers } from './Helpers';
|
|
3
4
|
import { HandlerParameters } from './types/HandlerParameters';
|
|
4
5
|
import { ModeEnum } from './types/ModeEnum';
|
|
5
|
-
export { Worker, FileSystem, ModeEnum, HandlerParameters };
|
|
6
|
+
export { Worker, FileSystem, Helpers, ModeEnum, HandlerParameters };
|
package/lib/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModeEnum = exports.FileSystem = exports.Worker = void 0;
|
|
3
|
+
exports.ModeEnum = exports.Helpers = exports.FileSystem = exports.Worker = void 0;
|
|
4
4
|
const Worker_1 = require("./Worker");
|
|
5
5
|
Object.defineProperty(exports, "Worker", { enumerable: true, get: function () { return Worker_1.Worker; } });
|
|
6
6
|
const FileSystem_1 = require("./FileSystem");
|
|
7
7
|
Object.defineProperty(exports, "FileSystem", { enumerable: true, get: function () { return FileSystem_1.FileSystem; } });
|
|
8
|
+
const Helpers_1 = require("./Helpers");
|
|
9
|
+
Object.defineProperty(exports, "Helpers", { enumerable: true, get: function () { return Helpers_1.Helpers; } });
|
|
8
10
|
const ModeEnum_1 = require("./types/ModeEnum");
|
|
9
11
|
Object.defineProperty(exports, "ModeEnum", { enumerable: true, get: function () { return ModeEnum_1.ModeEnum; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quatrain/worker",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.25",
|
|
4
4
|
"description": "Container Worker helpers",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@quatrain/core": "^1.1.19",
|
|
29
|
-
"@quatrain/queue": "^1.1.
|
|
29
|
+
"@quatrain/queue": "^1.1.16",
|
|
30
30
|
"axios": "^1.7.7",
|
|
31
31
|
"fluent-ffmpeg": "^2.1.2",
|
|
32
32
|
"fs-extra": "^11.2.0",
|