Я пытаюсь преобразовать папку с видео, но это занимает слишком много времени. Этот код конвертирует одно за другим видео. Я хочу конвертировать эти видео параллельно, не блокируя компьютер и сокращая время конвертации. Текущий код:
const exec = require('child_process').exec;
const glob = require('glob');
const fs = require('fs');
const STORAGE_PATH = './converted';
const PATH_TO_VIDEOS='./video';
const videos = glob.sync(`${PATH_TO_VIDEOS}/*.mp4`); //videos is an array of paths for each video on some folder
async function createDir(dir) {
if (dir && !fs.existsSync(dir)) {
await fs.mkdirSync(dir, {
recursive: true,
});
}
}
async function convertVideos() {
const starttime = new Date();
await new Promise(async (resolve) => {
console.log('>>>Starting conversion of', videos.length, 'files!!!');
createDir(STORAGE_PATH);
for (let i = 0; i < videos.length; i++) {
let video = videos[i];
var command = `ffmpeg -i ${video} -c:v libx264 -vf scale=1920:1080 -r 60 -c:a aac -ar 48000 -b:a 160k -strict experimental -f mp4 ${STORAGE_PATH}/${i}.mp4`;
await new Promise((resolve) => {
exec(command, (error, stdout, stderr) => {
if (error) {
console.warn(error);
}
resolve(stdout ? stdout : stderr);
console.log('Video converted');
});
});
}
resolve();
}).then(async () => await console.log('Conversion finished!!!', '\n Time of convertion', new Date() - starttime))
}
convertVideos();
Не могли бы вы помочь?