#node.js #ffmpeg
Вопрос:
Следующий код зависает на неопределенный срок:
const pathToFfmpeg = require('ffmpeg-static');
const { promisify } = require('util');
const exec = promisify(require('child_process').exec)
(async function() {
console.log("Starting.");
let outputLogs = await exec(`${pathToFfmpeg} -i input.mp4 output.gif`);
console.log("Finished:", outputLogs);
})();
Это сработало в первый раз, но потом молча зависает навсегда.
Комментарии:
1. В подобных случаях вам следует зарегистрировать stdout и stderr, чтобы узнать, что происходит.
Ответ №1:
Это потому ffmpeg
, что ждет ввода пользователя о том, следует ли перезаписывать output.gif, которая уже существует. Передайте -y
флаг (который отвечает «да» на вопрос о перезаписи автоматически/без взаимодействия) следующим образом:
await exec(`${pathToFfmpeg} -y -i input.mp4 output.gif`);
(Создаю эти вопросы и ответы, чтобы, надеюсь, таким, как я, не пришлось тратить полчаса на отладку этого.)