내 프로젝트에서 나는 2 개의 비동기 메소드를 사용하고있다. 첫 번째 방법은 AppleScript를 열어 After Effects 프로젝트를 열고 jsx 파일을로드하여 After Effects 프로젝트의 항목을 조정합니다. 두 번째 방법은 조정 된 After Effects 프로젝트를 렌더링하고 .mp4 파일로 렌더링합니다.NodeJS http 요청 처리자
첫 번째 방법의 문제점은 After Effects를 열 수는 있지만 After Effects에서는 한 번에 하나의 After Effects 프로젝트 만 열 수 있기 때문에 After Effects의 인스턴스를 하나만 열 수 있다는 것입니다.
코드에 대한 HTTP 요청이 여러 개인 경우 After Effects에서 오류가 발생합니다. After Effects 프로젝트를 여러 번 열어야하므로 허용되지 않습니다.
이 메서드에 대한 HTTP 요청 대기열을 찾고있어 After Effects를 한 번 열 수 있고 2 초 후에 두 번째 요청이 수행되고 After Effects가 다시 열리고 다시 열립니다. ... NodeJS에서이 작업을 수행 할 수있는 방법이 있습니까? 내 코드는이 작업을 수행하지 않으므로 net/stackoverflow에 대한 해결책을 찾을 수 없습니다.
exports.renderProject = function (req, res) {
async.series([
function (callback) {
callback();
},
function (callback) {
var template = req.body[0].template; //project to render (.aep file)
//OSX editproject
var editProject = executablepathOSX + " " + template + " " + template + ".jsx" + " " + guid /*retValVacancyList[0].animation.template*/
var sys = require('sys');
var exec = require('child_process').exec;
var child;
// executes 'edit project'
child = exec(editProject, function (error, stdout, stderr) {
sys.print('stdout: ' + stdout);
sys.print('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
callback();
});
},
function (callback) {
var renderProject = shellscript + "renderMp4.sh " + guid + ".aep " + guid + ".mp4"//guid + ".avi" //animation.template .avi name(guid)
var sys = require('sys');
var exec = require('child_process').exec;
var child;
// executes 'render project'
child = exec(renderProject, function (error, stdout, stderr) {
sys.print('stdout: ' + stdout);
sys.print('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
callback();
});
}
은 내가 JS 노선의 '글로벌'부분에 aequeue을 가볍게 쳤다. 이제는 훌륭하게 작동합니다! 당신의 도움을 주셔서 감사합니다! – user3374131