Skip to main content
Participant
July 2, 2025
Answered

[JSX] Render Queue에 한글 comp 이름을 사용할 때 출력 파일명이 깨지는 현상 25.3.1 버전

  • July 2, 2025
  • 1 reply
  • 144 views

안녕하세요. 전버전에서는 잘 작동하던 코드가 작동하지않습니다..

After Effects에서 JSX(ExtendScript)를 이용해 렌더 큐 자동화 스크립트를 작성 중이며
현재 선택된 컴포지션을 자동으로 렌더 큐에 추가하고, 아래와 같이 출력 경로를 지정하고 있습니다.

 

var rqItem = app.project.renderQueue.items.add(comp);
rqItem.outputModule(1).file = File(outputFolder.fullName + "/" + comp.name + ".mp4");


문제는 comp.name에 한글이 포함되어 있을 경우, 렌더 큐에서 출력 파일명이 정상적으로 표시되지 않고 깨지는 현상이 발생합니다. 예를 들어 "Comp한글1"이라는 이름의 컴프를 사용할 경우, 렌더 큐의 Output To에는 다음과 같이 표시됩니다:

CompÇѱÛ1.mp4


AE UI에서 직접 해당 컴프를 렌더 큐에 추가하면 한글 파일명이 정상적으로 표시되며, 문제가 없습니다. 반면 JSX에서 File 로 직접 경로를 지정할 경우 한글이 깨집니다. 

 

JSX에서 comp.name에 한글이 포함된 상태로 파일명이 깨지지 않도록 설정하는 방법이 있을까요? 

    Correct answer 정민김30414836

    혹시라도 같은 오류를 겪고있는 사람이있다면  도움이 되었으면 합니다.
     outputModule.setSettings({
    "Output Filename": "[compName].[ext]"
    });
    사용시 renderqueue에서 render가 넘어가지않았습니다.
    There is a bug that causes OutputModule object to be invalidated after the output module setting is modified, so you need to retrieve the Output Module again after you modify it.
    outputModule.setSettings 에서 문서확인결과 버그 때문이라고 추측해봅니다. 정확한 원인은 모릅니다. 이부분을

    var new_data = {
    "Output File Info": {
    "Full Flat Path": new_path + separator + file_name
    }
    };
    om1.setSettings(new_data);
    이렇게 변경했더니 한글 깨짐현상없이

    app.project.renderQueue.render(); 도 잘 작동했습니다. 
    결국 이 문제를 해결했습니다..다신 겪고싶지않았던 오류였습니다..

    1 reply

    Legend
    July 4, 2025

    해당 문제를 해결하기 위한 확실한 방법은 After Effects의 내부 템플릿 기능을 활용하는것 입니다. 

    JSX에서 직접 파일명을 만들지 않고, 애프터 이펙트가 자동으로 컴포지션 이름을 사용하여 파일명을 생성하도록 지시하는 방식입니다. 애프터 이펙트의 내장 기능은 유니코드 처리에 더 강합니다.

     

    한번 아래의 코드를 기존 코드 대신 사용해 보시겠어요?

     

    var comp = app.project.activeItem; // 현재 활성화된 컴포지션
    var outputFolder = Folder.selectDialog("출력 폴더를 선택하세요."); // 출력 폴더 선택

    if (outputFolder) {
    var rqItem = app.project.renderQueue.items.add(comp);
    var outputModule = rqItem.outputModule(1); // 첫 번째 출력 모듈 선택

    // 1. 출력 모듈에 "기본" 폴더 경로를 지정합니다.
    // AE는 이 경로에서 파일명 부분을 제거하고 폴더만 사용합니다.
    // 여기서는 dummy.mp4라는 임시 파일명을 사용하지만 실제로는 저장되지 않습니다.
    outputModule.file = new File(outputFolder.fullName + "/dummy.mp4");

    // 2. 가장 중요한 부분: 출력 파일명 템플릿을 설정합니다.
    // "[compName].[ext]" 템플릿을 사용하면 AE가 자동으로 컴포지션 이름을 가져와
    // 정확한 유니코드 파일명을 생성합니다.
    outputModule.setSettings({
    "Output Filename": "[compName].[ext]"
    });

    // 만약 파일명 앞에 특정 접두사를 붙이거나 뒤에 특정 접미사를 붙이고 싶다면:
    // outputModule.setSettings({
    // "Output Filename": "My_Prefix_" + "[compName].[ext]" // 예: "My_Prefix_Comp한글1.mp4"
    // });
    // outputModule.setSettings({
    // "Output Filename": "[compName]" + "_My_Suffix" + ".[ext]" // 예: "Comp한글1_My_Suffix.mp4"
    // });


    alert("렌더 큐에 아이템이 성공적으로 추가되었습니다.");

    } else {
    alert("출력 폴더가 선택되지 않았습니다.");
    }

    Participant
    July 7, 2025

    안녕하세요. 알려주신 방식(setSettings({ "Output Filename": "[compName].[ext]" }))을 적용하니, 렌더 큐의 파일명이 한글로 정상 표시되는 것을 확인하였습니다.

    그런데 이 방식으로 출력 경로를 설정한 후 `app.project.renderQueue.render();` 명령을 실행해도 자동 렌더가 시작되지 않습니다.

    혹시 이 방법은 렌더 큐에 항목만 추가할 수 있고, 자동 렌더는 지원되지 않는 방식인지요?
    자동 렌더까지 가능하게 하려면 어떤 추가 설정이 필요한지 궁금합니다. 
    제 코드는 

    현재 사용 중인 스크립트는 선택한 컴포지션을 자동으로 렌더 큐에 등록하고,
    렌더 포맷(MP4, PNG, JPG)에 따라 출력 템플릿을 적용하여
    지정한 폴더에 자동 저장되도록 구성되어 있습니다.

    또한, `app.project.renderQueue.render();`을 통해
    스크립트 실행 후 즉시 자동 렌더가 수행되도록 설계되어 있습니다.

    즉, 전체 작업을 수동 조작 없이 자동화하는 것이 목표입니다.