Я использую последние узлы js и windows 10. Я создаю 5-секундное видео из одного изображения, используя ffmpeg в дочернем процессе узла js.Ниже приведен код:
const execFile = require('child_process').execFile;
// Command to transform
//ffmpeg -framerate 30 -loop 1 -t 5 -i 1.jpg -i 3D_Transition_02.mp4 -filter_complex "[0]format=rgba,scale=1280:720,split[img][a]; [1]format=rgb24,negate,scale=1280:720[tr];[a][tr]overlay=format=gbrp[al];[img][al]alphamerge,setsar=1,format=yuva444p" -an -c:v libvpx -crf 10 -b:v 0 -quality realtime -auto-alt-ref 0 a1vp8.mkv
let str = "[0]format=rgba,scale=1280:720,split[img][a]; [1]format=rgb24,negate,scale=1280:720[tr];[a][tr]overlay=format=gbrp[al];[img][al]alphamerge,setsar=1,format=yuva444p";
const child = execFile('ffmpeg', ['-framerate', '30', '-loop', '1', '-t', '5', '-i', '1.jpg', '-i', '3D_Transition_02.mp4', '-filter_complex', str, '-an', '-c:v', 'libvpx', '-crf', '10', '-b:v', '0', '-quality', 'realtime', '-auto-alt-ref', '0', 'a2vp8.mkv'], (error, stdout, stderr) => {
if (error) {
console.error('Error:', stderr);
throw error;
}
console.log('Success', stdout);
});
console.log('Video created');
Видео успешно создано, но ... как видно из команды, оно должно длиться 5 секунд.В первый раз, когда я создал видео, оно длилось 5 секунд, но во второй и последующих попытках оно длилось 4 секунды (в gom player оно показывает пустую область в строке поиска воспроизведения) !!!
Когда я щелкаю правой кнопкой мыши и просматриваю подробную информацию о файле, его длина составляет 5 секунд.
Поведение: сначала я получаю консольное сообщение: видео создано, а затем через несколько секунд (когдафайл отображается) Я получаю стандартное сообщение "Success".
Есть идеи, почему он так себя ведет?Я также попробовал execFileSync, и он также создал 4-секундное видео (по крайней мере, согласно панели поиска воспроизведения gom player).