Skip to content

Commit 0ef8c21

Browse files
committed
Fix overwriting variables when running multiple instances.
1 parent 2d6fae8 commit 0ef8c21

File tree

3 files changed

+38
-57
lines changed

3 files changed

+38
-57
lines changed

src/createFFmpeg.js

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
const { defaultArgs, baseOptions } = require('./config');
2-
const { setLogging, setCustomLogger, log } = require('./utils/log');
3-
const parseProgress = require('./utils/parseProgress');
42
const parseArgs = require('./utils/parseArgs');
53
const { defaultOptions, getCreateFFmpegCore } = require('./node');
64
const { version } = require('../package.json');
@@ -22,14 +20,48 @@ module.exports = (_options = {}) => {
2220
let ffmpeg = null;
2321
let runResolve = null;
2422
let running = false;
23+
let customLogger = () => {};
2524
let progress = optProgress;
25+
let duration = 0;
26+
let ratio = 0;
27+
2628
const detectCompletion = (message) => {
2729
if (message === 'FFMPEG_END' && runResolve !== null) {
2830
runResolve();
2931
runResolve = null;
3032
running = false;
3133
}
3234
};
35+
const log = (type, message) => {
36+
customLogger({ type, message });
37+
if (logging) {
38+
console.log(`[${type}] ${message}`);
39+
}
40+
};
41+
const ts2sec = (ts) => {
42+
const [h, m, s] = ts.split(':');
43+
return (parseFloat(h) * 60 * 60) + (parseFloat(m) * 60) + parseFloat(s);
44+
};
45+
const parseProgress = (message, progress) => {
46+
if (typeof message === 'string') {
47+
if (message.startsWith(' Duration')) {
48+
const ts = message.split(', ')[0].split(': ')[1];
49+
const d = ts2sec(ts);
50+
progress({ duration: d, ratio });
51+
if (duration === 0 || duration > d) {
52+
duration = d;
53+
}
54+
} else if (message.startsWith('frame') || message.startsWith('size')) {
55+
const ts = message.split('time=')[1].split(' ')[0];
56+
const t = ts2sec(ts);
57+
ratio = t / duration;
58+
progress({ ratio, time: t });
59+
} else if (message.startsWith('video:')) {
60+
progress({ ratio: 1 });
61+
duration = 0;
62+
}
63+
}
64+
};
3365
const parseMessage = ({ type, message }) => {
3466
log(type, message);
3567
parseProgress(message, progress);
@@ -190,11 +222,12 @@ module.exports = (_options = {}) => {
190222
};
191223

192224
const setLogger = (_logger) => {
193-
setCustomLogger(_logger);
225+
customLogger = _logger;
194226
};
195227

196-
setLogging(logging);
197-
setCustomLogger(logger);
228+
const setLogging = (_logging) => {
229+
logging = _logging;
230+
};
198231

199232
log('info', `use ffmpeg.wasm v${version}`);
200233

src/utils/log.js

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/utils/parseProgress.js

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)