Refactored ffmpeg module into a class. Add a logger, not implemented. Not tested.
This commit is contained in:
parent
7c4e9d5823
commit
bd79025305
|
@ -3,24 +3,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const path_1 = require("path");
|
||||
const fs_extra_1 = require("fs-extra");
|
||||
const exec_1 = require("exec");
|
||||
let system = {};
|
||||
let TMPDIR;
|
||||
/**
|
||||
/** @class FFMPEG **/
|
||||
class FFMPEG {
|
||||
constructor(sys) {
|
||||
this.id = 'ffmpeg';
|
||||
this.system = sys;
|
||||
this.TMPDIR = path_1.join(this.system.tmp, 'mcopy_digital');
|
||||
this.init();
|
||||
}
|
||||
async init() {
|
||||
const Log = require('log');
|
||||
this.log = await Log({ label: this.id });
|
||||
await this.checkDir();
|
||||
}
|
||||
/**
|
||||
* Add padding to a number to 5 places. Return a string.
|
||||
*
|
||||
* @param {integer} i Integer to pad
|
||||
*
|
||||
* @returns {string} Padded string
|
||||
**/
|
||||
function padded_frame(i) {
|
||||
padded_frame(i) {
|
||||
let len = (i + '').length;
|
||||
let str = i + '';
|
||||
for (let x = 0; x < 5 - len; x++) {
|
||||
str = '0' + str;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Render a single frame from a video or image to a png.
|
||||
*
|
||||
* @param {object} state State object containing file data
|
||||
|
@ -28,12 +39,12 @@ function padded_frame(i) {
|
|||
*
|
||||
* @returns {string} Path of frame
|
||||
**/
|
||||
async function frame(state, light) {
|
||||
async frame(state, light) {
|
||||
const frameNum = state.frame;
|
||||
const video = state.path;
|
||||
const w = state.info.width;
|
||||
const h = state.info.height;
|
||||
const padded = padded_frame(frameNum);
|
||||
const padded = this.padded_frame(frameNum);
|
||||
let ext = 'tif';
|
||||
let rgb = light.color;
|
||||
let tmpoutput;
|
||||
|
@ -49,7 +60,7 @@ async function frame(state, light) {
|
|||
//if (system.platform !== 'nix') {
|
||||
ext = 'png';
|
||||
//}
|
||||
tmpoutput = path_1.join(TMPDIR, `export-${padded}.${ext}`);
|
||||
tmpoutput = path_1.join(this.TMPDIR, `export-${padded}.${ext}`);
|
||||
rgb = rgb.map((e) => {
|
||||
return parseInt(e);
|
||||
});
|
||||
|
@ -80,8 +91,8 @@ async function frame(state, light) {
|
|||
if (output2 && output2.stdout)
|
||||
console.log(`"${output2.stdout}"`);
|
||||
return tmpoutput;
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Render all frames in a video to the temp directory.
|
||||
* Not in use.
|
||||
*
|
||||
|
@ -90,8 +101,8 @@ async function frame(state, light) {
|
|||
*
|
||||
* @returns {?}
|
||||
**/
|
||||
async function frames(video, obj) {
|
||||
const tmppath = TMPDIR;
|
||||
async frames(video, obj) {
|
||||
const tmppath = this.TMPDIR;
|
||||
let ext = 'tif';
|
||||
let tmpoutput;
|
||||
//if (system.platform !== 'nix') {
|
||||
|
@ -105,16 +116,16 @@ async function frames(video, obj) {
|
|||
console.error(err);
|
||||
}
|
||||
//ffmpeg -i "${video}" -compression_algo raw -pix_fmt rgb24 "${tmpoutput}"
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Clears a specific frame from the tmp directory
|
||||
*
|
||||
* @param {integer} frame Integer of frame to clear
|
||||
*
|
||||
* @returns {boolean} True if successful, false if not
|
||||
**/
|
||||
async function clear(frame) {
|
||||
const padded = padded_frame(frame);
|
||||
async clear(frame) {
|
||||
const padded = this.padded_frame(frame);
|
||||
let ext = 'tif';
|
||||
let tmppath;
|
||||
let tmpoutput;
|
||||
|
@ -123,7 +134,7 @@ async function clear(frame) {
|
|||
//if (system.platform !== 'nix') {
|
||||
ext = 'png';
|
||||
//}
|
||||
tmppath = path_1.join(TMPDIR, `export-${padded}.${ext}`);
|
||||
tmppath = path_1.join(this.TMPDIR, `export-${padded}.${ext}`);
|
||||
try {
|
||||
fileExists = await fs_extra_1.exists(tmppath);
|
||||
}
|
||||
|
@ -140,13 +151,13 @@ async function clear(frame) {
|
|||
console.error(err);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Delete all frames in temp directory.
|
||||
*
|
||||
**/
|
||||
async function clearAll() {
|
||||
const tmppath = TMPDIR;
|
||||
async clearAll() {
|
||||
const tmppath = this.TMPDIR;
|
||||
let files;
|
||||
try {
|
||||
files = await fs_extra_1.readdir(tmppath);
|
||||
|
@ -164,44 +175,37 @@ async function clearAll() {
|
|||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Checks if mcopy temp directory exists. If it doesn't,
|
||||
* create it.
|
||||
**/
|
||||
async function checkDir() {
|
||||
async checkDir() {
|
||||
let fileExists;
|
||||
try {
|
||||
fileExists = await fs_extra_1.exists(TMPDIR);
|
||||
fileExists = await fs_extra_1.exists(this.TMPDIR);
|
||||
}
|
||||
catch (err) {
|
||||
console.error('Error checking for tmp dir', err);
|
||||
}
|
||||
if (!fileExists) {
|
||||
try {
|
||||
await fs_extra_1.mkdir(TMPDIR);
|
||||
console.log(`Created tmpdir ${TMPDIR}`);
|
||||
await fs_extra_1.mkdir(this.TMPDIR);
|
||||
console.log(`Created tmpdir ${this.TMPDIR}`);
|
||||
}
|
||||
catch (err) {
|
||||
console.error('Error creating tmp dir', err);
|
||||
}
|
||||
}
|
||||
try {
|
||||
await clearAll();
|
||||
await this.clearAll();
|
||||
}
|
||||
catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
module.exports = (sys) => {
|
||||
system = sys;
|
||||
TMPDIR = path_1.join(system.tmp, 'mcopy_digital');
|
||||
checkDir();
|
||||
return {
|
||||
frames,
|
||||
frame,
|
||||
clear,
|
||||
clearAll
|
||||
};
|
||||
return new FFMPEG(sys);
|
||||
};
|
||||
//# sourceMappingURL=index.js.map
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ffmpeg/index.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ffmpeg/index.ts"],"names":[],"mappings":"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"}
|
|
@ -3,24 +3,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const path_1 = require("path");
|
||||
const fs_extra_1 = require("fs-extra");
|
||||
const exec_1 = require("exec");
|
||||
let system = {};
|
||||
let TMPDIR;
|
||||
/**
|
||||
/** @class FFMPEG **/
|
||||
class FFMPEG {
|
||||
constructor(sys) {
|
||||
this.id = 'ffmpeg';
|
||||
this.system = sys;
|
||||
this.TMPDIR = path_1.join(this.system.tmp, 'mcopy_digital');
|
||||
this.init();
|
||||
}
|
||||
async init() {
|
||||
const Log = require('log');
|
||||
this.log = await Log({ label: this.id });
|
||||
await this.checkDir();
|
||||
}
|
||||
/**
|
||||
* Add padding to a number to 5 places. Return a string.
|
||||
*
|
||||
* @param {integer} i Integer to pad
|
||||
*
|
||||
* @returns {string} Padded string
|
||||
**/
|
||||
function padded_frame(i) {
|
||||
padded_frame(i) {
|
||||
let len = (i + '').length;
|
||||
let str = i + '';
|
||||
for (let x = 0; x < 5 - len; x++) {
|
||||
str = '0' + str;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Render a single frame from a video or image to a png.
|
||||
*
|
||||
* @param {object} state State object containing file data
|
||||
|
@ -28,12 +39,12 @@ function padded_frame(i) {
|
|||
*
|
||||
* @returns {string} Path of frame
|
||||
**/
|
||||
async function frame(state, light) {
|
||||
async frame(state, light) {
|
||||
const frameNum = state.frame;
|
||||
const video = state.path;
|
||||
const w = state.info.width;
|
||||
const h = state.info.height;
|
||||
const padded = padded_frame(frameNum);
|
||||
const padded = this.padded_frame(frameNum);
|
||||
let ext = 'tif';
|
||||
let rgb = light.color;
|
||||
let tmpoutput;
|
||||
|
@ -49,7 +60,7 @@ async function frame(state, light) {
|
|||
//if (system.platform !== 'nix') {
|
||||
ext = 'png';
|
||||
//}
|
||||
tmpoutput = path_1.join(TMPDIR, `export-${padded}.${ext}`);
|
||||
tmpoutput = path_1.join(this.TMPDIR, `export-${padded}.${ext}`);
|
||||
rgb = rgb.map((e) => {
|
||||
return parseInt(e);
|
||||
});
|
||||
|
@ -80,8 +91,8 @@ async function frame(state, light) {
|
|||
if (output2 && output2.stdout)
|
||||
console.log(`"${output2.stdout}"`);
|
||||
return tmpoutput;
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Render all frames in a video to the temp directory.
|
||||
* Not in use.
|
||||
*
|
||||
|
@ -90,8 +101,8 @@ async function frame(state, light) {
|
|||
*
|
||||
* @returns {?}
|
||||
**/
|
||||
async function frames(video, obj) {
|
||||
const tmppath = TMPDIR;
|
||||
async frames(video, obj) {
|
||||
const tmppath = this.TMPDIR;
|
||||
let ext = 'tif';
|
||||
let tmpoutput;
|
||||
//if (system.platform !== 'nix') {
|
||||
|
@ -105,16 +116,16 @@ async function frames(video, obj) {
|
|||
console.error(err);
|
||||
}
|
||||
//ffmpeg -i "${video}" -compression_algo raw -pix_fmt rgb24 "${tmpoutput}"
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Clears a specific frame from the tmp directory
|
||||
*
|
||||
* @param {integer} frame Integer of frame to clear
|
||||
*
|
||||
* @returns {boolean} True if successful, false if not
|
||||
**/
|
||||
async function clear(frame) {
|
||||
const padded = padded_frame(frame);
|
||||
async clear(frame) {
|
||||
const padded = this.padded_frame(frame);
|
||||
let ext = 'tif';
|
||||
let tmppath;
|
||||
let tmpoutput;
|
||||
|
@ -123,7 +134,7 @@ async function clear(frame) {
|
|||
//if (system.platform !== 'nix') {
|
||||
ext = 'png';
|
||||
//}
|
||||
tmppath = path_1.join(TMPDIR, `export-${padded}.${ext}`);
|
||||
tmppath = path_1.join(this.TMPDIR, `export-${padded}.${ext}`);
|
||||
try {
|
||||
fileExists = await fs_extra_1.exists(tmppath);
|
||||
}
|
||||
|
@ -140,13 +151,13 @@ async function clear(frame) {
|
|||
console.error(err);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Delete all frames in temp directory.
|
||||
*
|
||||
**/
|
||||
async function clearAll() {
|
||||
const tmppath = TMPDIR;
|
||||
async clearAll() {
|
||||
const tmppath = this.TMPDIR;
|
||||
let files;
|
||||
try {
|
||||
files = await fs_extra_1.readdir(tmppath);
|
||||
|
@ -164,44 +175,37 @@ async function clearAll() {
|
|||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Checks if mcopy temp directory exists. If it doesn't,
|
||||
* create it.
|
||||
**/
|
||||
async function checkDir() {
|
||||
async checkDir() {
|
||||
let fileExists;
|
||||
try {
|
||||
fileExists = await fs_extra_1.exists(TMPDIR);
|
||||
fileExists = await fs_extra_1.exists(this.TMPDIR);
|
||||
}
|
||||
catch (err) {
|
||||
console.error('Error checking for tmp dir', err);
|
||||
}
|
||||
if (!fileExists) {
|
||||
try {
|
||||
await fs_extra_1.mkdir(TMPDIR);
|
||||
console.log(`Created tmpdir ${TMPDIR}`);
|
||||
await fs_extra_1.mkdir(this.TMPDIR);
|
||||
console.log(`Created tmpdir ${this.TMPDIR}`);
|
||||
}
|
||||
catch (err) {
|
||||
console.error('Error creating tmp dir', err);
|
||||
}
|
||||
}
|
||||
try {
|
||||
await clearAll();
|
||||
await this.clearAll();
|
||||
}
|
||||
catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
module.exports = (sys) => {
|
||||
system = sys;
|
||||
TMPDIR = path_1.join(system.tmp, 'mcopy_digital');
|
||||
checkDir();
|
||||
return {
|
||||
frames,
|
||||
frame,
|
||||
clear,
|
||||
clearAll
|
||||
};
|
||||
return new FFMPEG(sys);
|
||||
};
|
||||
//# sourceMappingURL=index.js.map
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ffmpeg/index.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ffmpeg/index.ts"],"names":[],"mappings":"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"}
|
|
@ -3,24 +3,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const path_1 = require("path");
|
||||
const fs_extra_1 = require("fs-extra");
|
||||
const exec_1 = require("exec");
|
||||
let system = {};
|
||||
let TMPDIR;
|
||||
/**
|
||||
/** @class FFMPEG **/
|
||||
class FFMPEG {
|
||||
constructor(sys) {
|
||||
this.id = 'ffmpeg';
|
||||
this.system = sys;
|
||||
this.TMPDIR = path_1.join(this.system.tmp, 'mcopy_digital');
|
||||
this.init();
|
||||
}
|
||||
async init() {
|
||||
const Log = require('log');
|
||||
this.log = await Log({ label: this.id });
|
||||
await this.checkDir();
|
||||
}
|
||||
/**
|
||||
* Add padding to a number to 5 places. Return a string.
|
||||
*
|
||||
* @param {integer} i Integer to pad
|
||||
*
|
||||
* @returns {string} Padded string
|
||||
**/
|
||||
function padded_frame(i) {
|
||||
padded_frame(i) {
|
||||
let len = (i + '').length;
|
||||
let str = i + '';
|
||||
for (let x = 0; x < 5 - len; x++) {
|
||||
str = '0' + str;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Render a single frame from a video or image to a png.
|
||||
*
|
||||
* @param {object} state State object containing file data
|
||||
|
@ -28,12 +39,12 @@ function padded_frame(i) {
|
|||
*
|
||||
* @returns {string} Path of frame
|
||||
**/
|
||||
async function frame(state, light) {
|
||||
async frame(state, light) {
|
||||
const frameNum = state.frame;
|
||||
const video = state.path;
|
||||
const w = state.info.width;
|
||||
const h = state.info.height;
|
||||
const padded = padded_frame(frameNum);
|
||||
const padded = this.padded_frame(frameNum);
|
||||
let ext = 'tif';
|
||||
let rgb = light.color;
|
||||
let tmpoutput;
|
||||
|
@ -49,7 +60,7 @@ async function frame(state, light) {
|
|||
//if (system.platform !== 'nix') {
|
||||
ext = 'png';
|
||||
//}
|
||||
tmpoutput = path_1.join(TMPDIR, `export-${padded}.${ext}`);
|
||||
tmpoutput = path_1.join(this.TMPDIR, `export-${padded}.${ext}`);
|
||||
rgb = rgb.map((e) => {
|
||||
return parseInt(e);
|
||||
});
|
||||
|
@ -80,8 +91,8 @@ async function frame(state, light) {
|
|||
if (output2 && output2.stdout)
|
||||
console.log(`"${output2.stdout}"`);
|
||||
return tmpoutput;
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Render all frames in a video to the temp directory.
|
||||
* Not in use.
|
||||
*
|
||||
|
@ -90,8 +101,8 @@ async function frame(state, light) {
|
|||
*
|
||||
* @returns {?}
|
||||
**/
|
||||
async function frames(video, obj) {
|
||||
const tmppath = TMPDIR;
|
||||
async frames(video, obj) {
|
||||
const tmppath = this.TMPDIR;
|
||||
let ext = 'tif';
|
||||
let tmpoutput;
|
||||
//if (system.platform !== 'nix') {
|
||||
|
@ -105,16 +116,16 @@ async function frames(video, obj) {
|
|||
console.error(err);
|
||||
}
|
||||
//ffmpeg -i "${video}" -compression_algo raw -pix_fmt rgb24 "${tmpoutput}"
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Clears a specific frame from the tmp directory
|
||||
*
|
||||
* @param {integer} frame Integer of frame to clear
|
||||
*
|
||||
* @returns {boolean} True if successful, false if not
|
||||
**/
|
||||
async function clear(frame) {
|
||||
const padded = padded_frame(frame);
|
||||
async clear(frame) {
|
||||
const padded = this.padded_frame(frame);
|
||||
let ext = 'tif';
|
||||
let tmppath;
|
||||
let tmpoutput;
|
||||
|
@ -123,7 +134,7 @@ async function clear(frame) {
|
|||
//if (system.platform !== 'nix') {
|
||||
ext = 'png';
|
||||
//}
|
||||
tmppath = path_1.join(TMPDIR, `export-${padded}.${ext}`);
|
||||
tmppath = path_1.join(this.TMPDIR, `export-${padded}.${ext}`);
|
||||
try {
|
||||
fileExists = await fs_extra_1.exists(tmppath);
|
||||
}
|
||||
|
@ -140,13 +151,13 @@ async function clear(frame) {
|
|||
console.error(err);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Delete all frames in temp directory.
|
||||
*
|
||||
**/
|
||||
async function clearAll() {
|
||||
const tmppath = TMPDIR;
|
||||
async clearAll() {
|
||||
const tmppath = this.TMPDIR;
|
||||
let files;
|
||||
try {
|
||||
files = await fs_extra_1.readdir(tmppath);
|
||||
|
@ -164,44 +175,37 @@ async function clearAll() {
|
|||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
/**
|
||||
}
|
||||
/**
|
||||
* Checks if mcopy temp directory exists. If it doesn't,
|
||||
* create it.
|
||||
**/
|
||||
async function checkDir() {
|
||||
async checkDir() {
|
||||
let fileExists;
|
||||
try {
|
||||
fileExists = await fs_extra_1.exists(TMPDIR);
|
||||
fileExists = await fs_extra_1.exists(this.TMPDIR);
|
||||
}
|
||||
catch (err) {
|
||||
console.error('Error checking for tmp dir', err);
|
||||
}
|
||||
if (!fileExists) {
|
||||
try {
|
||||
await fs_extra_1.mkdir(TMPDIR);
|
||||
console.log(`Created tmpdir ${TMPDIR}`);
|
||||
await fs_extra_1.mkdir(this.TMPDIR);
|
||||
console.log(`Created tmpdir ${this.TMPDIR}`);
|
||||
}
|
||||
catch (err) {
|
||||
console.error('Error creating tmp dir', err);
|
||||
}
|
||||
}
|
||||
try {
|
||||
await clearAll();
|
||||
await this.clearAll();
|
||||
}
|
||||
catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
module.exports = (sys) => {
|
||||
system = sys;
|
||||
TMPDIR = path_1.join(system.tmp, 'mcopy_digital');
|
||||
checkDir();
|
||||
return {
|
||||
frames,
|
||||
frame,
|
||||
clear,
|
||||
clearAll
|
||||
};
|
||||
return new FFMPEG(sys);
|
||||
};
|
||||
//# sourceMappingURL=index.js.map
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ffmpeg/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,+BAA4B;AAC5B,uCAA0D;AAC1D,+BAA4B;AAI5B,IAAI,MAAM,GAAS,EAAE,CAAC;AACtB,IAAI,MAAe,CAAC;AAEpB;;;;;;IAMI;AAEJ,SAAS,YAAY,CAAE,CAAU;IAChC,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;IAC1B,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACjC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;KAChB;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;;;IAOI;AACJ,KAAK,UAAU,KAAK,CAAE,KAAW,EAAE,KAAW;IAC7C,MAAM,QAAQ,GAAY,KAAK,CAAC,KAAK,CAAC;IACtC,MAAM,KAAK,GAAY,KAAK,CAAC,IAAI,CAAC;IAClC,MAAM,CAAC,GAAY,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC,MAAM,CAAC,GAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACrC,MAAM,MAAM,GAAY,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,GAAG,GAAY,KAAK,CAAC;IACzB,IAAI,GAAG,GAAW,KAAK,CAAC,KAAK,CAAC;IAC9B,IAAI,SAAkB,CAAC;IACvB,IAAI,GAAY,CAAC;IACjB,IAAI,MAAY,CAAC;IACjB,IAAI,IAAa,CAAC;IAClB,IAAI,OAAa,CAAC;IAElB,IAAI,KAAK,GAAY,EAAE,CAAC;IACxB,IAAI,CAAC,IAAI,CAAC,EAAE;QACX,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;KAC3B;IAED,oBAAoB;IAEpB,kCAAkC;IACjC,GAAG,GAAG,KAAK,CAAC;IACb,GAAG;IAEH,SAAS,GAAG,WAAI,CAAC,MAAM,EAAE,UAAU,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IAEpD,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE;QAC5B,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IACJ,EAAE;IACD,GAAG,GAAG,iBAAiB,KAAK,0BAA0B,QAAQ,KAAK,KAAK,sDAAsD,SAAS,GAAG,CAAC;IAC3I,IAAI,GAAG,YAAY,SAAS,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,wCAAwC,SAAS,GAAG,CAAC;IAE1J,uEAAuE;IACvE,8EAA8E;IAC9E,2FAA2F;IAE3F,IAAI;QACH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,GAAG,MAAM,WAAI,CAAC,GAAG,CAAC,CAAC;KACzB;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACnB;IACD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/D,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACvD,IAAI;YACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,GAAG,MAAM,WAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;QAAC,OAAO,GAAG,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACnB;KACD;IAED,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAClE,OAAO,SAAS,CAAA;AACjB,CAAC;AAED;;;;;;;;IAQI;AACJ,KAAK,UAAU,MAAM,CAAE,KAAc,EAAE,GAAS;IAC/C,MAAM,OAAO,GAAY,MAAM,CAAC;IAChC,IAAI,GAAG,GAAY,KAAK,CAAC;IACzB,IAAI,SAAkB,CAAC;IAEvB,kCAAkC;IACjC,GAAG,GAAG,KAAK,CAAC;IACb,GAAG;IAEH,SAAS,GAAG,WAAI,CAAC,OAAO,EAAE,eAAe,GAAG,EAAE,CAAC,CAAC;IAChD,IAAI;QACH,MAAM,gBAAK,CAAC,OAAO,CAAC,CAAC;KACrB;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACnB;IAED,0EAA0E;AAC3E,CAAC;AAED;;;;;;IAMI;AACJ,KAAK,UAAU,KAAK,CAAE,KAAc;IACnC,MAAM,MAAM,GAAY,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,GAAG,GAAY,KAAK,CAAC;IACzB,IAAI,OAAgB,CAAC;IACrB,IAAI,SAAkB,CAAC;IACvB,IAAI,GAAY,CAAC;IACjB,IAAI,UAAoB,CAAC;IAEzB,kCAAkC;IACjC,GAAG,GAAG,KAAK,CAAC;IACb,GAAG;IAEH,OAAO,GAAG,WAAI,CAAC,MAAM,EAAE,UAAU,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;IAElD,IAAI;QACH,UAAU,GAAG,MAAM,iBAAM,CAAC,OAAO,CAAC,CAAC;KACnC;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACnB;IAED,IAAI,CAAC,iBAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,IAAI;QACH,MAAM,iBAAM,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;KACxC;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACnB;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;IAGI;AACJ,KAAK,UAAU,QAAQ;IACtB,MAAM,OAAO,GAAY,MAAM,CAAC;IAChC,IAAI,KAAW,CAAC;IAChB,IAAI;QACH,KAAK,GAAG,MAAM,kBAAO,CAAC,OAAO,CAAC,CAAC;KAC/B;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACnB;IACD,IAAI,KAAK,EAAE;QACV,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAa,EAAE,KAAW,EAAE,EAAE;YAClD,IAAI;gBACH,MAAM,iBAAM,CAAC,WAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;aAClC;YAAC,OAAO,GAAG,EAAE;gBACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnB;QACF,CAAC,CAAC,CAAC;KACH;AACF,CAAC;AAED;;;IAGI;AACJ,KAAK,UAAU,QAAQ;IACtB,IAAI,UAAoB,CAAC;IACzB,IAAI;QACH,UAAU,GAAG,MAAM,iBAAM,CAAC,MAAM,CAAC,CAAC;KAClC;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;KACjD;IAED,IAAI,CAAC,UAAU,EAAE;QAChB,IAAI;YACH,MAAM,gBAAK,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;SACxC;QAAC,OAAO,GAAG,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;SAC7C;KACD;IACD,IAAI;QACH,MAAM,QAAQ,EAAE,CAAC;KACjB;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACnB;AACF,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,GAAS,EAAE,EAAE;IAC9B,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,WAAI,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAE3C,QAAQ,EAAE,CAAC;IAEX,OAAO;QACN,MAAM;QACN,KAAK;QACL,KAAK;QACL,QAAQ;KACR,CAAA;AACF,CAAC,CAAA"}
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ffmpeg/index.ts"],"names":[],"mappings":"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"}
|
|
@ -9,10 +9,24 @@ import { exec } from 'exec';
|
|||
//const spawn = require('spawn');
|
||||
import { exit } from 'exit';
|
||||
|
||||
let system : any = {};
|
||||
let TMPDIR : string;
|
||||
/** @class FFMPEG **/
|
||||
|
||||
/**
|
||||
class FFMPEG {
|
||||
private system : any;
|
||||
private log : any;
|
||||
private id : string = 'ffmpeg';
|
||||
private TMPDIR : string;
|
||||
constructor (sys : any) {
|
||||
this.system = sys;
|
||||
this.TMPDIR = join(this.system.tmp, 'mcopy_digital');
|
||||
this.init()
|
||||
}
|
||||
async init () {
|
||||
const Log = require('log');
|
||||
this.log = await Log({ label : this.id });
|
||||
await this.checkDir();
|
||||
}
|
||||
/**
|
||||
* Add padding to a number to 5 places. Return a string.
|
||||
*
|
||||
* @param {integer} i Integer to pad
|
||||
|
@ -20,16 +34,16 @@ let TMPDIR : string;
|
|||
* @returns {string} Padded string
|
||||
**/
|
||||
|
||||
function padded_frame (i : number) {
|
||||
private padded_frame (i : number) {
|
||||
let len = (i + '').length;
|
||||
let str = i + '';
|
||||
for (let x = 0; x < 5 - len; x++) {
|
||||
str = '0' + str;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Render a single frame from a video or image to a png.
|
||||
*
|
||||
* @param {object} state State object containing file data
|
||||
|
@ -37,12 +51,12 @@ function padded_frame (i : number) {
|
|||
*
|
||||
* @returns {string} Path of frame
|
||||
**/
|
||||
async function frame (state : any, light : any) {
|
||||
public async frame (state : any, light : any) {
|
||||
const frameNum : number = state.frame;
|
||||
const video : string = state.path;
|
||||
const w : number = state.info.width;
|
||||
const h : number = state.info.height;
|
||||
const padded : string = padded_frame(frameNum);
|
||||
const padded : string = this.padded_frame(frameNum);
|
||||
let ext : string = 'tif';
|
||||
let rgb : any[] = light.color;
|
||||
let tmpoutput : string;
|
||||
|
@ -62,12 +76,12 @@ async function frame (state : any, light : any) {
|
|||
ext = 'png';
|
||||
//}
|
||||
|
||||
tmpoutput = join(TMPDIR, `export-${padded}.${ext}`);
|
||||
tmpoutput = join(this.TMPDIR, `export-${padded}.${ext}`);
|
||||
|
||||
rgb = rgb.map((e : string) => {
|
||||
return parseInt(e);
|
||||
});
|
||||
//
|
||||
//
|
||||
cmd = `ffmpeg -y -i "${video}" -vf "select='gte(n\\,${frameNum})'${scale}" -vframes 1 -compression_algo raw -pix_fmt rgb24 "${tmpoutput}"`;
|
||||
cmd2 = `convert "${tmpoutput}" -resize ${w}x${h} -size ${w}x${h} xc:"rgb(${rgb[0]},${rgb[1]},${rgb[2]})" +swap -compose Darken -composite "${tmpoutput}"`;
|
||||
|
||||
|
@ -94,9 +108,9 @@ async function frame (state : any, light : any) {
|
|||
|
||||
if (output2 && output2.stdout) console.log(`"${output2.stdout}"`);
|
||||
return tmpoutput
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Render all frames in a video to the temp directory.
|
||||
* Not in use.
|
||||
*
|
||||
|
@ -105,8 +119,8 @@ async function frame (state : any, light : any) {
|
|||
*
|
||||
* @returns {?}
|
||||
**/
|
||||
async function frames (video : string, obj : any) {
|
||||
const tmppath : string = TMPDIR;
|
||||
public async frames (video : string, obj : any) {
|
||||
const tmppath : string = this.TMPDIR;
|
||||
let ext : string = 'tif';
|
||||
let tmpoutput : string;
|
||||
|
||||
|
@ -122,17 +136,17 @@ async function frames (video : string, obj : any) {
|
|||
}
|
||||
|
||||
//ffmpeg -i "${video}" -compression_algo raw -pix_fmt rgb24 "${tmpoutput}"
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Clears a specific frame from the tmp directory
|
||||
*
|
||||
* @param {integer} frame Integer of frame to clear
|
||||
*
|
||||
* @returns {boolean} True if successful, false if not
|
||||
**/
|
||||
async function clear (frame : number) {
|
||||
const padded : string = padded_frame(frame);
|
||||
public async clear (frame : number) {
|
||||
const padded : string = this.padded_frame(frame);
|
||||
let ext : string = 'tif';
|
||||
let tmppath : string;
|
||||
let tmpoutput : string;
|
||||
|
@ -143,7 +157,7 @@ async function clear (frame : number) {
|
|||
ext = 'png';
|
||||
//}
|
||||
|
||||
tmppath = join(TMPDIR, `export-${padded}.${ext}`);
|
||||
tmppath = join(this.TMPDIR, `export-${padded}.${ext}`);
|
||||
|
||||
try {
|
||||
fileExists = await exists(tmppath);
|
||||
|
@ -161,14 +175,14 @@ async function clear (frame : number) {
|
|||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Delete all frames in temp directory.
|
||||
*
|
||||
**/
|
||||
async function clearAll () {
|
||||
const tmppath : string = TMPDIR;
|
||||
public async clearAll () {
|
||||
const tmppath : string = this.TMPDIR;
|
||||
let files : any;
|
||||
try {
|
||||
files = await readdir(tmppath);
|
||||
|
@ -184,45 +198,37 @@ async function clearAll () {
|
|||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Checks if mcopy temp directory exists. If it doesn't,
|
||||
* create it.
|
||||
**/
|
||||
async function checkDir () {
|
||||
private async checkDir () {
|
||||
let fileExists : boolean;
|
||||
try {
|
||||
fileExists = await exists(TMPDIR);
|
||||
fileExists = await exists(this.TMPDIR);
|
||||
} catch (err) {
|
||||
console.error('Error checking for tmp dir', err);
|
||||
}
|
||||
|
||||
if (!fileExists) {
|
||||
try {
|
||||
await mkdir(TMPDIR);
|
||||
console.log(`Created tmpdir ${TMPDIR}`);
|
||||
await mkdir(this.TMPDIR);
|
||||
console.log(`Created tmpdir ${this.TMPDIR}`);
|
||||
} catch (err) {
|
||||
console.error('Error creating tmp dir', err);
|
||||
}
|
||||
}
|
||||
try {
|
||||
await clearAll();
|
||||
await this.clearAll();
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = (sys : any) => {
|
||||
system = sys;
|
||||
TMPDIR = join(system.tmp, 'mcopy_digital');
|
||||
|
||||
checkDir();
|
||||
|
||||
return {
|
||||
frames,
|
||||
frame,
|
||||
clear,
|
||||
clearAll
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = (sys : any) => {
|
||||
return new FFMPEG(sys);
|
||||
}
|
Loading…
Reference in New Issue