Add progress

This commit is contained in:
Jerome Wu
2019-11-18 22:05:54 +08:00
parent 3e83d9a718
commit 7a380f529b
6 changed files with 39 additions and 34 deletions

View File

@@ -1,3 +1,4 @@
module.exports = {
logger: () => {},
progress: () => {},
};

View File

@@ -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);
}
});

View 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 });
}
};