shiveshnavin commited on
Commit
8df6cbf
·
1 Parent(s): 122af68

Add fall throuhg

Browse files
Files changed (2) hide show
  1. renderer.js +7 -1
  2. routes.js +137 -10
renderer.js CHANGED
@@ -48,7 +48,13 @@ export function getNpmScript(mediaType) {
48
  }
49
  }
50
 
51
- export async function doRender(jobId, composition, sendToObserver, target = 'render', ssrOptions, proxyOptions) {
 
 
 
 
 
 
52
  let outFile = path.join(process.cwd(), `out`, `${jobId}-video.mp4`);
53
  if (ssrOptions) {
54
  await renderSSR(outFile, ssrOptions.startFrame, ssrOptions.endFrame)
 
48
  }
49
  }
50
 
51
+ export async function doRender(
52
+ jobId,
53
+ composition,
54
+ sendToObserver,
55
+ target = 'render',
56
+ ssrOptions,
57
+ proxyOptions) {
58
  let outFile = path.join(process.cwd(), `out`, `${jobId}-video.mp4`);
59
  if (ssrOptions) {
60
  await renderSSR(outFile, ssrOptions.startFrame, ssrOptions.endFrame)
routes.js CHANGED
@@ -71,16 +71,143 @@ RenderRouter.post('/api/render-sync', async (req, res) => {
71
  path.join(__dirname, `public`, `original_manuscript.json`)
72
  );
73
  if (!skipRender) {
74
- await doRender(
75
- jobId,
76
- originalManuscript.meta.renderComposition,
77
- (jobId, log) => {
78
- logs.push(log);
79
- },
80
- getNpmScript(req.query.media_type),
81
- req.body.ssr,
82
- req.body.proxy
83
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
85
  const uploader = new FileUploader('oracle', {
86
  url: targetUrl + jobId + '/',
 
71
  path.join(__dirname, `public`, `original_manuscript.json`)
72
  );
73
  if (!skipRender) {
74
+ let renderMethod = req.body.method || req.query.method || 'all';
75
+ if (renderMethod === 'all') {
76
+ let errorMsg = ''
77
+ let renderComplete = false;
78
+ try {
79
+ console.log('Render start via CLI')
80
+ await doRender(
81
+ jobId,
82
+ originalManuscript.meta.renderComposition,
83
+ (jobId, log) => {
84
+ logs.push(log);
85
+ },
86
+ getNpmScript(req.query.media_type),
87
+ undefined,
88
+ undefined
89
+ )
90
+ renderComplete = true;
91
+ } catch (e) {
92
+ console.log('Render via CLI failed', e.message)
93
+ errorMsg = "CLI: " + e.message
94
+ }
95
+ if (!renderComplete) {
96
+ try {
97
+ console.log('Render start via Proxy')
98
+ await doRender(
99
+ jobId,
100
+ originalManuscript.meta.renderComposition,
101
+ (jobId, log) => {
102
+ logs.push(log);
103
+ },
104
+ getNpmScript(req.query.media_type),
105
+ undefined,
106
+ {
107
+ ...req.body.proxy,
108
+ "framesPerChunk": req.body.proxy?.framesPerChunk || 99999
109
+ }
110
+ )
111
+ renderComplete = true;
112
+ } catch (e) {
113
+ console.log('Render via Proxy failed', e.message)
114
+ errorMsg = errorMsg + "\n\nProxy: " + e.message
115
+ }
116
+ }
117
+
118
+ if (!renderComplete) {
119
+ try {
120
+ console.log('Render start via Proxy Chunked')
121
+ await doRender(
122
+ jobId,
123
+ originalManuscript.meta.renderComposition,
124
+ (jobId, log) => {
125
+ logs.push(log);
126
+ },
127
+ getNpmScript(req.query.media_type),
128
+ undefined,
129
+ {
130
+ ...req.body.proxy
131
+ }
132
+ )
133
+ renderComplete = true;
134
+ } catch (e) {
135
+ console.log('Render via Proxy Chunked failed', e.message)
136
+ errorMsg = errorMsg + "\n\nProxyChunked: " + e.message
137
+ }
138
+ }
139
+
140
+ if (!renderComplete) {
141
+ try {
142
+ console.log('Render start via SSR')
143
+ await doRender(
144
+ jobId,
145
+ originalManuscript.meta.renderComposition,
146
+ (jobId, log) => {
147
+ logs.push(log);
148
+ },
149
+ getNpmScript(req.query.media_type),
150
+ req.body.ssr || {},
151
+ undefined
152
+ )
153
+ renderComplete = true;
154
+ } catch (e) {
155
+ console.log('Render via SSR failed', e.message)
156
+ errorMsg = errorMsg + "\n\nSSR: " + e.message
157
+ }
158
+ }
159
+ if (!renderComplete) {
160
+ throw new Error('All render methods exhausted. Failed to render. ' + errorMsg)
161
+ }
162
+ }
163
+ else if (renderMethod === 'ssr') {
164
+ await doRender(
165
+ jobId,
166
+ originalManuscript.meta.renderComposition,
167
+ (jobId, log) => {
168
+ logs.push(log);
169
+ },
170
+ getNpmScript(req.query.media_type),
171
+ req.body.ssr || {},
172
+ undefined
173
+ );
174
+ } else if (renderMethod === 'proxy') {
175
+ await doRender(
176
+ jobId,
177
+ originalManuscript.meta.renderComposition,
178
+ (jobId, log) => {
179
+ logs.push(log);
180
+ },
181
+ getNpmScript(req.query.media_type),
182
+ undefined,
183
+ {
184
+ ...req.body.proxy,
185
+ "framesPerChunk": req.body.proxy?.framesPerChunk || 99999
186
+ }
187
+ );
188
+ } else if (renderMethod === 'proxy-chunked') {
189
+ await doRender(
190
+ jobId,
191
+ originalManuscript.meta.renderComposition,
192
+ (jobId, log) => {
193
+ logs.push(log);
194
+ },
195
+ getNpmScript(req.query.media_type),
196
+ undefined,
197
+ req.body.proxy || {}
198
+ );
199
+ } else {
200
+ await doRender(
201
+ jobId,
202
+ originalManuscript.meta.renderComposition,
203
+ (jobId, log) => {
204
+ logs.push(log);
205
+ },
206
+ getNpmScript(req.query.media_type),
207
+ undefined,
208
+ undefined
209
+ );
210
+ }
211
  }
212
  const uploader = new FileUploader('oracle', {
213
  url: targetUrl + jobId + '/',