@xyo-network/image-thumbnail-plugin 2.72.8 → 2.73.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/dist/cjs/Diviner/Diviner.js +3 -3
- package/dist/cjs/Diviner/Diviner.js.map +1 -1
- package/dist/cjs/Witness/Witness.js +3 -5
- package/dist/cjs/Witness/Witness.js.map +1 -1
- package/dist/cjs/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.js +58 -37
- package/dist/cjs/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.js.map +1 -1
- package/dist/cjs/Witness/ffmpeg/spawn/executeFfmpeg.js +8 -9
- package/dist/cjs/Witness/ffmpeg/spawn/executeFfmpeg.js.map +1 -1
- package/dist/esm/Diviner/Diviner.js +1 -1
- package/dist/esm/Diviner/Diviner.js.map +1 -1
- package/dist/esm/Witness/Witness.js +2 -4
- package/dist/esm/Witness/Witness.js.map +1 -1
- package/dist/esm/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.js +59 -38
- package/dist/esm/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.js.map +1 -1
- package/dist/esm/Witness/ffmpeg/spawn/executeFfmpeg.js +8 -9
- package/dist/esm/Witness/ffmpeg/spawn/executeFfmpeg.js.map +1 -1
- package/dist/types/Diviner/Diviner.d.ts.map +1 -1
- package/dist/types/Witness/Witness.d.ts.map +1 -1
- package/dist/types/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.ts.map +1 -1
- package/dist/types/Witness/ffmpeg/spawn/executeFfmpeg.d.ts.map +1 -1
- package/package.json +19 -19
- package/src/Diviner/Diviner.ts +1 -1
- package/src/Witness/Witness.ts +2 -4
- package/src/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.ts +61 -43
- package/src/Witness/ffmpeg/spawn/executeFfmpeg.ts +7 -11
- package/dist/docs.json +0 -50473
|
@@ -4,13 +4,13 @@ exports.ImageThumbnailDiviner = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const assert_1 = require("@xylabs/assert");
|
|
6
6
|
const delay_1 = require("@xylabs/delay");
|
|
7
|
+
const lodash_1 = require("@xylabs/lodash");
|
|
7
8
|
const abstract_diviner_1 = require("@xyo-network/abstract-diviner");
|
|
8
9
|
const archivist_model_1 = require("@xyo-network/archivist-model");
|
|
9
10
|
const core_1 = require("@xyo-network/core");
|
|
10
11
|
const diviner_model_1 = require("@xyo-network/diviner-model");
|
|
11
12
|
const diviner_payload_model_1 = require("@xyo-network/diviner-payload-model");
|
|
12
13
|
const image_thumbnail_payload_plugin_1 = require("@xyo-network/image-thumbnail-payload-plugin");
|
|
13
|
-
const compact_1 = tslib_1.__importDefault(require("lodash/compact"));
|
|
14
14
|
const Config_1 = require("./Config");
|
|
15
15
|
class ImageThumbnailDiviner extends abstract_diviner_1.AbstractDiviner {
|
|
16
16
|
get archivist() {
|
|
@@ -67,7 +67,7 @@ class ImageThumbnailDiviner extends abstract_diviner_1.AbstractDiviner {
|
|
|
67
67
|
const urls = payloads.map((urlPayload) => urlPayload.url);
|
|
68
68
|
const map = yield this.getSafeMap();
|
|
69
69
|
const archivist = yield this.getArchivistInstance();
|
|
70
|
-
const hashes = (0,
|
|
70
|
+
const hashes = (0, lodash_1.compact)(urls.map((url) => map === null || map === void 0 ? void 0 : map[url]));
|
|
71
71
|
return (yield archivist.get(hashes)).filter((payload) => payload.schema === image_thumbnail_payload_plugin_1.ImageThumbnailSchema);
|
|
72
72
|
});
|
|
73
73
|
}
|
|
@@ -161,7 +161,7 @@ class ImageThumbnailDiviner extends abstract_diviner_1.AbstractDiviner {
|
|
|
161
161
|
const mapPromise = this.getSafeMap();
|
|
162
162
|
archivist.on('inserted', ({ payloads }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
163
163
|
const map = yield mapPromise;
|
|
164
|
-
const thumbnails = (0,
|
|
164
|
+
const thumbnails = (0, lodash_1.compact)(payloads.filter((payload) => payload.schema === image_thumbnail_payload_plugin_1.ImageThumbnailSchema));
|
|
165
165
|
yield Promise.all(thumbnails.map((payload) => tslib_1.__awaiter(this, void 0, void 0, function* () { return (map[payload.sourceUrl] = yield core_1.PayloadHasher.hashAsync(payload)); })));
|
|
166
166
|
}));
|
|
167
167
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../../src/Diviner/Diviner.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,yCAAqC;AACrC,oEAA+D;AAC/D,kEAAqF;AACrF,4CAAiD;AACjD,8DAAoG;AACpG,8EAA0G;AAC1G,gGAAkG;
|
|
1
|
+
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../../src/Diviner/Diviner.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ exports.ImageThumbnailWitness = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
/* eslint-disable max-statements */
|
|
6
6
|
const node_dns_1 = require("node:dns");
|
|
7
|
+
const lodash_1 = require("@xylabs/lodash");
|
|
7
8
|
const url_1 = require("@xylabs/url");
|
|
8
9
|
const axios_1 = require("@xyo-network/axios");
|
|
9
10
|
const core_1 = require("@xyo-network/core");
|
|
@@ -15,7 +16,6 @@ const file_type_1 = tslib_1.__importDefault(require("file-type"));
|
|
|
15
16
|
const gm_1 = require("gm");
|
|
16
17
|
const hasbin_1 = require("hasbin");
|
|
17
18
|
const hash_wasm_1 = require("hash-wasm");
|
|
18
|
-
const compact_1 = tslib_1.__importDefault(require("lodash/compact"));
|
|
19
19
|
const lru_cache_1 = require("lru-cache");
|
|
20
20
|
const sha_js_1 = tslib_1.__importDefault(require("sha.js"));
|
|
21
21
|
const url_parse_1 = tslib_1.__importDefault(require("url-parse"));
|
|
@@ -91,9 +91,7 @@ class ImageThumbnailWitness extends witness_1.AbstractWitness {
|
|
|
91
91
|
if (url.startsWith('data:image')) {
|
|
92
92
|
const data = url.split(',')[1];
|
|
93
93
|
if (data) {
|
|
94
|
-
|
|
95
|
-
console.log(`data buffer: ${buffer.length}`);
|
|
96
|
-
return buffer;
|
|
94
|
+
return Buffer.from(Uint8Array.from(atob(data), (c) => c.charCodeAt(0)));
|
|
97
95
|
}
|
|
98
96
|
else {
|
|
99
97
|
const error = {
|
|
@@ -135,7 +133,7 @@ class ImageThumbnailWitness extends witness_1.AbstractWitness {
|
|
|
135
133
|
}
|
|
136
134
|
const urlPayloads = payloads.filter((payload) => payload.schema === url_payload_plugin_1.UrlSchema);
|
|
137
135
|
return yield this._semaphore.runExclusive(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
return (0,
|
|
136
|
+
return (0, lodash_1.compact)(yield Promise.all(urlPayloads.map(({ url }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
139
137
|
const cachedResult = this.cache.get(url);
|
|
140
138
|
if (cachedResult) {
|
|
141
139
|
return cachedResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":";;;;AAAA,mCAAmC;AACnC,uCAAkD;AAElD,qCAAiC;AACjC,8CAAqE;AACrE,4CAAiD;AACjD,gGAAkG;AAClG,wEAAuE;AACvE,kDAAsD;AACtD,6CAAuC;AACvC,kEAAgC;AAChC,2BAA6B;AAC7B,mCAAuC;AACvC,yCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,52 +2,73 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getVideoFrameAsImageFluent = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@xyo-network/core");
|
|
5
6
|
const fluent_ffmpeg_1 = tslib_1.__importDefault(require("fluent-ffmpeg"));
|
|
7
|
+
const promises_1 = require("fs/promises");
|
|
8
|
+
const os_1 = require("os");
|
|
6
9
|
const stream_1 = require("stream");
|
|
10
|
+
/**
|
|
11
|
+
* A Writable stream that collects output from ffmpeg.
|
|
12
|
+
*/
|
|
13
|
+
class FfmpegOutputStream extends stream_1.Writable {
|
|
14
|
+
constructor(options) {
|
|
15
|
+
super(options);
|
|
16
|
+
this.chunks = [];
|
|
17
|
+
/**
|
|
18
|
+
* Collects the output from ffmpeg into a buffer.
|
|
19
|
+
* @returns A buffer containing the concatenated
|
|
20
|
+
* output from ffmpeg.
|
|
21
|
+
*/
|
|
22
|
+
this.toBuffer = () => Buffer.concat(this.chunks);
|
|
23
|
+
}
|
|
24
|
+
_write(chunk, _encoding, callback) {
|
|
25
|
+
this.chunks.push(chunk);
|
|
26
|
+
callback();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
7
29
|
/**
|
|
8
30
|
* Execute FFmpeg using fluent API with provided input buffer and video thumbnail image.
|
|
9
31
|
* @param videoBuffer Input video buffer.
|
|
10
32
|
* @returns Output buffer containing the video thumbnail image.
|
|
11
33
|
*/
|
|
12
34
|
const getVideoFrameAsImageFluent = (videoBuffer) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
// Get a temp file name
|
|
36
|
+
const tmpFile = `/${(0, os_1.tmpdir)()}/${(0, core_1.uuid)()}`;
|
|
37
|
+
try {
|
|
38
|
+
// Write videoBuffer to temp file for use as input to ffmpeg to
|
|
39
|
+
// avoid issues with ffmpeg inferring premature EOF from buffer
|
|
40
|
+
// passed via stdin (happens when ffmpeg is trying to infer
|
|
41
|
+
// input video format)
|
|
42
|
+
yield (0, promises_1.writeFile)(tmpFile, videoBuffer, { encoding: 'binary' });
|
|
43
|
+
const imageBuffer = yield new Promise((resolve, reject) => {
|
|
44
|
+
// Create a Writable stream to collect PNG output from ffmpeg
|
|
45
|
+
const ffmpegOutput = new FfmpegOutputStream();
|
|
46
|
+
// Execute ffmpeg using fluent API
|
|
47
|
+
(0, fluent_ffmpeg_1.default)()
|
|
48
|
+
// NOTE: Uncomment to debug CLI args to ffmpeg
|
|
49
|
+
// .on('start', (commandLine) => console.log('Spawned Ffmpeg with command: ' + commandLine))
|
|
50
|
+
.on('error', (err) => reject(err.message))
|
|
51
|
+
// Listen for the 'end' event to combine the output into a buffer holding the PNG image
|
|
52
|
+
.on('end', () => resolve(ffmpegOutput.toBuffer()))
|
|
53
|
+
.input(tmpFile) // Use temp file as input
|
|
54
|
+
.takeFrames(1) // Only take 1st video frame
|
|
55
|
+
.withNoAudio() // Don't include audio
|
|
56
|
+
.outputOptions('-f image2pipe') // Write output to stdout
|
|
57
|
+
.videoCodec('png') // Force PNG output
|
|
58
|
+
// Start processing and direct ffmpeg stdout to writable stream
|
|
59
|
+
.pipe(ffmpegOutput);
|
|
29
60
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
.on('end', () => resolve(Buffer.concat(pngChunks)))
|
|
42
|
-
.on('data', (chunk) => pngChunks.push(chunk))
|
|
43
|
-
// .toFormat('png')
|
|
44
|
-
.outputOptions('-f image2pipe');
|
|
45
|
-
// .outputOptions('-vcodec png')
|
|
46
|
-
// .output(writableStream, { end: true })
|
|
47
|
-
// Start processing
|
|
48
|
-
command.pipe(writableStream);
|
|
49
|
-
});
|
|
50
|
-
return imageBuffer;
|
|
61
|
+
return imageBuffer;
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
// Cleanup temp file
|
|
65
|
+
try {
|
|
66
|
+
yield (0, promises_1.unlink)(tmpFile);
|
|
67
|
+
}
|
|
68
|
+
catch (_a) {
|
|
69
|
+
// No error here since file doesn't exist
|
|
70
|
+
}
|
|
71
|
+
}
|
|
51
72
|
});
|
|
52
73
|
exports.getVideoFrameAsImageFluent = getVideoFrameAsImageFluent;
|
|
53
74
|
//# sourceMappingURL=getVideoFrameAsImageFluent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVideoFrameAsImageFluent.js","sourceRoot":"","sources":["../../../../../src/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.ts"],"names":[],"mappings":";;;;AAAA,0EAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"getVideoFrameAsImageFluent.js","sourceRoot":"","sources":["../../../../../src/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.ts"],"names":[],"mappings":";;;;AAAA,4CAAwC;AACxC,0EAAkC;AAClC,0CAA+C;AAC/C,2BAA2B;AAC3B,mCAAkD;AAElD;;GAEG;AACH,MAAM,kBAAmB,SAAQ,iBAAQ;IAGvC,YAAY,OAAyB;QACnC,KAAK,CAAC,OAAO,CAAC,CAAA;QAHC,WAAM,GAAiB,EAAE,CAAA;QAW1C;;;;WAIG;QACH,aAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAZ3C,CAAC;IAEQ,MAAM,CAAC,KAAY,EAAE,SAAyB,EAAE,QAAwC;QAC/F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvB,QAAQ,EAAE,CAAA;IACZ,CAAC;CAQF;AAED;;;;GAIG;AACI,MAAM,0BAA0B,GAAG,CAAO,WAAmB,EAAE,EAAE;IACtE,uBAAuB;IACvB,MAAM,OAAO,GAAG,IAAI,IAAA,WAAM,GAAE,IAAI,IAAA,WAAI,GAAE,EAAE,CAAA;IACxC,IAAI;QACF,+DAA+D;QAC/D,+DAA+D;QAC/D,2DAA2D;QAC3D,sBAAsB;QACtB,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC7D,MAAM,WAAW,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,6DAA6D;YAC7D,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAA;YAC7C,kCAAkC;YAClC,IAAA,uBAAM,GAAE;gBACN,8CAA8C;gBAC9C,4FAA4F;iBAC3F,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1C,uFAAuF;iBACtF,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACjD,KAAK,CAAC,OAAO,CAAC,CAAC,yBAAyB;iBACxC,UAAU,CAAC,CAAC,CAAC,CAAC,4BAA4B;iBAC1C,WAAW,EAAE,CAAC,sBAAsB;iBACpC,aAAa,CAAC,eAAe,CAAC,CAAC,yBAAyB;iBACxD,UAAU,CAAC,KAAK,CAAC,CAAC,mBAAmB;gBACtC,+DAA+D;iBAC9D,IAAI,CAAC,YAAY,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;QACF,OAAO,WAAW,CAAA;KACnB;YAAS;QACR,oBAAoB;QACpB,IAAI;YACF,MAAM,IAAA,iBAAM,EAAC,OAAO,CAAC,CAAA;SACtB;QAAC,WAAM;YACN,yCAAyC;SAC1C;KACF;AACH,CAAC,CAAA,CAAA;AApCY,QAAA,0BAA0B,8BAoCtC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.executeFFmpeg = void 0;
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
|
-
const stream_1 = require("stream");
|
|
6
5
|
/**
|
|
7
6
|
* Execute FFmpeg with the provided arguments.
|
|
8
7
|
* @param videoBuffer Input video buffer.
|
|
@@ -11,22 +10,22 @@ const stream_1 = require("stream");
|
|
|
11
10
|
*/
|
|
12
11
|
const executeFFmpeg = (videoBuffer, ffmpegArgs) => {
|
|
13
12
|
return new Promise((resolve, reject) => {
|
|
13
|
+
const imageData = [];
|
|
14
14
|
const ffmpeg = (0, child_process_1.spawn)('ffmpeg', ffmpegArgs);
|
|
15
|
-
|
|
16
|
-
const videoStream = new stream_1.PassThrough().end(videoBuffer);
|
|
17
|
-
// Pipe the input stream to ffmpeg's stdin
|
|
18
|
-
videoStream.pipe(ffmpeg.stdin);
|
|
19
|
-
const chunks = [];
|
|
20
|
-
ffmpeg.stdout.on('data', (chunk) => chunks.push(chunk));
|
|
15
|
+
ffmpeg.stdout.on('data', (data) => imageData.push(data));
|
|
21
16
|
// TODO: This is required as we're seeing errors thrown due to
|
|
22
17
|
// how we're piping the data to ffmpeg. Works perfectly though.
|
|
23
18
|
ffmpeg.stdin.on('error', () => { });
|
|
24
19
|
ffmpeg.on('close', (code) => {
|
|
25
20
|
if (code !== 0) {
|
|
26
|
-
|
|
21
|
+
reject(new Error(`FFmpeg exited with code ${code}`));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
resolve(Buffer.concat(imageData));
|
|
27
25
|
}
|
|
28
|
-
resolve(Buffer.concat(chunks));
|
|
29
26
|
});
|
|
27
|
+
// Pipe the input stream to ffmpeg's stdin
|
|
28
|
+
ffmpeg.stdin.end(videoBuffer);
|
|
30
29
|
});
|
|
31
30
|
};
|
|
32
31
|
exports.executeFFmpeg = executeFFmpeg;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeFfmpeg.js","sourceRoot":"","sources":["../../../../../src/Witness/ffmpeg/spawn/executeFfmpeg.ts"],"names":[],"mappings":";;;AAAA,iDAAqC;
|
|
1
|
+
{"version":3,"file":"executeFfmpeg.js","sourceRoot":"","sources":["../../../../../src/Witness/ffmpeg/spawn/executeFfmpeg.ts"],"names":[],"mappings":";;;AAAA,iDAAqC;AAErC;;;;;GAKG;AACI,MAAM,aAAa,GAAG,CAAC,WAAmB,EAAE,UAAoB,EAAmB,EAAE;IAC1F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,SAAS,GAAa,EAAE,CAAA;QAC9B,MAAM,MAAM,GAAG,IAAA,qBAAK,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAChE,8DAA8D;QAC9D,+DAA+D;QAC/D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAClC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAA;aACrD;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;aAClC;QACH,CAAC,CAAC,CAAA;QACF,0CAA0C;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAlBY,QAAA,aAAa,iBAkBzB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert';
|
|
2
2
|
import { delay } from '@xylabs/delay';
|
|
3
|
+
import { compact } from '@xylabs/lodash';
|
|
3
4
|
import { AbstractDiviner } from '@xyo-network/abstract-diviner';
|
|
4
5
|
import { asArchivistInstance } from '@xyo-network/archivist-model';
|
|
5
6
|
import { PayloadHasher } from '@xyo-network/core';
|
|
6
7
|
import { asDivinerInstance, DivinerConfigSchema } from '@xyo-network/diviner-model';
|
|
7
8
|
import { PayloadDivinerQuerySchema } from '@xyo-network/diviner-payload-model';
|
|
8
9
|
import { ImageThumbnailSchema } from '@xyo-network/image-thumbnail-payload-plugin';
|
|
9
|
-
import compact from 'lodash/compact';
|
|
10
10
|
import { ImageThumbnailDivinerConfigSchema } from './Config';
|
|
11
11
|
export class ImageThumbnailDiviner extends AbstractDiviner {
|
|
12
12
|
static configSchemas = [ImageThumbnailDivinerConfigSchema, DivinerConfigSchema];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../../src/Diviner/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAqB,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAmB,MAAM,4BAA4B,CAAA;AACpG,OAAO,EAA8B,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAC1G,OAAO,EAAkB,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;
|
|
1
|
+
{"version":3,"file":"Diviner.js","sourceRoot":"","sources":["../../../src/Diviner/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAqB,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAmB,MAAM,4BAA4B,CAAA;AACpG,OAAO,EAA8B,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAC1G,OAAO,EAAkB,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAGlG,OAAO,EAAE,iCAAiC,EAAE,MAAM,UAAU,CAAA;AAG5D,MAAM,OAAO,qBAAiG,SAAQ,eAAwB;IAC5I,MAAM,CAAU,aAAa,GAAG,CAAC,iCAAiC,EAAE,mBAAmB,CAAC,CAAA;IAEhF,kBAAkB,CAAwC;IAC1D,6CAA6C,CAA2B;IACxE,IAAI,CAAoC;IACxC,uBAAuB,CAAsC;IAC7D,OAAO,CAAmC;IAElD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;IAC9B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;IACnC,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,KAAK,CAAA;IACjD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAA;IAClC,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,oBAAoB;QACxB,qDAAqD;QACrD,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE;YAC/D,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;SACpC;QACD,IAAI,CAAC,kBAAkB;YACrB,IAAI,CAAC,kBAAkB;gBACvB,CAAC,KAAK,IAAI,EAAE;oBACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;oBACjD,OAAO,mBAAmB,CAAC,MAAM,EAAE,4DAA4D,CAAC,CAAA;gBAClG,CAAC,CAAC,EAAE,CAAA;QACN,OAAO,IAAI,CAAC,kBAAkB,CAAA;IAChC,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,yBAAyB;QAC7B,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAA;QACjD,IAAI,qBAAqB,EAAE;YACzB,qDAAqD;YACrD,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,EAAE;gBACzE,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAA;aACzC;YACD,IAAI,CAAC,uBAAuB;gBAC1B,IAAI,CAAC,uBAAuB;oBAC5B,CAAC,KAAK,IAAI,EAAE;wBACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;wBACxD,OAAO,iBAAiB,CAAC,MAAM,EAAE,+DAA+D,CAAC,CAAA;oBACnG,CAAC,CAAC,EAAE,CAAA;YAEN,OAAO,IAAI,CAAC,uBAAuB,CAAA;SACpC;IACH,CAAC;IAEkB,KAAK,CAAC,aAAa,CAAC,WAAyB,EAAE;QAChE,MAAM,IAAI,CAAC,qCAAqC,EAAE,CAAA;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACnC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACrD,OAAO,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAA6B,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,oBAAoB,CAAC,CAAA;IAC9H,CAAC;IAED,wBAAwB;IACd,qCAAqC;QAC7C,IAAI,CAAC,6CAA6C;YAChD,IAAI,CAAC,6CAA6C;gBAClD,CAAC,KAAK,IAAI,EAAE;oBACV,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;wBACd,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAA;wBAClC,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAA;wBAChF,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;wBACjB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;qBAChE;gBACH,CAAC,CAAC,EAAE,CAAA;QACN,OAAO,IAAI,CAAC,6CAA6C,CAAA;IAC3D,CAAC;IAES,KAAK,CAAC,OAAO;QACrB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAA;SAC9C;aAAM;YACL,OAAO,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;SACnC;IACH,CAAC;IAES,KAAK,CAAC,cAAc;QAC5B,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE;YACxB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAA;YACnD,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAA;YAC3D,MAAM,WAAW,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;YACnD,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACzC,WAAW;iBACR,MAAM,CAAC,CAAC,OAAO,EAA6B,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,oBAAoB,CAAC;iBACvF,GAAG,CAAoC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAChH,CAAA;YACD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAyB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;gBACrF,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;gBAC9B,OAAO,IAAI,CAAA;YACb,CAAC,EAAE,EAAE,CAAC,CAAA;SACP;IACH,CAAC;IAES,KAAK,CAAC,yBAAyB;QACvC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;QACjD,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE;YACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAA;YACtD,IAAI,MAAM,GAAuB,SAAS,CAAA;YAC1C,IAAI,aAAa,GAAG,IAAI,CAAA;YACxB,IAAI,OAAO,EAAE;gBACX,MAAM,MAAM,GAA2B,EAAE,CAAA;gBACzC,OAAO,aAAa,EAAE;oBACpB,MAAM,mBAAmB,GAA+B;wBACtD,KAAK,EAAE,IAAI,CAAC,mBAAmB;wBAC/B,MAAM;wBACN,MAAM,EAAE,yBAAyB;wBACjC,OAAO,EAAE,CAAC,oBAAoB,CAAC;qBAChC,CAAA;oBACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAA;oBAC5D,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAA;oBACxC,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;oBACnC,OAAO,CAAC,GAAG,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAA;oBAC1D,OAAO,CAAC,GAAG,CAAC,4CAA4C,aAAa,EAAE,CAAC,CAAA;oBACxE,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACzC,QAAQ;yBACL,MAAM,CAAC,CAAC,OAAO,EAA6B,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,oBAAoB,CAAC;yBACvF,GAAG,CAAoC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAChH,CAAA;oBACD,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;iBACnF;gBACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAA;aACnB;SACF;IACH,CAAC;IAEkB,KAAK,CAAC,WAAW,CAAC,QAA6B;QAChE,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;SACzB;QACD,OAAO,MAAM,KAAK,CAAC,WAAW,EAAE,CAAA;IAClC,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACpC,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC9C,MAAM,GAAG,GAAG,MAAM,UAAU,CAAA;YAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAA6B,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,oBAAoB,CAAC,CAAC,CAAA;YAC5H,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACzH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,QAAQ,GAAG,GAAG,CAAA,CAAC,gBAAgB;QACnC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA;QACnB,OAAO,CAAC,GAAG,EAAE;YACX,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YAChB,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAA;YACvB,IAAI,QAAQ,KAAK,CAAC,EAAE;gBAClB,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAA;aAC9B;YACD,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA;SAChB;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE;YACxB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;YACxC,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;oBACnC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;oBACxB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;oBACpB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;gBACnB,CAAC,EAAE,aAAa,CAAC,CAAA;aAClB;iBAAM;gBACL,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;aACrB;SACF;IACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-disable max-statements */
|
|
2
2
|
import { promises as dnsPromises } from 'node:dns';
|
|
3
|
+
import { compact } from '@xylabs/lodash';
|
|
3
4
|
import { URL } from '@xylabs/url';
|
|
4
5
|
import { axios } from '@xyo-network/axios';
|
|
5
6
|
import { PayloadHasher } from '@xyo-network/core';
|
|
@@ -11,7 +12,6 @@ import FileType from 'file-type';
|
|
|
11
12
|
import { subClass } from 'gm';
|
|
12
13
|
import { sync as hasbin } from 'hasbin';
|
|
13
14
|
import { sha256 } from 'hash-wasm';
|
|
14
|
-
import compact from 'lodash/compact';
|
|
15
15
|
import { LRUCache } from 'lru-cache';
|
|
16
16
|
import shajs from 'sha.js';
|
|
17
17
|
import Url from 'url-parse';
|
|
@@ -76,9 +76,7 @@ export class ImageThumbnailWitness extends AbstractWitness {
|
|
|
76
76
|
if (url.startsWith('data:image')) {
|
|
77
77
|
const data = url.split(',')[1];
|
|
78
78
|
if (data) {
|
|
79
|
-
|
|
80
|
-
console.log(`data buffer: ${buffer.length}`);
|
|
81
|
-
return buffer;
|
|
79
|
+
return Buffer.from(Uint8Array.from(atob(data), (c) => c.charCodeAt(0)));
|
|
82
80
|
}
|
|
83
81
|
else {
|
|
84
82
|
const error = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AAElD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,KAAK,EAA6B,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAkB,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAClG,OAAO,EAAc,SAAS,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;AAC7B,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +1,69 @@
|
|
|
1
|
+
import { uuid } from '@xyo-network/core';
|
|
1
2
|
import ffmpeg from 'fluent-ffmpeg';
|
|
2
|
-
import {
|
|
3
|
+
import { unlink, writeFile } from 'fs/promises';
|
|
4
|
+
import { tmpdir } from 'os';
|
|
5
|
+
import { Writable } from 'stream';
|
|
6
|
+
/**
|
|
7
|
+
* A Writable stream that collects output from ffmpeg.
|
|
8
|
+
*/
|
|
9
|
+
class FfmpegOutputStream extends Writable {
|
|
10
|
+
chunks = [];
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super(options);
|
|
13
|
+
}
|
|
14
|
+
_write(chunk, _encoding, callback) {
|
|
15
|
+
this.chunks.push(chunk);
|
|
16
|
+
callback();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Collects the output from ffmpeg into a buffer.
|
|
20
|
+
* @returns A buffer containing the concatenated
|
|
21
|
+
* output from ffmpeg.
|
|
22
|
+
*/
|
|
23
|
+
toBuffer = () => Buffer.concat(this.chunks);
|
|
24
|
+
}
|
|
3
25
|
/**
|
|
4
26
|
* Execute FFmpeg using fluent API with provided input buffer and video thumbnail image.
|
|
5
27
|
* @param videoBuffer Input video buffer.
|
|
6
28
|
* @returns Output buffer containing the video thumbnail image.
|
|
7
29
|
*/
|
|
8
30
|
export const getVideoFrameAsImageFluent = async (videoBuffer) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
31
|
+
// Get a temp file name
|
|
32
|
+
const tmpFile = `/${tmpdir()}/${uuid()}`;
|
|
33
|
+
try {
|
|
34
|
+
// Write videoBuffer to temp file for use as input to ffmpeg to
|
|
35
|
+
// avoid issues with ffmpeg inferring premature EOF from buffer
|
|
36
|
+
// passed via stdin (happens when ffmpeg is trying to infer
|
|
37
|
+
// input video format)
|
|
38
|
+
await writeFile(tmpFile, videoBuffer, { encoding: 'binary' });
|
|
39
|
+
const imageBuffer = await new Promise((resolve, reject) => {
|
|
40
|
+
// Create a Writable stream to collect PNG output from ffmpeg
|
|
41
|
+
const ffmpegOutput = new FfmpegOutputStream();
|
|
42
|
+
// Execute ffmpeg using fluent API
|
|
43
|
+
ffmpeg()
|
|
44
|
+
// NOTE: Uncomment to debug CLI args to ffmpeg
|
|
45
|
+
// .on('start', (commandLine) => console.log('Spawned Ffmpeg with command: ' + commandLine))
|
|
46
|
+
.on('error', (err) => reject(err.message))
|
|
47
|
+
// Listen for the 'end' event to combine the output into a buffer holding the PNG image
|
|
48
|
+
.on('end', () => resolve(ffmpegOutput.toBuffer()))
|
|
49
|
+
.input(tmpFile) // Use temp file as input
|
|
50
|
+
.takeFrames(1) // Only take 1st video frame
|
|
51
|
+
.withNoAudio() // Don't include audio
|
|
52
|
+
.outputOptions('-f image2pipe') // Write output to stdout
|
|
53
|
+
.videoCodec('png') // Force PNG output
|
|
54
|
+
// Start processing and direct ffmpeg stdout to writable stream
|
|
55
|
+
.pipe(ffmpegOutput);
|
|
25
56
|
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
.on('end', () => resolve(Buffer.concat(pngChunks)))
|
|
38
|
-
.on('data', (chunk) => pngChunks.push(chunk))
|
|
39
|
-
// .toFormat('png')
|
|
40
|
-
.outputOptions('-f image2pipe');
|
|
41
|
-
// .outputOptions('-vcodec png')
|
|
42
|
-
// .output(writableStream, { end: true })
|
|
43
|
-
// Start processing
|
|
44
|
-
command.pipe(writableStream);
|
|
45
|
-
});
|
|
46
|
-
return imageBuffer;
|
|
57
|
+
return imageBuffer;
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
// Cleanup temp file
|
|
61
|
+
try {
|
|
62
|
+
await unlink(tmpFile);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// No error here since file doesn't exist
|
|
66
|
+
}
|
|
67
|
+
}
|
|
47
68
|
};
|
|
48
69
|
//# sourceMappingURL=getVideoFrameAsImageFluent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVideoFrameAsImageFluent.js","sourceRoot":"","sources":["../../../../../src/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAA;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"getVideoFrameAsImageFluent.js","sourceRoot":"","sources":["../../../../../src/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,MAAM,MAAM,eAAe,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAmB,MAAM,QAAQ,CAAA;AAElD;;GAEG;AACH,MAAM,kBAAmB,SAAQ,QAAQ;IACtB,MAAM,GAAiB,EAAE,CAAA;IAE1C,YAAY,OAAyB;QACnC,KAAK,CAAC,OAAO,CAAC,CAAA;IAChB,CAAC;IAEQ,MAAM,CAAC,KAAY,EAAE,SAAyB,EAAE,QAAwC;QAC/F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvB,QAAQ,EAAE,CAAA;IACZ,CAAC;IAED;;;;OAIG;IACH,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;CAC5C;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;IACtE,uBAAuB;IACvB,MAAM,OAAO,GAAG,IAAI,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA;IACxC,IAAI;QACF,+DAA+D;QAC/D,+DAA+D;QAC/D,2DAA2D;QAC3D,sBAAsB;QACtB,MAAM,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC7D,MAAM,WAAW,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,6DAA6D;YAC7D,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAA;YAC7C,kCAAkC;YAClC,MAAM,EAAE;gBACN,8CAA8C;gBAC9C,4FAA4F;iBAC3F,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC1C,uFAAuF;iBACtF,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACjD,KAAK,CAAC,OAAO,CAAC,CAAC,yBAAyB;iBACxC,UAAU,CAAC,CAAC,CAAC,CAAC,4BAA4B;iBAC1C,WAAW,EAAE,CAAC,sBAAsB;iBACpC,aAAa,CAAC,eAAe,CAAC,CAAC,yBAAyB;iBACxD,UAAU,CAAC,KAAK,CAAC,CAAC,mBAAmB;gBACtC,+DAA+D;iBAC9D,IAAI,CAAC,YAAY,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;QACF,OAAO,WAAW,CAAA;KACnB;YAAS;QACR,oBAAoB;QACpB,IAAI;YACF,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;SACtB;QAAC,MAAM;YACN,yCAAyC;SAC1C;KACF;AACH,CAAC,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { spawn } from 'child_process';
|
|
2
|
-
import { PassThrough } from 'stream';
|
|
3
2
|
/**
|
|
4
3
|
* Execute FFmpeg with the provided arguments.
|
|
5
4
|
* @param videoBuffer Input video buffer.
|
|
@@ -8,22 +7,22 @@ import { PassThrough } from 'stream';
|
|
|
8
7
|
*/
|
|
9
8
|
export const executeFFmpeg = (videoBuffer, ffmpegArgs) => {
|
|
10
9
|
return new Promise((resolve, reject) => {
|
|
10
|
+
const imageData = [];
|
|
11
11
|
const ffmpeg = spawn('ffmpeg', ffmpegArgs);
|
|
12
|
-
|
|
13
|
-
const videoStream = new PassThrough().end(videoBuffer);
|
|
14
|
-
// Pipe the input stream to ffmpeg's stdin
|
|
15
|
-
videoStream.pipe(ffmpeg.stdin);
|
|
16
|
-
const chunks = [];
|
|
17
|
-
ffmpeg.stdout.on('data', (chunk) => chunks.push(chunk));
|
|
12
|
+
ffmpeg.stdout.on('data', (data) => imageData.push(data));
|
|
18
13
|
// TODO: This is required as we're seeing errors thrown due to
|
|
19
14
|
// how we're piping the data to ffmpeg. Works perfectly though.
|
|
20
15
|
ffmpeg.stdin.on('error', () => { });
|
|
21
16
|
ffmpeg.on('close', (code) => {
|
|
22
17
|
if (code !== 0) {
|
|
23
|
-
|
|
18
|
+
reject(new Error(`FFmpeg exited with code ${code}`));
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
resolve(Buffer.concat(imageData));
|
|
24
22
|
}
|
|
25
|
-
resolve(Buffer.concat(chunks));
|
|
26
23
|
});
|
|
24
|
+
// Pipe the input stream to ffmpeg's stdin
|
|
25
|
+
ffmpeg.stdin.end(videoBuffer);
|
|
27
26
|
});
|
|
28
27
|
};
|
|
29
28
|
//# sourceMappingURL=executeFfmpeg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeFfmpeg.js","sourceRoot":"","sources":["../../../../../src/Witness/ffmpeg/spawn/executeFfmpeg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"executeFfmpeg.js","sourceRoot":"","sources":["../../../../../src/Witness/ffmpeg/spawn/executeFfmpeg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,WAAmB,EAAE,UAAoB,EAAmB,EAAE;IAC1F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,SAAS,GAAa,EAAE,CAAA;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAChE,8DAA8D;QAC9D,+DAA+D;QAC/D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAClC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAA;aACrD;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;aAClC;QACH,CAAC,CAAC,CAAA;QACF,0CAA0C;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|