Skip to content

Commit 85ec3ae

Browse files
authored
Merge pull request #329 from rosenrose/master
Fix overwriting variables when running multiple instances.
2 parents 47cd44b + 8330c19 commit 85ec3ae

File tree

1 file changed

+38
-5
lines changed

1 file changed

+38
-5
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');
@@ -23,7 +21,11 @@ module.exports = (_options = {}) => {
2321
let runResolve = null;
2422
let runReject = null;
2523
let running = false;
24+
let customLogger = () => {};
2625
let progress = optProgress;
26+
let duration = 0;
27+
let ratio = 0;
28+
2729
const detectCompletion = (message) => {
2830
if (message === 'FFMPEG_END' && runResolve !== null) {
2931
runResolve();
@@ -32,6 +34,36 @@ module.exports = (_options = {}) => {
3234
running = false;
3335
}
3436
};
37+
const log = (type, message) => {
38+
customLogger({ type, message });
39+
if (logging) {
40+
console.log(`[${type}] ${message}`);
41+
}
42+
};
43+
const ts2sec = (ts) => {
44+
const [h, m, s] = ts.split(':');
45+
return (parseFloat(h) * 60 * 60) + (parseFloat(m) * 60) + parseFloat(s);
46+
};
47+
const parseProgress = (message, progress) => {
48+
if (typeof message === 'string') {
49+
if (message.startsWith(' Duration')) {
50+
const ts = message.split(', ')[0].split(': ')[1];
51+
const d = ts2sec(ts);
52+
progress({ duration: d, ratio });
53+
if (duration === 0 || duration > d) {
54+
duration = d;
55+
}
56+
} else if (message.startsWith('frame') || message.startsWith('size')) {
57+
const ts = message.split('time=')[1].split(' ')[0];
58+
const t = ts2sec(ts);
59+
ratio = t / duration;
60+
progress({ ratio, time: t });
61+
} else if (message.startsWith('video:')) {
62+
progress({ ratio: 1 });
63+
duration = 0;
64+
}
65+
}
66+
};
3567
const parseMessage = ({ type, message }) => {
3668
log(type, message);
3769
parseProgress(message, progress);
@@ -203,11 +235,12 @@ module.exports = (_options = {}) => {
203235
};
204236

205237
const setLogger = (_logger) => {
206-
setCustomLogger(_logger);
238+
customLogger = _logger;
207239
};
208240

209-
setLogging(logging);
210-
setCustomLogger(logger);
241+
const setLogging = (_logging) => {
242+
logging = _logging;
243+
};
211244

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

0 commit comments

Comments
 (0)