| import {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(); | |
| return ( | |
| <Video | |
| pauseWhenBuffering | |
| startFrom={(fps * entry.props.startFrom) / 30} | |
| endAt={(fps * entry.props.endAt) / 30} | |
| volume={(fps * entry.props.volume) / 30} | |
| src={staticFile(entry.name)} | |
| /> | |
| ); | |
| }); | |
| export default VideoStream; | |