File size: 1,673 Bytes
1c1e321 0caf896 8a4825d 1c1e321 8a4825d 2d9a860 1c1e321 2d9a860 1c1e321 8a4825d 1c1e321 0caf896 2d9a860 0caf896 1c1e321 1ecc9f0 1c1e321 948d87b 0caf896 948d87b 1ecc9f0 948d87b 2d9a860 948d87b 1c1e321 0caf896 1c1e321 2d9a860 1c1e321 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import React, {createElement} from 'react';
import {useVideoConfig, AbsoluteFill, TransitionSeries} from 'remotion';
import * as Fonts from '@remotion/google-fonts';
import transcriptData from './Assets/TextSequences.json';
import {FONT_FAMILY} from './constants';
import {TransitionSeries} from '@remotion/transitions';
const subtitle = {
fontFamily: FONT_FAMILY,
fontSize: 150,
textAlign: 'center',
textShadow:
'-5px -5px 0 #00ff, 0 -5px 0 #00ff, 5px -5px 0 #00ff, 5px 0 0 #00ff, 5px 5px 0 #00ff, 0 5px 0 #00ff, -5px 5px 0 #00ff, -5px 0 0 #00ff',
position: 'fixed',
fontWeight: 'bolder',
color: 'white',
bottom: 200,
height: 'fit-content',
width: '100%',
};
Fonts.getAvailableFonts()
.filter((font) => {
return font.fontFamily === FONT_FAMILY;
})[0]
.load()
.then((font) => font.loadFont());
export const TextStream = () => {
const {fps} = useVideoConfig();
return (
<AbsoluteFill
style={{
backgroundColor: 'transparent',
justifyContent: 'center',
alignItems: 'center',
position: 'relative',
// backgroundColor: 'red',
}}
>
<TransitionSeries>
{transcriptData.map((entry, index) => {
const delta = entry.end - entry.start < 1 / 30 ? 0.2 : 0;
return (
<TransitionSeries.Sequence
style={subtitle}
key={index}
from={(entry.start + delta) * fps}
durationInFrames={fps * (entry.end - entry.start + delta)}
>
<Letter style={subtitle}>{entry.text}</Letter>
</TransitionSeries.Sequence>
);
})}
</TransitionSeries>
</AbsoluteFill>
);
};
export function Letter({children, style}) {
return <div style={style}>{children}</div>;
}
|