Complete major refactor

This commit is contained in:
Jerome Wu
2020-11-03 15:36:44 +08:00
parent 25f37fa00b
commit 265cf4c580
21 changed files with 248 additions and 239 deletions

View File

@@ -1,13 +1,11 @@
const resolveURL = require('resolve-url');
const { dependencies } = require('../../package.json');
const defaultOptions = require('../constants/defaultOptions');
const { devDependencies } = require('../../package.json');
/*
* Default options for browser worker
* Default options for browser environment
*/
module.exports = {
...defaultOptions,
corePath: (typeof process !== 'undefined' && process.env.FFMPEG_ENV === 'development')
? resolveURL('/node_modules/@ffmpeg/core/ffmpeg-core.js')
: `https://unpkg.com/@ffmpeg/core@v${dependencies['@ffmpeg/core'].substring(1)}/ffmpeg-core.js`,
? resolveURL('/node_modules/@ffmpeg/core/dist/ffmpeg-core.js')
: `https://unpkg.com/@ffmpeg/core@v${devDependencies['@ffmpeg/core'].substring(1)}/ffmpeg-core.js`,
};

View File

@@ -1,12 +1,5 @@
const resolveURL = require('resolve-url');
/**
* readFromBlobOrFile
*
* @name readFromBlobOrFile
* @function
* @access private
*/
const readFromBlobOrFile = (blob) => (
new Promise((resolve, reject) => {
const fileReader = new FileReader();
@@ -23,19 +16,21 @@ const readFromBlobOrFile = (blob) => (
module.exports = async (_data) => {
let data = _data;
if (typeof _data === 'undefined') {
return 'undefined';
return new Uint8Array();
}
if (typeof _data === 'string') {
// Base64 _data
/* From base64 format */
if (/data:_data\/([a-zA-Z]*);base64,([^"]*)/.test(_data)) {
data = atob(_data.split(',')[1])
.split('')
.map((c) => c.charCodeAt(0));
/* From remote server/URL */
} else {
const res = await fetch(resolveURL(_data));
data = await res.arrayBuffer();
}
/* From Blob or File */
} else if (_data instanceof File || _data instanceof Blob) {
data = await readFromBlobOrFile(_data);
}

View File

@@ -1,8 +1,10 @@
const resolveURL = require('resolve-url');
const { log } = require('../utils/log');
module.exports = async ({ corePath }) => {
if (typeof window.Module === 'undefined') {
module.exports = async ({ corePath: _corePath }) => {
if (typeof window.createFFmpegCore === 'undefined') {
log('info', 'fetch ffmpeg-core.worker.js script');
const corePath = resolveURL(_corePath);
const workerBlob = await (await fetch(corePath.replace('ffmpeg-core.js', 'ffmpeg-core.worker.js'))).blob();
window.FFMPEG_CORE_WORKER_SCRIPT = URL.createObjectURL(workerBlob);
log('info', `worker object URL=${window.FFMPEG_CORE_WORKER_SCRIPT}`);
@@ -12,10 +14,7 @@ module.exports = async ({ corePath }) => {
const eventHandler = () => {
script.removeEventListener('load', eventHandler);
log('info', 'initialize ffmpeg-core');
window.Module.onRuntimeInitialized = () => {
log('info', 'ffmpeg-core initialized');
resolve(window.Module);
};
resolve(window.createFFmpegCore);
};
script.src = corePath;
script.type = 'text/javascript';
@@ -24,5 +23,5 @@ module.exports = async ({ corePath }) => {
});
}
log('info', 'ffmpeg-core is loaded already');
return Promise.resolve(window.Module);
return Promise.resolve(window.createFFmpegCore);
};

View File

@@ -1,9 +1,9 @@
const defaultOptions = require('./defaultOptions');
const getModule = require('./getModule');
const getCreateFFmpegCore = require('./getCreateFFmpegCore');
const fetchFile = require('./fetchFile');
module.exports = {
defaultOptions,
getModule,
getCreateFFmpegCore,
fetchFile,
};