shiveshnavin commited on
Commit
b2d9ad7
·
1 Parent(s): b34f990

Committed with Git-Upload

Browse files
src/Compositions.tsx CHANGED
@@ -59,7 +59,7 @@ export const Compositions: React.FC = () => {
59
  Script.transcript
60
  .sort((t, u) => t.index - u.index)
61
  // .filter(item => (item.audioCaptionFile != undefined))
62
- // .slice(0, 2)
63
  .map((section, idx, array) => {
64
  section.index = section.index || idx;
65
  var { text, duration: durationMilis, offset, mediaAbsPaths, mediaAbsPaths, audioFullPath, title, pointers } = section
 
59
  Script.transcript
60
  .sort((t, u) => t.index - u.index)
61
  // .filter(item => (item.audioCaptionFile != undefined))
62
+ // .slice(0, 5)
63
  .map((section, idx, array) => {
64
  section.index = section.index || idx;
65
  var { text, duration: durationMilis, offset, mediaAbsPaths, mediaAbsPaths, audioFullPath, title, pointers } = section
src/RenderUtils.ts CHANGED
@@ -71,7 +71,9 @@ export class RenderUtils {
71
 
72
  return finalGroups?.map(group => {
73
  return {
74
- words: group
 
 
75
  }
76
  });
77
  }
 
71
 
72
  return finalGroups?.map(group => {
73
  return {
74
+ words: group,
75
+ start: undefined,
76
+ end: undefined
77
  }
78
  });
79
  }
src/anims/VideoSplash.tsx CHANGED
@@ -38,5 +38,6 @@ export const VideoSplash:
38
 
39
  export const VideoSplashSchema = z.object({
40
  file: z.string(),
41
- durationInFrames: z.number()
 
42
  });
 
38
 
39
  export const VideoSplashSchema = z.object({
40
  file: z.string(),
41
+ durationInFrames: z.number().optional(),
42
+ style: z.any()
43
  });
src/ig-reel/IGSimpleScene.tsx CHANGED
@@ -28,7 +28,7 @@ export type DisplayMedia = SectionMedia &
28
 
29
 
30
  export const GenerateWordGroupRanges = function (audioCaptionFile: string, setSubtitles: Function, setGroups: Function) {
31
- const subFile = staticFile(RenderUtils.getFileName(audioCaptionFile))
32
  axios.get(subFile).then((response) => {
33
  let subtitles = response?.data
34
  if (subtitles?.default) {
@@ -139,10 +139,8 @@ export const IGSimpleScene: React.FC<any> = (props: {
139
  const isLastScene = script.transcript[script.transcript?.length - 1]?.index == itemIdx
140
  const nextScene = script.transcript.find(i => i.index == itemIdx + 1);
141
  let nextSceneMedia0 = nextScene?.mediaAbsPaths as any as DisplayMedia;
142
- console.log('item.index', item.index,
143
- 'nextSceneMedia0', nextSceneMedia0,
144
- "isLastScene", isLastScene,
145
- 'item?.mediaAbsPaths?.[0]', item?.mediaAbsPaths?.[0])
146
  if (nextSceneMedia0) {
147
  nextSceneMedia0 = calculateDisplayMedia(nextScene as Transcript, durationInSeconds, frame, fps)
148
  }
@@ -166,14 +164,14 @@ export const IGSimpleScene: React.FC<any> = (props: {
166
 
167
 
168
  let curSecond: Number = frame / fps
169
- let word = RenderUtils.findCurrentWord(curSecond, subtitles)
170
  let group: Group = RenderUtils.findCurrentGroupByTime(curSecond, groups)
171
 
172
  let currentDisplayMedia: DisplayMedia = calculateDisplayMedia(item, durationInSeconds, frame, fps)
173
 
174
 
175
 
176
- let chunks: React.ReactNode[] = (item?.mediaAbsPaths?.map((displayMedia: DisplayMedia, i) => {
177
  let chunk = []
178
  let easeInOutExp = Easing.inOut(Easing.bezier(0.8, 0.22, 0.96, 0.65));
179
  easeInOutExp = Easing.ease
@@ -187,13 +185,28 @@ export const IGSimpleScene: React.FC<any> = (props: {
187
  </TransitionSeries.Sequence>
188
  ))
189
  if (i < item?.mediaAbsPaths.length - 1 || true) {
190
- let anims = [CircularWipe, Slide, SlidingDoors, Pan, LinearWipe, Dissolve, CircularWipe, Slide, SlidingDoors, Pan, LinearWipe, Dissolve]
191
- .fill(SlidingDoors)
192
- let Anim = anims[frame % 9]
193
- let seed = i * displayMedia.idx
194
- Anim = RenderUtils.randomElement(anims, `x-${seed}`)
 
 
 
 
 
195
  const easeInOutExp = Easing.inOut(Easing.bezier(0.8, 0.22, 0.96, 0.65));
196
- if (!isLastScene && (item.transition_type?.includes('geometrial') || item.transition_type == undefined)) {
 
 
 
 
 
 
 
 
 
 
197
  chunk.push((
198
  <TransitionSeries.Transition
199
  durationInFrames={60}
@@ -216,7 +229,7 @@ export const IGSimpleScene: React.FC<any> = (props: {
216
  width: '100%',
217
  height: '100%',
218
  }} className='relative'>
219
- <Audio volume={1} loop src={staticFile(speechPath)} />
220
  {
221
  nextSceneMedia0 && (
222
  <TransitionSeries.Sequence durationInFrames={nextSceneMedia0.durationFrames || itemDurationInFrames}>
@@ -234,8 +247,8 @@ export const IGSimpleScene: React.FC<any> = (props: {
234
  {
235
  (item.transition_type?.includes("graphical")) && !isLastScene &&
236
  currentDisplayMedia?.idx > -1 && (
237
- item?.mediaAbsPaths?.map((displayMedia: DisplayMedia, i) => {
238
- let transitionsByMood = Transitions.filter(t => t.mood?.indexOf("happy") > -1)
239
  let transition = RenderUtils.randomElement(transitionsByMood, `x-${displayMedia.idx * displayMedia.durationFrames}`)
240
  // transition = transitionsByMood[5]
241
 
@@ -243,8 +256,9 @@ export const IGSimpleScene: React.FC<any> = (props: {
243
  <Sequence from={displayMedia?.endFrame - transition.durationSec * fps / 2} durationInFrames={transition.durationSec * fps}>
244
  <VideoSplash file={transition.file} style={{
245
  position: 'relative',
246
- height: '100%', width: '100%'
247
- }} />
 
248
  </Sequence>
249
  )
250
  })
@@ -275,7 +289,6 @@ export const IGSimpleScene: React.FC<any> = (props: {
275
  <div style={{
276
  display: 'flex',
277
  flexDirection: 'row',
278
- height: '100%',
279
  justifyContent: 'center',
280
  alignContent: 'center',
281
  paddingTop: '20%',
 
28
 
29
 
30
  export const GenerateWordGroupRanges = function (audioCaptionFile: string, setSubtitles: Function, setGroups: Function) {
31
+ const subFile = staticFile(RenderUtils.getFileName(audioCaptionFile)!!)
32
  axios.get(subFile).then((response) => {
33
  let subtitles = response?.data
34
  if (subtitles?.default) {
 
139
  const isLastScene = script.transcript[script.transcript?.length - 1]?.index == itemIdx
140
  const nextScene = script.transcript.find(i => i.index == itemIdx + 1);
141
  let nextSceneMedia0 = nextScene?.mediaAbsPaths as any as DisplayMedia;
142
+
143
+
 
 
144
  if (nextSceneMedia0) {
145
  nextSceneMedia0 = calculateDisplayMedia(nextScene as Transcript, durationInSeconds, frame, fps)
146
  }
 
164
 
165
 
166
  let curSecond: Number = frame / fps
167
+ let word = RenderUtils.findCurrentWord(curSecond, subtitles!!)
168
  let group: Group = RenderUtils.findCurrentGroupByTime(curSecond, groups)
169
 
170
  let currentDisplayMedia: DisplayMedia = calculateDisplayMedia(item, durationInSeconds, frame, fps)
171
 
172
 
173
 
174
+ let chunks: React.ReactNode[] = ((item?.mediaAbsPaths as any[])?.map((displayMedia: DisplayMedia, i) => {
175
  let chunk = []
176
  let easeInOutExp = Easing.inOut(Easing.bezier(0.8, 0.22, 0.96, 0.65));
177
  easeInOutExp = Easing.ease
 
185
  </TransitionSeries.Sequence>
186
  ))
187
  if (i < item?.mediaAbsPaths.length - 1 || true) {
188
+
189
+ let animsObj = {
190
+ // CircularWipe, Slide,LinearWipe, // Not work
191
+ SlidingDoors: SlidingDoors,
192
+ Pan: Pan,
193
+ Dissolve: Dissolve
194
+ }
195
+ let anims = Object.values(animsObj);//.fill(SlidingDoors);
196
+ let seed = itemIdx + i * displayMedia.idx
197
+ let Anim = RenderUtils.randomElement(anims, `x-${seed}`)
198
  const easeInOutExp = Easing.inOut(Easing.bezier(0.8, 0.22, 0.96, 0.65));
199
+
200
+ let transitionList = item.transition_type?.split(",");
201
+ let animFromTranscript = Object.keys(animsObj).find(n => {
202
+ return transitionList.includes(n)
203
+ })
204
+ if (animFromTranscript) {
205
+ //@ts-ignore
206
+ Anim = animsObj[animFromTranscript]
207
+ }
208
+
209
+ if (!isLastScene && (item.transition_type?.includes('geometrial') || animFromTranscript || item.transition_type == undefined)) {
210
  chunk.push((
211
  <TransitionSeries.Transition
212
  durationInFrames={60}
 
229
  width: '100%',
230
  height: '100%',
231
  }} className='relative'>
232
+ <Audio volume={1} loop src={staticFile(speechPath as string)} />
233
  {
234
  nextSceneMedia0 && (
235
  <TransitionSeries.Sequence durationInFrames={nextSceneMedia0.durationFrames || itemDurationInFrames}>
 
247
  {
248
  (item.transition_type?.includes("graphical")) && !isLastScene &&
249
  currentDisplayMedia?.idx > -1 && (
250
+ (item?.mediaAbsPaths as any)?.map((displayMedia: DisplayMedia) => {
251
+ let transitionsByMood = Transitions.filter(t => (t?.mood?.indexOf("happy") || -1) > -1)
252
  let transition = RenderUtils.randomElement(transitionsByMood, `x-${displayMedia.idx * displayMedia.durationFrames}`)
253
  // transition = transitionsByMood[5]
254
 
 
256
  <Sequence from={displayMedia?.endFrame - transition.durationSec * fps / 2} durationInFrames={transition.durationSec * fps}>
257
  <VideoSplash file={transition.file} style={{
258
  position: 'relative',
259
+ height: '100%',
260
+ width: '100%'
261
+ } as any} />
262
  </Sequence>
263
  )
264
  })
 
289
  <div style={{
290
  display: 'flex',
291
  flexDirection: 'row',
 
292
  justifyContent: 'center',
293
  alignContent: 'center',
294
  paddingTop: '20%',