Как асинхронно проверить размер видеофайла в процессе транскодирования

Есть ли способ во время процесса сжатия ffmpeg определить точный размер файла видео с различными интервалами?

Например, метод получения текущего размера файла во время процесса для использования при сравнении с исходным размером файла видео.

Например, перекодирование потенциального видео занимает 5 минут, но в процессе функция будет проверять размер файла с интервалом в 100 кадров или каждые 5 секунд, чтобы убедиться, что размер файла не превышает исходный. Если это так, он убьет процесс с помощью command.kill('SIGSTOP');

const transcodeVideo = () => {
  return new Promise((resolve, reject) => {
    ffmpeg("./video.mp4")
      .setFfprobePath(pathToFfprobe.path)
      .setFfmpegPath(pathToFfmpeg)
      .videoCodec("libx264")
      .audioCodec("libmp3lame")
      .size("720x?")
      .on("error", (err) => {
        console.info(err);
      })
      .on("end", () => {
      //irrelevant resolving code in here
      })
      .save("./transVideo.mp4");
  });
};

transcodeVideo();
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
15
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать свойство targetSize из "progress" событие, чтобы получить текущий размер целевого файла:

let command = ffmpeg
  // ...
  .on("progress", progress => {
    if (progress.targetSize > originalSize) {
      command.kill();
    }
  });

Чтобы получить исходный размер, вы можете использовать стандартные функции в библиотеке Node fs, например. fs.stat.

Другие вопросы по теме