@remotion/web-renderer 4.0.447 → 4.0.448
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/dist/audio.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { TRenderAsset } from 'remotion';
|
|
2
|
-
export declare const onlyInlineAudio: ({ assets, fps, timestamp, }: {
|
|
2
|
+
export declare const onlyInlineAudio: ({ assets, fps, timestamp, sampleRate, }: {
|
|
3
3
|
assets: TRenderAsset[];
|
|
4
4
|
fps: number;
|
|
5
5
|
timestamp: number;
|
|
6
|
+
sampleRate: number;
|
|
6
7
|
}) => AudioData | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getPrecomposeRectForFilter: (element: HTMLElement | SVGElement) => DOMRect;
|
package/dist/esm/index.mjs
CHANGED
|
@@ -670,7 +670,6 @@ var handleArtifacts = () => {
|
|
|
670
670
|
|
|
671
671
|
// src/audio.ts
|
|
672
672
|
var TARGET_NUMBER_OF_CHANNELS = 2;
|
|
673
|
-
var TARGET_SAMPLE_RATE = 48000;
|
|
674
673
|
function mixAudio(waves, length) {
|
|
675
674
|
if (waves.length === 1 && waves[0].length === length) {
|
|
676
675
|
return waves[0];
|
|
@@ -691,13 +690,14 @@ function mixAudio(waves, length) {
|
|
|
691
690
|
var onlyInlineAudio = ({
|
|
692
691
|
assets,
|
|
693
692
|
fps,
|
|
694
|
-
timestamp
|
|
693
|
+
timestamp,
|
|
694
|
+
sampleRate
|
|
695
695
|
}) => {
|
|
696
696
|
const inlineAudio = assets.filter((asset) => asset.type === "inline-audio");
|
|
697
697
|
if (inlineAudio.length === 0) {
|
|
698
698
|
return null;
|
|
699
699
|
}
|
|
700
|
-
const expectedLength = Math.round(TARGET_NUMBER_OF_CHANNELS *
|
|
700
|
+
const expectedLength = Math.round(TARGET_NUMBER_OF_CHANNELS * sampleRate / fps);
|
|
701
701
|
for (const asset of inlineAudio) {
|
|
702
702
|
if (asset.toneFrequency !== 1) {
|
|
703
703
|
throw new Error("Setting the toneFrequency is not supported yet in web rendering.");
|
|
@@ -709,7 +709,7 @@ var onlyInlineAudio = ({
|
|
|
709
709
|
format: "s16",
|
|
710
710
|
numberOfChannels: TARGET_NUMBER_OF_CHANNELS,
|
|
711
711
|
numberOfFrames: expectedLength / TARGET_NUMBER_OF_CHANNELS,
|
|
712
|
-
sampleRate
|
|
712
|
+
sampleRate,
|
|
713
713
|
timestamp
|
|
714
714
|
});
|
|
715
715
|
};
|
|
@@ -1107,7 +1107,8 @@ function createScaffold({
|
|
|
1107
1107
|
defaultOutName: defaultOutName ?? null,
|
|
1108
1108
|
defaultVideoImageFormat: null,
|
|
1109
1109
|
defaultPixelFormat: null,
|
|
1110
|
-
defaultProResProfile: null
|
|
1110
|
+
defaultProResProfile: null,
|
|
1111
|
+
defaultSampleRate: null
|
|
1111
1112
|
},
|
|
1112
1113
|
folders: []
|
|
1113
1114
|
},
|
|
@@ -2057,6 +2058,7 @@ var calculateTransforms = ({
|
|
|
2057
2058
|
let opacity = 1;
|
|
2058
2059
|
let elementComputedStyle = null;
|
|
2059
2060
|
let maskImageInfo = null;
|
|
2061
|
+
let filterValue = null;
|
|
2060
2062
|
while (parent) {
|
|
2061
2063
|
const computedStyle = getComputedStyle(parent);
|
|
2062
2064
|
if (parent === element) {
|
|
@@ -2064,6 +2066,16 @@ var calculateTransforms = ({
|
|
|
2064
2066
|
opacity = parseFloat(computedStyle.opacity);
|
|
2065
2067
|
const maskImageValue = getMaskImageValue(computedStyle);
|
|
2066
2068
|
maskImageInfo = maskImageValue ? parseMaskImage(maskImageValue) : null;
|
|
2069
|
+
const computedFilter = computedStyle.filter;
|
|
2070
|
+
if (computedFilter && computedFilter !== "none") {
|
|
2071
|
+
filterValue = computedFilter;
|
|
2072
|
+
const originalFilter = parent.style.filter;
|
|
2073
|
+
parent.style.filter = "none";
|
|
2074
|
+
const parentRefFilter = parent;
|
|
2075
|
+
toReset.push(() => {
|
|
2076
|
+
parentRefFilter.style.filter = originalFilter;
|
|
2077
|
+
});
|
|
2078
|
+
}
|
|
2067
2079
|
const originalMaskImage = parent.style.maskImage;
|
|
2068
2080
|
const originalWebkitMaskImage = parent.style.webkitMaskImage;
|
|
2069
2081
|
parent.style.maskImage = "none";
|
|
@@ -2127,6 +2139,7 @@ var calculateTransforms = ({
|
|
|
2127
2139
|
}
|
|
2128
2140
|
const needs3DTransformViaWebGL = !totalMatrix.is2D;
|
|
2129
2141
|
const needsMaskImage = maskImageInfo !== null;
|
|
2142
|
+
const needsFilter = filterValue !== null;
|
|
2130
2143
|
return {
|
|
2131
2144
|
dimensions,
|
|
2132
2145
|
totalMatrix,
|
|
@@ -2142,7 +2155,8 @@ var calculateTransforms = ({
|
|
|
2142
2155
|
precompositing: {
|
|
2143
2156
|
needs3DTransformViaWebGL,
|
|
2144
2157
|
needsMaskImage: maskImageInfo,
|
|
2145
|
-
|
|
2158
|
+
needsFilter: filterValue,
|
|
2159
|
+
needsPrecompositing: Boolean(needs3DTransformViaWebGL || needsMaskImage || needsFilter)
|
|
2146
2160
|
}
|
|
2147
2161
|
};
|
|
2148
2162
|
};
|
|
@@ -3509,6 +3523,11 @@ var handle3dTransform = ({
|
|
|
3509
3523
|
return transformed;
|
|
3510
3524
|
};
|
|
3511
3525
|
|
|
3526
|
+
// src/drawing/handle-filter.ts
|
|
3527
|
+
var getPrecomposeRectForFilter = (element) => {
|
|
3528
|
+
return getBiggestBoundingClientRect(element);
|
|
3529
|
+
};
|
|
3530
|
+
|
|
3512
3531
|
// src/drawing/handle-mask.ts
|
|
3513
3532
|
var getPrecomposeRectForMask = (element) => {
|
|
3514
3533
|
const boundingRect = getBiggestBoundingClientRect(element);
|
|
@@ -3596,6 +3615,12 @@ var processNode = async ({
|
|
|
3596
3615
|
if (precompositing.needsMaskImage) {
|
|
3597
3616
|
precomposeRect = roundToExpandRect(getPrecomposeRectForMask(element));
|
|
3598
3617
|
}
|
|
3618
|
+
if (precompositing.needsFilter) {
|
|
3619
|
+
precomposeRect = roundToExpandRect(getWiderRectAndExpand({
|
|
3620
|
+
firstRect: precomposeRect,
|
|
3621
|
+
secondRect: getPrecomposeRectForFilter(element)
|
|
3622
|
+
}));
|
|
3623
|
+
}
|
|
3599
3624
|
if (precompositing.needs3DTransformViaWebGL) {
|
|
3600
3625
|
const tentativePrecomposeRect = getPrecomposeRectFor3DTransform({
|
|
3601
3626
|
element,
|
|
@@ -3658,8 +3683,13 @@ var processNode = async ({
|
|
|
3658
3683
|
}
|
|
3659
3684
|
}
|
|
3660
3685
|
const previousTransform = context.getTransform();
|
|
3686
|
+
const previousFilter = context.filter;
|
|
3661
3687
|
context.setTransform(new DOMMatrix);
|
|
3688
|
+
if (precompositing.needsFilter) {
|
|
3689
|
+
context.filter = precompositing.needsFilter;
|
|
3690
|
+
}
|
|
3662
3691
|
context.drawImage(drawable, 0, drawable.height - rectAfterTransforms.height, rectAfterTransforms.width, rectAfterTransforms.height, rectAfterTransforms.left - parentRect.x, rectAfterTransforms.top - parentRect.y, rectAfterTransforms.width, rectAfterTransforms.height);
|
|
3692
|
+
context.filter = previousFilter;
|
|
3663
3693
|
context.setTransform(previousTransform);
|
|
3664
3694
|
Internals6.Log.trace({
|
|
3665
3695
|
logLevel,
|
|
@@ -4274,7 +4304,8 @@ var internalRenderMediaOnWeb = async ({
|
|
|
4274
4304
|
muted,
|
|
4275
4305
|
scale,
|
|
4276
4306
|
isProduction,
|
|
4277
|
-
allowHtmlInCanvas
|
|
4307
|
+
allowHtmlInCanvas,
|
|
4308
|
+
sampleRate
|
|
4278
4309
|
}) => {
|
|
4279
4310
|
let __stack2 = [];
|
|
4280
4311
|
try {
|
|
@@ -4553,7 +4584,7 @@ var internalRenderMediaOnWeb = async ({
|
|
|
4553
4584
|
if (signal?.aborted) {
|
|
4554
4585
|
throw new Error("renderMediaOnWeb() was cancelled");
|
|
4555
4586
|
}
|
|
4556
|
-
const audio = muted ? null : onlyInlineAudio({ assets, fps: resolved.fps, timestamp });
|
|
4587
|
+
const audio = muted ? null : onlyInlineAudio({ assets, fps: resolved.fps, timestamp, sampleRate });
|
|
4557
4588
|
internalState.addAudioMixingTime(performance.now() - audioCombineStart);
|
|
4558
4589
|
const addSampleStart = performance.now();
|
|
4559
4590
|
const encodingPromises = [];
|
|
@@ -4667,7 +4698,8 @@ var renderMediaOnWeb = (options) => {
|
|
|
4667
4698
|
muted: options.muted ?? false,
|
|
4668
4699
|
scale: options.scale ?? 1,
|
|
4669
4700
|
isProduction: options.isProduction ?? true,
|
|
4670
|
-
allowHtmlInCanvas: options.allowHtmlInCanvas ?? false
|
|
4701
|
+
allowHtmlInCanvas: options.allowHtmlInCanvas ?? false,
|
|
4702
|
+
sampleRate: options.sampleRate ?? 48000
|
|
4671
4703
|
}));
|
|
4672
4704
|
return onlyOneRenderAtATimeQueue.ref;
|
|
4673
4705
|
};
|
|
@@ -66,6 +66,7 @@ type OptionalRenderMediaOnWebOptions<Schema extends $ZodObject> = {
|
|
|
66
66
|
muted: boolean;
|
|
67
67
|
scale: number;
|
|
68
68
|
allowHtmlInCanvas: boolean;
|
|
69
|
+
sampleRate: number;
|
|
69
70
|
};
|
|
70
71
|
export type RenderMediaOnWebOptions<Schema extends $ZodObject, Props extends Record<string, unknown>> = MandatoryRenderMediaOnWebOptions<Schema, Props> & Partial<OptionalRenderMediaOnWebOptions<Schema>> & InputPropsIfHasProps<Schema, Props>;
|
|
71
72
|
export declare const renderMediaOnWeb: <Schema extends $ZodObject<Readonly<Readonly<{
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/web-renderer"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/web-renderer",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.448",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"scripts": {
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
"@mediabunny/mp3-encoder": "1.39.2",
|
|
23
23
|
"@mediabunny/aac-encoder": "1.39.2",
|
|
24
24
|
"@mediabunny/flac-encoder": "1.39.2",
|
|
25
|
-
"@remotion/licensing": "4.0.
|
|
26
|
-
"remotion": "4.0.
|
|
25
|
+
"@remotion/licensing": "4.0.448",
|
|
26
|
+
"remotion": "4.0.448",
|
|
27
27
|
"mediabunny": "1.39.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@react-three/fiber": "9.2.0",
|
|
31
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
32
|
-
"@remotion/player": "4.0.
|
|
33
|
-
"@remotion/media": "4.0.
|
|
34
|
-
"@remotion/three": "4.0.
|
|
31
|
+
"@remotion/eslint-config-internal": "4.0.448",
|
|
32
|
+
"@remotion/player": "4.0.448",
|
|
33
|
+
"@remotion/media": "4.0.448",
|
|
34
|
+
"@remotion/three": "4.0.448",
|
|
35
35
|
"@types/three": "0.170.0",
|
|
36
36
|
"@typescript/native-preview": "7.0.0-dev.20260217.1",
|
|
37
37
|
"@vitejs/plugin-react": "4.3.4",
|