지정된 폴더에서 파일을 검색 후 특정 단어가 포함된 비디오(.mp4) 파일을 찾고 프로그램(ffmpeg.exe)을 다중 실행하여 스트림을 재 조립하는 샘플 코드입니다.

* V0.7.0 이상 지원

*실행하는 프로그램의 최대 개수 제한 필요

var message = "";
var succeeded = 0, failed = 0;
var processes = {};
var files = getFiles("e:\\temp\\테스트");
var paths = JSON.parse(files);

for (index = 0; index < paths.length; ++index)
{
    var path = paths[index];

    //  전체 경로에서 디렉터리 경로를 찾는다.
    var slash = path.lastIndexOf("\\");
    //  파일명을 얻는다.
    var fileName = path.substring(1 + slash);

    //  파일명에서 확장명을 찾는다.
    var dot = fileName.lastIndexOf(".");
    if (-1 == dot) {
        continue;
    }

    //  파일명에서 이름과 확장명을 얻는다.
    var extension = fileName.substring(dot);
    fileName = fileName.substring(0, dot);

    if (-1 != fileName.indexOf("다시보기") && ".mp4" == extension)
    {
        //  ffmpeg.exe를 실행하여 스트림을 다시 조립한다.
        var processId = createProcess("e:\\temp\\movies\\ffmpeg.exe", "-i \"" + path + "\" -vcodec copy -acodec copy \"" + path.substring(0, 1 + slash) + fileName.replace("다시보기", "").trim() + extension + "\"");

        if (-1/*실행*/ == processId) {
            ++failed;
            message += getLastError() + "\n";
        }
        else {
            processes[processId] = path;
        }
    }
}

for (var processId in processes)
{
    var result = waitForExit(processId, 0/*무한대기*/);

    if (0/*성공*/ == result)
    {
        ++succeeded;
        //  원본 파일을 삭제한다.
        deleteFile(processes[processId]);
    }
    else
    {
        ++failed;
        message += "[0x" + result.toString(16) + "] " + processes[processId] + "\n";
    }
}
if (0 == failed) {
    message = "모든 작업이 완료됐습니다.";
} else if (0 < succeeded) {
    message = "일부 작업이 실패했습니다.\n\n" + message;
} else {
    message = "모든 작업이 실패했습니다.\n\n" + message;
}
alert(message);

+ Recent posts