added zoom
Browse files
Remotion-app/src/HelloWorld/ImageStream.jsx
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
import {Series} from 'remotion';
|
2 |
import React from 'react';
|
3 |
import {staticFile, useVideoConfig, Img} from 'remotion';
|
4 |
import {slide} from '@remotion/transitions/slide';
|
@@ -6,6 +6,8 @@ import imageSequences from './Assets/ImageSequences.json';
|
|
6 |
import {TransitionSeries, linearTiming} from '@remotion/transitions';
|
7 |
export default function ImageStream() {
|
8 |
const {fps} = useVideoConfig();
|
|
|
|
|
9 |
return (
|
10 |
<TransitionSeries
|
11 |
style={{
|
@@ -21,13 +23,33 @@ export default function ImageStream() {
|
|
21 |
}}
|
22 |
>
|
23 |
{imageSequences.map((entry, index) => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
return (
|
25 |
<TransitionSeries.Sequence
|
26 |
key={index}
|
27 |
from={fps * entry.start}
|
28 |
durationInFrames={fps * (entry.end - entry.start)}
|
29 |
>
|
30 |
-
<Img
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
</TransitionSeries.Sequence>
|
32 |
);
|
33 |
})}
|
|
|
1 |
+
import {Series, useCurrentFrame} from 'remotion';
|
2 |
import React from 'react';
|
3 |
import {staticFile, useVideoConfig, Img} from 'remotion';
|
4 |
import {slide} from '@remotion/transitions/slide';
|
|
|
6 |
import {TransitionSeries, linearTiming} from '@remotion/transitions';
|
7 |
export default function ImageStream() {
|
8 |
const {fps} = useVideoConfig();
|
9 |
+
|
10 |
+
const frame = useCurrentFrame();
|
11 |
return (
|
12 |
<TransitionSeries
|
13 |
style={{
|
|
|
23 |
}}
|
24 |
>
|
25 |
{imageSequences.map((entry, index) => {
|
26 |
+
const durationInFrames = (entry.end - entry.start) * fps;
|
27 |
+
const zoom = interpolate(
|
28 |
+
frame,
|
29 |
+
[
|
30 |
+
0,
|
31 |
+
durationInFrames / 4,
|
32 |
+
2 * (durationInFrames / 4),
|
33 |
+
3 * (durationInFrames / 4),
|
34 |
+
durationInFrames,
|
35 |
+
],
|
36 |
+
[1, 1.2, 1, 1.2, 1],
|
37 |
+
{extrapolateRight: 'clamp'}
|
38 |
+
);
|
39 |
+
|
40 |
return (
|
41 |
<TransitionSeries.Sequence
|
42 |
key={index}
|
43 |
from={fps * entry.start}
|
44 |
durationInFrames={fps * (entry.end - entry.start)}
|
45 |
>
|
46 |
+
<Img
|
47 |
+
style={{
|
48 |
+
transform: `scale(${zoom})`,
|
49 |
+
transition: 'all 1s ease',
|
50 |
+
}}
|
51 |
+
src={staticFile(entry.name)}
|
52 |
+
/>
|
53 |
</TransitionSeries.Sequence>
|
54 |
);
|
55 |
})}
|