Complete major refactor
This commit is contained in:
@@ -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`,
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user