Initial commit
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
var workerPath =
|
||||
'https://archive.org/download/ffmpeg_asm/ffmpeg_asm.js';
|
||||
|
||||
function processInWebWorker() {
|
||||
var blob = URL.createObjectURL(
|
||||
new Blob(
|
||||
[
|
||||
'importScripts("' +
|
||||
workerPath +
|
||||
'");var now = Date.now;function print(text) {postMessage({"type" : "stdout","data" : text});};onmessage = function(event) {var message = event.data;if (message.type === "command") {var Module = {print: print,printErr: print,files: message.files || [],arguments: message.arguments || [],TOTAL_MEMORY: message.TOTAL_MEMORY||536870912 || false};postMessage({"type" : "start","data" : Module.arguments.join(" ")});postMessage({"type" : "stdout","data" : "Received command: " +Module.arguments.join(" ") +((Module.TOTAL_MEMORY ) ? ". Processing with " + Module.TOTAL_MEMORY + " bits." : "")});var time = now();var result = ffmpeg_run(Module);var totalTime = now() - time;postMessage({"type" : "stdout","data" : "Finished processing (took " + totalTime + "ms)"});postMessage({"type" : "done","data" : result,"time" : totalTime});}};postMessage({"type" : "ready"});',
|
||||
],
|
||||
{
|
||||
type: 'application/javascript',
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
var worker = new Worker(blob);
|
||||
URL.revokeObjectURL(blob);
|
||||
return worker;
|
||||
}
|
||||
|
||||
var worker;
|
||||
|
||||
function convertStreams(videoBlob, setting) {
|
||||
var aab;
|
||||
var buffersReady;
|
||||
var workerReady;
|
||||
var posted;
|
||||
|
||||
var fileReader = new FileReader();
|
||||
fileReader.onload = function () {
|
||||
aab = this.result;
|
||||
postMessage();
|
||||
};
|
||||
fileReader.readAsArrayBuffer(videoBlob);
|
||||
|
||||
if (!worker) {
|
||||
worker = processInWebWorker();
|
||||
}
|
||||
worker.onmessage = function (event) {
|
||||
var message = event.data;
|
||||
if (message.type == 'ready') {
|
||||
workerReady = true;
|
||||
if (buffersReady) postMessage();
|
||||
} else if (message.type == 'done') {
|
||||
var result = message.data[0];
|
||||
if (setting == 'gif') {
|
||||
var blob = new File([result.data], 'test.gif', {
|
||||
type: 'image/gif',
|
||||
});
|
||||
PostBlob(blob);
|
||||
} else if (setting == 'mp4') {
|
||||
var blob = new File([result.data], 'test.mp4', {
|
||||
type: 'video/mp4',
|
||||
});
|
||||
PostBlob(blob);
|
||||
}
|
||||
}
|
||||
};
|
||||
var postMessage = function () {
|
||||
posted = true;
|
||||
if (setting == 'gif') {
|
||||
worker.postMessage({
|
||||
type: 'command',
|
||||
arguments: '-i video.webm -r 24 output-10.gif'.split(' '),
|
||||
files: [
|
||||
{
|
||||
data: new Uint8Array(aab),
|
||||
name: 'video.webm',
|
||||
},
|
||||
],
|
||||
});
|
||||
} else if (setting == 'mp4') {
|
||||
worker.postMessage({
|
||||
type: 'command',
|
||||
arguments:
|
||||
'-i video.webm -c:v mpeg4 -b:v 6400k -strict experimental output.mp4'.split(
|
||||
' '
|
||||
),
|
||||
files: [
|
||||
{
|
||||
data: new Uint8Array(aab),
|
||||
name: 'video.webm',
|
||||
},
|
||||
],
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function PostBlob(blob) {
|
||||
var url = URL.createObjectURL(blob);
|
||||
const a = document.createElement('a');
|
||||
a.style.display = 'none';
|
||||
a.href = url;
|
||||
a.download = name;
|
||||
document.body.appendChild(a);
|
||||
a.click();
|
||||
recording = false;
|
||||
currenttime = 0;
|
||||
animate(false, 0);
|
||||
$('#seekbar').offset({
|
||||
left:
|
||||
offset_left +
|
||||
$('#inner-timeline').offset().left +
|
||||
currenttime / timelinetime,
|
||||
});
|
||||
canvas.renderAll();
|
||||
resizeCanvas();
|
||||
if (background_audio != false) {
|
||||
background_audio.pause();
|
||||
background_audio = new Audio(background_audio.src);
|
||||
}
|
||||
$('#download-real').html('Download');
|
||||
$('#download-real').removeClass('downloading');
|
||||
updateRecordCanvas();
|
||||
}
|
||||
Reference in New Issue
Block a user