@zappar/mediarecorder 0.0.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/converter-worker.js +3 -1
- package/lib/converter.d.ts +2 -1
- package/lib/converter.js +42 -13
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/mediarecorder.js +15 -9
- package/lib/webmtransmux.wasm +0 -0
- package/package.json +1 -1
package/lib/converter-worker.js
CHANGED
|
@@ -8,7 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import * as enc from "./encoder";
|
|
11
|
-
enc.initialize(new URL("./webmtransmux.wasm", import.meta.url).toString())
|
|
11
|
+
enc.initialize(new URL("./webmtransmux.wasm", import.meta.url).toString()).then(() => {
|
|
12
|
+
postMessage({ 'type': 'converter-worker-loaded' });
|
|
13
|
+
});
|
|
12
14
|
addEventListener('message', (evt) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13
15
|
if (evt && evt.data && typeof evt.data['indx'] === 'number') {
|
|
14
16
|
const webtrans = yield enc.createWebMTrans();
|
package/lib/converter.d.ts
CHANGED
package/lib/converter.js
CHANGED
|
@@ -1,20 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
let workerPromise;
|
|
2
11
|
export function getWorker() {
|
|
3
|
-
if (!
|
|
4
|
-
|
|
5
|
-
|
|
12
|
+
if (!workerPromise) {
|
|
13
|
+
workerPromise = new Promise(resolve => {
|
|
14
|
+
const worker = new Worker(new URL('./converter-worker', import.meta.url), { type: 'module' });
|
|
15
|
+
function handle(evt) {
|
|
16
|
+
if (evt.data && evt.data.type === 'converter-worker-loaded') {
|
|
17
|
+
worker.removeEventListener('message', handle);
|
|
18
|
+
resolve(worker);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
worker.addEventListener('message', handle);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return workerPromise;
|
|
6
25
|
}
|
|
7
26
|
let nextIndex = 0;
|
|
8
27
|
export function convert(data) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const worker = yield getWorker();
|
|
30
|
+
const indx = nextIndex++;
|
|
31
|
+
return yield new Promise(resolve => {
|
|
32
|
+
function handler(evt) {
|
|
33
|
+
worker.removeEventListener('message', handler);
|
|
34
|
+
if (evt.data['indx'] === indx)
|
|
35
|
+
resolve(evt.data['data']);
|
|
36
|
+
}
|
|
37
|
+
worker.addEventListener('message', handler);
|
|
38
|
+
worker.postMessage({ indx, data }, [data]);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function load() {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
// Preload worker if it's likely to be necessary
|
|
45
|
+
if (!MediaRecorder.isTypeSupported('video/mp4') && MediaRecorder.isTypeSupported('video/webm;codecs="avc1,opus"')) {
|
|
46
|
+
yield getWorker();
|
|
16
47
|
}
|
|
17
|
-
worker.addEventListener('message', handler);
|
|
18
|
-
worker.postMessage({ indx, data }, [data]);
|
|
19
48
|
});
|
|
20
49
|
}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { ConvertingMediaRecorder as MediaRecorder } from './mediarecorder';
|
|
2
|
-
export { convert } from './converter';
|
|
2
|
+
export { convert, load } from './converter';
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { ConvertingMediaRecorder as MediaRecorder } from './mediarecorder';
|
|
2
|
-
export { convert } from './converter';
|
|
2
|
+
export { convert, load } from './converter';
|
package/lib/mediarecorder.js
CHANGED
|
@@ -7,11 +7,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import { convert
|
|
10
|
+
import { convert } from "./converter";
|
|
11
11
|
export class ConvertingMediaRecorder extends MediaRecorder {
|
|
12
12
|
static isTypeSupported(type) {
|
|
13
13
|
if (type === 'video/mp4') {
|
|
14
|
-
|
|
14
|
+
if (MediaRecorder.isTypeSupported('video/mp4'))
|
|
15
|
+
return true;
|
|
16
|
+
if (!MediaRecorder.isTypeSupported('video/webm;codecs="avc1,opus"')) {
|
|
17
|
+
console.log("Warning: device doesn't support codec required for @zappar/mediarecorder remuxing ('video/webm;codecs=\"avc1,opus\"')");
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
15
20
|
}
|
|
16
21
|
return MediaRecorder.isTypeSupported(type);
|
|
17
22
|
}
|
|
@@ -19,9 +24,14 @@ export class ConvertingMediaRecorder extends MediaRecorder {
|
|
|
19
24
|
let needsConversion = false;
|
|
20
25
|
let mimeType = options === null || options === void 0 ? void 0 : options.mimeType;
|
|
21
26
|
if (mimeType === 'video/mp4') {
|
|
22
|
-
if (!MediaRecorder.isTypeSupported('video/mp4')
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
if (!MediaRecorder.isTypeSupported('video/mp4')) {
|
|
28
|
+
if (!MediaRecorder.isTypeSupported('video/webm;codecs="avc1,opus"')) {
|
|
29
|
+
console.log("Warning: device doesn't support codec required for @zappar/mediarecorder remuxing ('video/webm;codecs=\"avc1,opus\"')");
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
needsConversion = true;
|
|
33
|
+
mimeType = 'video/webm;codecs="avc1,opus"';
|
|
34
|
+
}
|
|
25
35
|
}
|
|
26
36
|
}
|
|
27
37
|
super(stream, Object.assign(Object.assign({}, options), { mimeType }));
|
|
@@ -105,7 +115,3 @@ export class ConvertingMediaRecorder extends MediaRecorder {
|
|
|
105
115
|
return super.ondataavailable;
|
|
106
116
|
}
|
|
107
117
|
}
|
|
108
|
-
// Preload worker if it's likely to be necessary
|
|
109
|
-
if (!MediaRecorder.isTypeSupported('video/mp4') && MediaRecorder.isTypeSupported('video/webm;codecs="avc1,opus"')) {
|
|
110
|
-
getWorker();
|
|
111
|
-
}
|
package/lib/webmtransmux.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED