Add progress
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
module.exports = {
|
||||
logger: () => {},
|
||||
progress: () => {},
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
const createJob = require('./createJob');
|
||||
const { log } = require('./utils/log');
|
||||
const getId = require('./utils/getId');
|
||||
const extractProgress = require('./utils/extractProgress');
|
||||
const resolvePaths = require('./utils/resolvePaths');
|
||||
const {
|
||||
defaultOptions,
|
||||
@@ -17,6 +18,7 @@ module.exports = (_options = {}) => {
|
||||
const id = getId('Worker', workerCounter);
|
||||
const {
|
||||
logger,
|
||||
progress,
|
||||
...options
|
||||
} = resolvePaths({
|
||||
...defaultOptions,
|
||||
@@ -131,6 +133,7 @@ module.exports = (_options = {}) => {
|
||||
rejects[action](data);
|
||||
throw Error(data);
|
||||
} else if (status === 'progress') {
|
||||
extractProgress(data, progress);
|
||||
logger(data);
|
||||
}
|
||||
});
|
||||
|
||||
19
src/utils/extractProgress.js
Normal file
19
src/utils/extractProgress.js
Normal file
@@ -0,0 +1,19 @@
|
||||
let duration = 0;
|
||||
|
||||
const ts2sec = (ts) => {
|
||||
const [h, m, s] = ts.split(':');
|
||||
return (parseFloat(h) * 60 * 60) + (parseFloat(m) * 60) + parseFloat(s);
|
||||
};
|
||||
|
||||
module.exports = ({ message }, progress) => {
|
||||
if (message.startsWith(' Duration')) {
|
||||
const ts = message.split(', ')[0].split(': ')[1];
|
||||
duration = ts2sec(ts);
|
||||
} else if (message.startsWith('frame')) {
|
||||
const ts = message.split('time=')[1].split(' ')[0];
|
||||
const t = ts2sec(ts);
|
||||
progress({ ratio: t / duration });
|
||||
} else if (message.startsWith('video:')) {
|
||||
progress({ ratio: 1 });
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user