Advertisement
aivavic

client

Jul 24th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. /**
  4.  * Parameters for rendering
  5.  */
  6. let mixfile     = 'deep_60s.mp3';
  7. let background  = '2016-aug-deep.jpg';
  8. let datascript  = '2016-aug-deep.js';
  9. let duration    = 3600; // set max duration for 1 minute (equal to audio length)
  10.  
  11. let aepxfile  = 'nm05ae12_.aepx';
  12. let audio     = 'mp3';
  13.  
  14. /**
  15.  * Settings for renderer
  16.  * DONT FORGET TO CHANGE aebinary ACCORDING TO YOUR SYSTEM
  17.  * On Windows might look like: 'C:\\Program Files\\Adobe\\After Effects CC\\aerender.exe'
  18.  */
  19. const aebinary  = 'C:\\Program Files\\Adobe\\Adobe After Effects CC 2017\\Support Files\\aerender.exe';
  20. const port      = 23234;
  21.  
  22. /**
  23.  * Dependencies
  24.  */
  25. const http      = require('http');
  26. const url       = require('url');
  27. const path      = require('path');
  28. const fs        = require('fs');
  29.  
  30. const Project   = require('nexrender').Project;
  31. const renderer  = require('nexrender').renderer;
  32.  
  33. /**
  34.  * HTTP server
  35.  */
  36. let server = http.createServer((req, res) => {
  37.  
  38.     let uri         = url.parse(req.url).pathname;
  39.     let filename    = path.join(process.cwd(), uri);
  40.  
  41.     fs.exists(filename, (exists) => {
  42.         if(!exists) {
  43.             res.writeHead(404, {"Content-Type": "text/plain"});
  44.             res.write("404 Not Found\n");
  45.            
  46.             return res.end();
  47.         }
  48.  
  49.         fs.readFile(filename, "binary", function(err, file) {
  50.             if(err) {    
  51.                 res.writeHead(500, {"Content-Type": "text/plain"});
  52.                 res.write(err + "\n");
  53.                 return res.end();
  54.             }
  55.  
  56.             // send 200
  57.             res.writeHead(200);
  58.             res.write(file, "binary");
  59.             return res.end();
  60.         });
  61.     });
  62. });
  63.  
  64. /**
  65.  * Renderer
  66.  */
  67. server.listen(port, () => {
  68.  
  69.     console.log('Started local static server at port:', port);
  70.  
  71.     // addtional info about configuring project can be found at:
  72.     // https://github.com/Inlife/nexrender/wiki/Project-model
  73.     let project = new Project({
  74.         "template": "project.aepx",
  75.         "composition": "main",
  76.         "type": "default",
  77.         "settings": {
  78.             // dont forget to setup the right output module; info:
  79.             // https://helpx.adobe.com/after-effects/using/basics-rendering-exporting.html#output_modules_and_output_module_settings
  80.             "outputModule": "h264",
  81.             "startFrame": 0,
  82.             "endFrame": duration
  83.         },
  84.         "assets": [
  85.             { "type": "project", "name": "project.aepx",    "src": `http://localhost:${port}/assets/${aepxfile}`},
  86.             { "type": "image",   "name": "background.jpg",  "src": `http://localhost:${port}/assets/${background}`, "filters": [ {"name":"cover", "params": [1280, 720] }] },
  87.             { "type": "image",   "name": "nm.png",          "src": `http://localhost:${port}/assets/nm.png` },
  88.             { "type": "audio",   "name": `audio.${audio}`,  "src": `http://localhost:${port}/assets/${mixfile}` },
  89.             { "type": "script",  "name": "data.js",         "src": `http://localhost:${port}/assets/${datascript}` }
  90.         ]
  91.     });
  92.  
  93.     console.log(project);
  94.  
  95.     // start rendering
  96.     renderer.render(aebinary, project).then(() => {
  97.         // success
  98.         server.close();
  99.         console.log('rendering finished');
  100.     }).catch((err) => {
  101.         // error
  102.         console.error(err);
  103.         server.close();
  104.     });
  105.  
  106. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement