@revideo/2d 0.4.5-alpha.1013 → 0.4.5-alpha.1015
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/editor/editor/tsconfig.build.tsbuildinfo +1 -1
- package/lib/components/Video.d.ts +1 -0
- package/lib/components/Video.d.ts.map +1 -1
- package/lib/components/Video.js +7 -2
- package/lib/tsconfig.build.tsbuildinfo +1 -1
- package/lib/utils/video/mp4-parser-manager.d.ts +1 -0
- package/lib/utils/video/mp4-parser-manager.d.ts.map +1 -1
- package/lib/utils/video/mp4-parser-manager.js +9 -1
- package/lib/utils/video/parser/parser.d.ts.map +1 -1
- package/lib/utils/video/parser/parser.js +8 -4
- package/lib/utils/video/parser/sampler.d.ts +0 -1
- package/lib/utils/video/parser/sampler.d.ts.map +1 -1
- package/lib/utils/video/parser/sampler.js +1 -5
- package/package.json +4 -4
- package/src/lib/components/Video.ts +7 -1
- package/src/lib/utils/video/mp4-parser-manager.ts +9 -0
- package/src/lib/utils/video/parser/parser.ts +8 -3
- package/src/lib/utils/video/parser/sampler.ts +0 -5
|
@@ -108,7 +108,8 @@ export class Mp4Parser {
|
|
|
108
108
|
let frame = await this.sampler.getNextFrame();
|
|
109
109
|
// If there are no more frames in the current segment, start the next segment
|
|
110
110
|
while (!frame && this.nextSegment < this.edits.length) {
|
|
111
|
-
this.sampler.close();
|
|
111
|
+
this.sampler.getSegment().close();
|
|
112
|
+
this.sampler.getLastFrame()?.close();
|
|
112
113
|
const segment = new Segment(this.uri, this.file, this.edits, this.nextSegment, 0);
|
|
113
114
|
await segment.start(this.decoderConfig);
|
|
114
115
|
this.sampler = new FrameSampler(segment, this.edits[this.nextSegment].fps, this.targetFps, this.sampler.getSum());
|
|
@@ -118,6 +119,8 @@ export class Mp4Parser {
|
|
|
118
119
|
// If there are no more frames, return the last frame
|
|
119
120
|
if (!frame) {
|
|
120
121
|
frame = this.sampler.getLastFrame();
|
|
122
|
+
// We can close the segment
|
|
123
|
+
this.sampler.getSegment().close();
|
|
121
124
|
// If we still don't have a frame, throw an error
|
|
122
125
|
if (!frame) {
|
|
123
126
|
throw new Error('There are no frames in the video.');
|
|
@@ -156,8 +159,9 @@ export class Mp4Parser {
|
|
|
156
159
|
return this.sampler?.getLastFrame();
|
|
157
160
|
}
|
|
158
161
|
close() {
|
|
159
|
-
this.sampler?.close();
|
|
160
|
-
this.
|
|
162
|
+
this.sampler?.getSegment().close();
|
|
163
|
+
this.sampler?.getLastFrame()?.close();
|
|
164
|
+
this.file.flush();
|
|
161
165
|
}
|
|
162
166
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy92aWRlby9wYXJzZXIvcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFPLFdBQVcsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUU1RDs7Ozs7O0dBTUc7QUFDSCxLQUFLLFVBQVUsV0FBVyxDQUFDLEdBQVc7SUFDcEMsT0FBTyxJQUFJLE9BQU8sQ0FJZixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNkLE1BQU0sSUFBSSxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzFCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVsQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDM0IsS0FBSyxHQUFHLElBQUksQ0FBQztZQUViLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFbEMsTUFBTSxNQUFNLEdBQUc7Z0JBQ2Isd0VBQXdFO2dCQUN4RSwyQkFBMkI7Z0JBQzNCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSztnQkFDM0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTTtnQkFDL0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSztnQkFDN0IsV0FBVyxFQUFF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
|
|
@@ -8,7 +8,6 @@ export declare class FrameSampler {
|
|
|
8
8
|
constructor(segment: Segment, sourceFps: number, targetFps: number, sum?: number);
|
|
9
9
|
getNextFrame(): Promise<VideoFrame | undefined>;
|
|
10
10
|
getLastFrame(): VideoFrame | undefined;
|
|
11
|
-
close(): Promise<void>;
|
|
12
11
|
getSum(): number;
|
|
13
12
|
getSegment(): Segment;
|
|
14
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampler.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/video/parser/sampler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,qBAAa,YAAY;IAIrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IANb,OAAO,CAAC,SAAS,CAAC,CAAa;gBAGrB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAU;IAGZ,YAAY;IA0ClB,YAAY;
|
|
1
|
+
{"version":3,"file":"sampler.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/video/parser/sampler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,qBAAa,YAAY;IAIrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IANb,OAAO,CAAC,SAAS,CAAC,CAAa;gBAGrB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAU;IAGZ,YAAY;IA0ClB,YAAY;IAIZ,MAAM;IAIN,UAAU;CAGlB"}
|
|
@@ -41,10 +41,6 @@ export class FrameSampler {
|
|
|
41
41
|
getLastFrame() {
|
|
42
42
|
return this.lastFrame;
|
|
43
43
|
}
|
|
44
|
-
async close() {
|
|
45
|
-
this.lastFrame?.close();
|
|
46
|
-
this.segment.close();
|
|
47
|
-
}
|
|
48
44
|
getSum() {
|
|
49
45
|
return this.sum;
|
|
50
46
|
}
|
|
@@ -52,4 +48,4 @@ export class FrameSampler {
|
|
|
52
48
|
return this.segment;
|
|
53
49
|
}
|
|
54
50
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtcGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvdmlkZW8vcGFyc2VyL3NhbXBsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFDVSxPQUFnQixFQUNoQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixNQUFjLENBQUM7UUFIZixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFZO0lBQ3RCLENBQUM7SUFFRyxLQUFLLENBQUMsWUFBWTtRQUN2QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDckQsSUFBSSxDQUFDLEdBQUcsSUFBSSxZQUFZLENBQUM7UUFFekIsd0VBQXdFO1FBQ3hFLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN4QixDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQixhQUFhO1lBQ2IsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRWhELHNDQUFzQztZQUN0QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsT0FBTztZQUNULENBQUM7WUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDZCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFaEQsc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsdURBQXVEO1FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revideo/2d",
|
|
3
|
-
"version": "0.4.5-alpha.
|
|
3
|
+
"version": "0.4.5-alpha.1015+ce1db681",
|
|
4
4
|
"description": "A 2D renderer for revideo",
|
|
5
5
|
"author": "revideo",
|
|
6
6
|
"homepage": "https://re.video/",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@preact/signals": "^1.2.1",
|
|
32
32
|
"@revideo/internal": "^0.0.0",
|
|
33
|
-
"@revideo/ui": "^0.4.5-alpha.
|
|
33
|
+
"@revideo/ui": "^0.4.5-alpha.1015+ce1db681",
|
|
34
34
|
"clsx": "^2.0.0",
|
|
35
35
|
"jsdom": "^22.1.0",
|
|
36
36
|
"preact": "^10.19.2",
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
"@codemirror/language": "^6.10.1",
|
|
41
41
|
"@lezer/common": "^1.2.1",
|
|
42
42
|
"@lezer/highlight": "^1.2.0",
|
|
43
|
-
"@revideo/core": "^0.4.5-alpha.
|
|
43
|
+
"@revideo/core": "^0.4.5-alpha.1015+ce1db681",
|
|
44
44
|
"code-fns": "^0.8.2",
|
|
45
45
|
"hls.js": "^1.5.11",
|
|
46
46
|
"mathjax-full": "^3.2.2",
|
|
47
47
|
"mp4box": "^0.5.2",
|
|
48
48
|
"parse-svg-path": "^0.1.2"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "ce1db68176f9678f8b9fde6a2ba52ace3c4d9bbc"
|
|
51
51
|
}
|
|
@@ -12,7 +12,7 @@ import {computed, initial, nodeName, signal} from '../decorators';
|
|
|
12
12
|
import {DesiredLength} from '../partials';
|
|
13
13
|
import {drawImage} from '../utils';
|
|
14
14
|
import {ImageCommunication} from '../utils/video/ffmpeg-client';
|
|
15
|
-
import {getFrame} from '../utils/video/mp4-parser-manager';
|
|
15
|
+
import {dropExtractor, getFrame} from '../utils/video/mp4-parser-manager';
|
|
16
16
|
import {Media, MediaProps} from './Media';
|
|
17
17
|
|
|
18
18
|
export interface VideoProps extends MediaProps {
|
|
@@ -326,4 +326,10 @@ export class Video extends Media {
|
|
|
326
326
|
this.ratio() ?? video.videoWidth / video.videoHeight
|
|
327
327
|
).toString();
|
|
328
328
|
}
|
|
329
|
+
|
|
330
|
+
public override remove() {
|
|
331
|
+
super.remove();
|
|
332
|
+
dropExtractor(this.key, this.video().src);
|
|
333
|
+
return this;
|
|
334
|
+
}
|
|
329
335
|
}
|
|
@@ -3,6 +3,15 @@ import {Mp4Parser} from './parser';
|
|
|
3
3
|
// List of VideoFrameExtractors
|
|
4
4
|
const videoFrameExtractors = new Map<string, Mp4Parser>();
|
|
5
5
|
|
|
6
|
+
export async function dropExtractor(id: string, filePath: string) {
|
|
7
|
+
const extractorId = filePath + '-' + id;
|
|
8
|
+
const extractor = videoFrameExtractors.get(extractorId);
|
|
9
|
+
if (extractor) {
|
|
10
|
+
extractor.close();
|
|
11
|
+
videoFrameExtractors.delete(extractorId);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
6
15
|
export async function getFrame(
|
|
7
16
|
id: string,
|
|
8
17
|
filePath: string,
|
|
@@ -163,7 +163,8 @@ export class Mp4Parser {
|
|
|
163
163
|
|
|
164
164
|
// If there are no more frames in the current segment, start the next segment
|
|
165
165
|
while (!frame && this.nextSegment < this.edits.length) {
|
|
166
|
-
this.sampler.close();
|
|
166
|
+
this.sampler.getSegment().close();
|
|
167
|
+
this.sampler.getLastFrame()?.close();
|
|
167
168
|
const segment = new Segment(
|
|
168
169
|
this.uri,
|
|
169
170
|
this.file,
|
|
@@ -188,6 +189,9 @@ export class Mp4Parser {
|
|
|
188
189
|
if (!frame) {
|
|
189
190
|
frame = this.sampler.getLastFrame();
|
|
190
191
|
|
|
192
|
+
// We can close the segment
|
|
193
|
+
this.sampler.getSegment().close();
|
|
194
|
+
|
|
191
195
|
// If we still don't have a frame, throw an error
|
|
192
196
|
if (!frame) {
|
|
193
197
|
throw new Error('There are no frames in the video.');
|
|
@@ -241,7 +245,8 @@ export class Mp4Parser {
|
|
|
241
245
|
}
|
|
242
246
|
|
|
243
247
|
public close() {
|
|
244
|
-
this.sampler?.close();
|
|
245
|
-
this.
|
|
248
|
+
this.sampler?.getSegment().close();
|
|
249
|
+
this.sampler?.getLastFrame()?.close();
|
|
250
|
+
this.file.flush();
|
|
246
251
|
}
|
|
247
252
|
}
|