Mbonea's picture
sample
3efcf7b
raw
history blame
1.21 kB
import {Loop, Series} 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,
};
return (
<>
{entry?.loop ? (
<Loop>
<Video {...videoProps} />
</Loop>
) : (
<Video {...videoProps} />
)}
</>
);
});
export default VideoStream;