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 |
})}
|