shiveshnavin commited on
Commit
519e0f2
·
1 Parent(s): f75bd44
common-utils CHANGED
@@ -1 +1 @@
1
- Subproject commit f94da96b4fc35945bc0a9d80b7771cd8abedd605
 
1
+ Subproject commit aa2dc6a5bf1013e79ac67b1408fcdedc8b98672c
src/Compositions.tsx CHANGED
@@ -61,8 +61,8 @@ export const Compositions: React.FC = () => {
61
  // .filter(item => (item.audioCaptionFile != undefined))
62
  // .slice(0, 2)
63
  .map((section) => {
64
- var { text, duration: durationMilis, offset, mediaAbsPaths, imageAbsPaths, audioFullPath, title, pointers } = section
65
- imageAbsPaths = imageAbsPaths || mediaAbsPaths || []
66
  if (!durationMilis) {
67
  durationMilis = section.durationInSeconds * 1000
68
  }
@@ -83,10 +83,10 @@ export const Compositions: React.FC = () => {
83
  let commDuration = durationInSec + transitionDurationSec
84
  durationInSec = durationInSec + curDurSecs + transitionDurationSec
85
  lastDirection = !lastDirection
86
- imageAbsPaths.forEach(p => {
87
  let im = p.path
88
  if (im.startsWith("http")) {
89
- if (im.indexOf("-video-") > -1) {
90
  preloadVideos.push(im)
91
  // preloadVideo(im)
92
  }
@@ -96,7 +96,7 @@ export const Compositions: React.FC = () => {
96
  }
97
  }
98
  })
99
- let bgImagePaths = imageAbsPaths.map(p => {
100
  p.path = RenderUtils.getFileName(p?.path)
101
  return p
102
  })
@@ -162,7 +162,7 @@ export const Compositions: React.FC = () => {
162
  width={Script.meta?.resolution?.width || 1920}
163
  height={Script.meta?.resolution?.height || 1080}
164
  defaultProps={{
165
- bgMusic: RenderUtils.getFileName(Script.bgMusic, "mp3"),
166
  contents: contents,
167
  intro: intro,
168
  outro: outro,
@@ -177,7 +177,7 @@ export const Compositions: React.FC = () => {
177
  width={Script.meta?.resolution?.width || 1920}
178
  height={Script.meta?.resolution?.height || 1080}
179
  defaultProps={Object.assign(Script, {
180
- bgMusic: RenderUtils.getFileName(Script.bgMusic, "mp3"),
181
  contents: contents,
182
  intro: intro,
183
  outro: outro
@@ -192,7 +192,7 @@ export const Compositions: React.FC = () => {
192
  width={Script.meta?.resolution?.width || 1920}
193
  height={Script.meta?.resolution?.height || 1080}
194
  defaultProps={Object.assign(Script, {
195
- bgMusic: RenderUtils.getFileName(Script.bgMusic, "mp3"),
196
  contents: contents,
197
  intro: intro,
198
  outro: outro
 
61
  // .filter(item => (item.audioCaptionFile != undefined))
62
  // .slice(0, 2)
63
  .map((section) => {
64
+ var { text, duration: durationMilis, offset, mediaAbsPaths, mediaAbsPaths, audioFullPath, title, pointers } = section
65
+ mediaAbsPaths = mediaAbsPaths || mediaAbsPaths || []
66
  if (!durationMilis) {
67
  durationMilis = section.durationInSeconds * 1000
68
  }
 
83
  let commDuration = durationInSec + transitionDurationSec
84
  durationInSec = durationInSec + curDurSecs + transitionDurationSec
85
  lastDirection = !lastDirection
86
+ mediaAbsPaths.forEach(p => {
87
  let im = p.path
88
  if (im.startsWith("http")) {
89
+ if (im.indexOf("-video-") > -1 || im.indexOf(".mp4") > -1 || im.indexOf(".webm") > -1) {
90
  preloadVideos.push(im)
91
  // preloadVideo(im)
92
  }
 
96
  }
97
  }
98
  })
99
+ let bgImagePaths = mediaAbsPaths.map(p => {
100
  p.path = RenderUtils.getFileName(p?.path)
101
  return p
102
  })
 
162
  width={Script.meta?.resolution?.width || 1920}
163
  height={Script.meta?.resolution?.height || 1080}
164
  defaultProps={{
165
+ bgMusic: RenderUtils.getFileName(Script.bgMusic),
166
  contents: contents,
167
  intro: intro,
168
  outro: outro,
 
177
  width={Script.meta?.resolution?.width || 1920}
178
  height={Script.meta?.resolution?.height || 1080}
179
  defaultProps={Object.assign(Script, {
180
+ bgMusic: RenderUtils.getFileName(Script.bgMusic),
181
  contents: contents,
182
  intro: intro,
183
  outro: outro
 
192
  width={Script.meta?.resolution?.width || 1920}
193
  height={Script.meta?.resolution?.height || 1080}
194
  defaultProps={Object.assign(Script, {
195
+ bgMusic: RenderUtils.getFileName(Script.bgMusic),
196
  contents: contents,
197
  intro: intro,
198
  outro: outro
src/anims/VideoSplash.tsx CHANGED
@@ -27,7 +27,8 @@ export const VideoSplash:
27
  volume={0} style={{
28
  position: 'absolute',
29
  height: '100%', width: '100%',
30
- }} src={staticFile((file || 'assets/effects/effect_zipper.webm'))} />
 
31
 
32
  </div>
33
  );
 
27
  volume={0} style={{
28
  position: 'absolute',
29
  height: '100%', width: '100%',
30
+ }}
31
+ src={staticFile((file || 'assets/effects/effect_zipper.webm'))} />
32
 
33
  </div>
34
  );
src/ig-reel/IG2LineMotivationalScene.tsx CHANGED
@@ -3,6 +3,7 @@ import { Audio, Img, spring, staticFile, useCurrentFrame } from "remotion";
3
  import * as Montserrat from "@remotion/google-fonts/Montserrat";
4
  import { MediaBackground } from "../youtube/MediaBackground";
5
  import { ErrorMsg } from "../common/Error";
 
6
 
7
  export default function IG2LineMotivationalScene(props: { meta: Meta; item: Transcript }) {
8
  const { meta, item: transcript } = props;
@@ -11,7 +12,7 @@ export default function IG2LineMotivationalScene(props: { meta: Meta; item: Tran
11
 
12
  const media = mediaAbsPaths[0];
13
  const watermark = mediaAbsPaths[1];
14
- const bgMusicPath = staticFile(audioFullPath || "");
15
  const { fontFamily } = Montserrat.loadFont("normal", { weights: ["400"] });
16
  const frame = useCurrentFrame();
17
 
 
3
  import * as Montserrat from "@remotion/google-fonts/Montserrat";
4
  import { MediaBackground } from "../youtube/MediaBackground";
5
  import { ErrorMsg } from "../common/Error";
6
+ import { RenderUtils } from "../RenderUtils";
7
 
8
  export default function IG2LineMotivationalScene(props: { meta: Meta; item: Transcript }) {
9
  const { meta, item: transcript } = props;
 
12
 
13
  const media = mediaAbsPaths[0];
14
  const watermark = mediaAbsPaths[1];
15
+ const bgMusicPath = RenderUtils.tryStaticFile(audioFullPath);
16
  const { fontFamily } = Montserrat.loadFont("normal", { weights: ["400"] });
17
  const frame = useCurrentFrame();
18
 
src/ig-reel/IGReelComposition.tsx CHANGED
@@ -13,7 +13,7 @@ import IG2LineMotivationalScene from './IG2LineMotivationalScene';
13
 
14
  export const IGReelComposition: React.FC = (props: OriginalManuscript) => {
15
  const { fontFamily } = loadFont();
16
- let { meta, bgMusic, bgMusicDuration } = props
17
  let transcripts: Transcript[] = props.contents
18
  let fps = meta.fps
19
  let frame = useCurrentFrame()
@@ -23,20 +23,28 @@ export const IGReelComposition: React.FC = (props: OriginalManuscript) => {
23
  let startTransition = RenderUtils.randomElement(transitions, `x-${textLen}`)
24
 
25
  // console.log('IGReelComposition props', props)
26
- let bgMusicPath = staticFile(bgMusic || '')
27
  return (
28
  <AbsoluteFill style={{
29
  background: 'black'
30
  }}>
31
- {
32
- bgMusic && (
33
- <Audio loop
34
- volume={(f) =>
35
- interpolate(f, [0, bgMusicDuration * fps], [0.05, 0.01], { extrapolateLeft: "clamp" })
36
- }
37
- src={bgMusicPath} />
 
 
 
 
38
  )
39
- }
 
 
 
 
40
  <TransitionSeries>
41
  {
42
  transcripts.map((scriptItem: Transcript, i) => {
@@ -71,7 +79,7 @@ export const IGReelComposition: React.FC = (props: OriginalManuscript) => {
71
  </TransitionSeries>
72
 
73
  {
74
- transcripts.find(a => a.transition_type != 'none') && (
75
  <div
76
  style={{
77
  width: '100%',
 
13
 
14
  export const IGReelComposition: React.FC = (props: OriginalManuscript) => {
15
  const { fontFamily } = loadFont();
16
+ let { meta, bgMusic, bgMusicDuration, bgMusicVolume } = props
17
  let transcripts: Transcript[] = props.contents
18
  let fps = meta.fps
19
  let frame = useCurrentFrame()
 
23
  let startTransition = RenderUtils.randomElement(transitions, `x-${textLen}`)
24
 
25
  // console.log('IGReelComposition props', props)
26
+ let bgMusicPath = RenderUtils.tryStaticFile(bgMusic || '')
27
  return (
28
  <AbsoluteFill style={{
29
  background: 'black'
30
  }}>
31
+ {bgMusic && (
32
+ <Audio
33
+ loop
34
+ volume={(f) =>
35
+ bgMusicVolume !== undefined
36
+ ? bgMusicVolume
37
+ : interpolate(
38
+ f,
39
+ [0, bgMusicDuration * fps],
40
+ [0.05, 0.01],
41
+ { extrapolateLeft: "clamp" }
42
  )
43
+ }
44
+ src={bgMusicPath}
45
+ />
46
+ )}
47
+
48
  <TransitionSeries>
49
  {
50
  transcripts.map((scriptItem: Transcript, i) => {
 
79
  </TransitionSeries>
80
 
81
  {
82
+ transcripts.find(a => a.transition_type && (a.transition_type != 'none')) && (
83
  <div
84
  style={{
85
  width: '100%',
src/ig-reel/IGSimpleScene.tsx CHANGED
@@ -131,17 +131,17 @@ export const IGSimpleScene: React.FC<any> = (props: {
131
  let word = RenderUtils.findCurrentWord(curSecond, subtitles)
132
  let group: Group = RenderUtils.findCurrentGroupByTime(curSecond, groups)
133
 
134
- let currentDisplayMedia: DisplayMedia = (item?.imageAbsPaths || [])[0]
135
 
136
- if (!_.isEmpty(item?.imageAbsPaths)) {
137
  let frameOffest = 0
138
- for (let i = 0; i < item?.imageAbsPaths.length; i++) {
139
- const media: SectionMedia = item.imageAbsPaths[i];
140
  media.idx = i
141
  media.startFrame = frameOffest
142
  if (media.durationSec == undefined) {
143
- media.durationSec = durationInSeconds / (item?.imageAbsPaths.length)
144
- if (i == item.imageAbsPaths.length - 1) {
145
  media.durationSec = durationInSeconds
146
  }
147
  }
@@ -156,7 +156,7 @@ export const IGSimpleScene: React.FC<any> = (props: {
156
  }
157
 
158
 
159
- let chunks: React.ReactNode[] = (item?.imageAbsPaths?.map((displayMedia: DisplayMedia, i) => {
160
  let chunk = []
161
  let easeInOutExp = Easing.inOut(Easing.bezier(0.8, 0.22, 0.96, 0.65));
162
  easeInOutExp = Easing.ease
@@ -166,7 +166,7 @@ export const IGSimpleScene: React.FC<any> = (props: {
166
  <IGMediaRender curZoom={curZoom} displayMedia={displayMedia} />
167
  </TransitionSeries.Sequence>
168
  ))
169
- if (i < item?.imageAbsPaths.length - 1 || true) {
170
  let anims = [CircularWipe, Slide, SlidingDoors, Pan, LinearWipe, Dissolve, CircularWipe, Slide, SlidingDoors, Pan, LinearWipe, Dissolve]
171
  // .fill(SlidingDoors)
172
  let Anim = anims[frame % 9]
@@ -207,7 +207,7 @@ export const IGSimpleScene: React.FC<any> = (props: {
207
  {
208
  (item.transition_type == 'graphical') &&
209
  currentDisplayMedia?.idx > -1 && (
210
- item?.imageAbsPaths?.map((displayMedia: DisplayMedia, i) => {
211
  let transitionsByMood = Transitions.filter(t => t.mood?.indexOf("happy") > -1)
212
  let transition = RenderUtils.randomElement(transitionsByMood, `x-${displayMedia.idx * displayMedia.durationFrames}`)
213
  // transition = transitionsByMood[5]
 
131
  let word = RenderUtils.findCurrentWord(curSecond, subtitles)
132
  let group: Group = RenderUtils.findCurrentGroupByTime(curSecond, groups)
133
 
134
+ let currentDisplayMedia: DisplayMedia = (item?.mediaAbsPaths || [])[0]
135
 
136
+ if (!_.isEmpty(item?.mediaAbsPaths)) {
137
  let frameOffest = 0
138
+ for (let i = 0; i < item?.mediaAbsPaths.length; i++) {
139
+ const media: SectionMedia = item.mediaAbsPaths[i];
140
  media.idx = i
141
  media.startFrame = frameOffest
142
  if (media.durationSec == undefined) {
143
+ media.durationSec = durationInSeconds / (item?.mediaAbsPaths.length)
144
+ if (i == item.mediaAbsPaths.length - 1) {
145
  media.durationSec = durationInSeconds
146
  }
147
  }
 
156
  }
157
 
158
 
159
+ let chunks: React.ReactNode[] = (item?.mediaAbsPaths?.map((displayMedia: DisplayMedia, i) => {
160
  let chunk = []
161
  let easeInOutExp = Easing.inOut(Easing.bezier(0.8, 0.22, 0.96, 0.65));
162
  easeInOutExp = Easing.ease
 
166
  <IGMediaRender curZoom={curZoom} displayMedia={displayMedia} />
167
  </TransitionSeries.Sequence>
168
  ))
169
+ if (i < item?.mediaAbsPaths.length - 1 || true) {
170
  let anims = [CircularWipe, Slide, SlidingDoors, Pan, LinearWipe, Dissolve, CircularWipe, Slide, SlidingDoors, Pan, LinearWipe, Dissolve]
171
  // .fill(SlidingDoors)
172
  let Anim = anims[frame % 9]
 
207
  {
208
  (item.transition_type == 'graphical') &&
209
  currentDisplayMedia?.idx > -1 && (
210
+ item?.mediaAbsPaths?.map((displayMedia: DisplayMedia, i) => {
211
  let transitionsByMood = Transitions.filter(t => t.mood?.indexOf("happy") > -1)
212
  let transition = RenderUtils.randomElement(transitionsByMood, `x-${displayMedia.idx * displayMedia.durationFrames}`)
213
  // transition = transitionsByMood[5]
src/linkedin-video/LinkedinFullSysDesignComposition.tsx CHANGED
@@ -14,7 +14,7 @@ import GeneralSubtitles from '../subtitles/general_Subtitles';
14
 
15
  export const LinkedinFullSysDesignComposition: React.FC = (props: OriginalManuscript) => {
16
  const { fontFamily } = loadFont();
17
- let { meta, bgMusic, bgMusicDuration } = props
18
  let transcripts: Transcript[] = props.contents
19
  let fps = meta.fps
20
  let frame = useCurrentFrame()
@@ -28,15 +28,23 @@ export const LinkedinFullSysDesignComposition: React.FC = (props: OriginalManusc
28
  <AbsoluteFill style={{
29
  background: 'white'
30
  }}>
31
- {
32
- bgMusic && (
33
- <Audio loop
34
- volume={(f) =>
35
- interpolate(f, [0, bgMusicDuration * fps], [0.05, 0.01], { extrapolateLeft: "clamp" })
36
- }
37
- src={bgMusicPath} />
 
 
 
 
38
  )
39
- }
 
 
 
 
40
  <TransitionSeries>
41
  {
42
  transcripts.map((scriptItem: Transcript, i) => {
 
14
 
15
  export const LinkedinFullSysDesignComposition: React.FC = (props: OriginalManuscript) => {
16
  const { fontFamily } = loadFont();
17
+ let { meta, bgMusic, bgMusicDuration, bgMusicVolume } = props
18
  let transcripts: Transcript[] = props.contents
19
  let fps = meta.fps
20
  let frame = useCurrentFrame()
 
28
  <AbsoluteFill style={{
29
  background: 'white'
30
  }}>
31
+ {bgMusic && (
32
+ <Audio
33
+ loop
34
+ volume={(f) =>
35
+ bgMusicVolume !== undefined
36
+ ? bgMusicVolume
37
+ : interpolate(
38
+ f,
39
+ [0, bgMusicDuration * fps],
40
+ [0.05, 0.01],
41
+ { extrapolateLeft: "clamp" }
42
  )
43
+ }
44
+ src={bgMusicPath}
45
+ />
46
+ )}
47
+
48
  <TransitionSeries>
49
  {
50
  transcripts.map((scriptItem: Transcript, i) => {
src/paperdrive/PaperDrivePage.tsx CHANGED
@@ -10,7 +10,7 @@ import { PaperDrivePageExtras } from "./types";
10
  export function PaperDrivePage({ transcript }: { transcript: Transcript }) {
11
  const extras = transcript.extras as PaperDrivePageExtras
12
 
13
- const watermark = transcript.imageAbsPaths?.[0]
14
  let watermarkPath = undefined
15
  if (watermark) {
16
  watermarkPath = staticFile(RenderUtils.getFileName(watermark.path)!)
 
10
  export function PaperDrivePage({ transcript }: { transcript: Transcript }) {
11
  const extras = transcript.extras as PaperDrivePageExtras
12
 
13
+ const watermark = transcript.mediaAbsPaths?.[0]
14
  let watermarkPath = undefined
15
  if (watermark) {
16
  watermarkPath = staticFile(RenderUtils.getFileName(watermark.path)!)
src/youtube/SequentialScene.orig.tsx CHANGED
@@ -78,12 +78,13 @@ export const SequentialScene: React.FC = (
78
 
79
  const contents = props.contents
80
  const bgMusic = props.bgMusic
 
81
 
82
  return (
83
  <div>
84
  {bgMusic &&
85
  <AbsoluteFill>
86
- <Audio allowAmplificationDuringRender loop volume={0.05} src={staticFile(bgMusic)} />
87
  </AbsoluteFill>
88
  }
89
  <Series>
 
78
 
79
  const contents = props.contents
80
  const bgMusic = props.bgMusic
81
+ const bgMusicVolume = props.bgMusicVolume
82
 
83
  return (
84
  <div>
85
  {bgMusic &&
86
  <AbsoluteFill>
87
+ <Audio allowAmplificationDuringRender loop volume={bgMusicVolume ?? 0.05} src={staticFile(bgMusic)} />
88
  </AbsoluteFill>
89
  }
90
  <Series>
src/youtube/SequentialScene.tsx CHANGED
@@ -78,12 +78,13 @@ export const SequentialScene: React.FC = (
78
 
79
  const contents = props.contents
80
  const bgMusic = props.bgMusic
 
81
 
82
  return (
83
  <div>
84
  {bgMusic &&
85
  <AbsoluteFill>
86
- <Audio allowAmplificationDuringRender loop volume={0.05} src={staticFile(bgMusic)} />
87
  </AbsoluteFill>
88
  }
89
  <Series>
 
78
 
79
  const contents = props.contents
80
  const bgMusic = props.bgMusic
81
+ const bgMusicVolume = props.bgMusicVolume
82
 
83
  return (
84
  <div>
85
  {bgMusic &&
86
  <AbsoluteFill>
87
+ <Audio allowAmplificationDuringRender loop volume={bgMusicVolume ?? 0.05} src={staticFile(bgMusic)} />
88
  </AbsoluteFill>
89
  }
90
  <Series>
src/youtube/YoutubeVideoScene.tsx CHANGED
@@ -76,6 +76,7 @@ export const YoutubeVideoScene: React.FC = (
76
 
77
  const contents = props.contents
78
  const bgMusic = props.bgMusic
 
79
 
80
  let children = []
81
  if (props?.intro?.file && props?.intro?.durationInFrames) {
@@ -101,7 +102,7 @@ export const YoutubeVideoScene: React.FC = (
101
  <div>
102
  {bgMusic &&
103
  <AbsoluteFill>
104
- <Audio allowAmplificationDuringRender loop volume={0.05} src={staticFile(bgMusic)} />
105
  </AbsoluteFill>
106
  }
107
  <Series>
 
76
 
77
  const contents = props.contents
78
  const bgMusic = props.bgMusic
79
+ const bgMusicVolume = props.bgMusicVolume
80
 
81
  let children = []
82
  if (props?.intro?.file && props?.intro?.durationInFrames) {
 
102
  <div>
103
  {bgMusic &&
104
  <AbsoluteFill>
105
+ <Audio allowAmplificationDuringRender loop volume={bgMusicVolume ?? 0.05} src={staticFile(bgMusic)} />
106
  </AbsoluteFill>
107
  }
108
  <Series>