Mbonea's picture
samples
a2dcb8b
raw
history blame contribute delete
No virus
1.25 kB
import {Loop} from 'remotion';
import React from 'react';
import {Video, staticFile, useVideoConfig} from 'remotion';
import videoSequences from './Assets/VideoSequences.json';
import {TransitionSeries} from '@remotion/transitions';
const VideoStream = React.memo(() => {
const {fps} = useVideoConfig();
return (
<TransitionSeries
style={{
position: 'absolute',
zIndex: 1,
}}
>
{videoSequences.map((entry, index) => {
return (
<TransitionSeries.Sequence
key={index}
from={fps * entry.start}
durationInFrames={fps * (entry.end - entry.start)}
>
<VideoX entry={entry} />
</TransitionSeries.Sequence>
);
})}
</TransitionSeries>
);
});
const VideoX = React.memo(({entry}) => {
const {fps} = useVideoConfig();
const videoProps = {
pauseWhenBuffering: true,
startFrom: (fps * entry.props.startFrom) / 30,
endAt: (fps * entry.props.endAt) / 30,
volume: (fps * entry.props.volume) / 30,
src: staticFile(entry.name),
style: entry?.style ? entry.style : {},
playbackRate: entry.props.playbackRate ? entry.props.playbackRate : 1,
};
return (
<>
{entry?.loop ? <Video loop {...videoProps} /> : <Video {...videoProps} />}
</>
);
});
export default VideoStream;