Функция execFile с узлом и ffmpeg сбрасывает 1 секунду созданного видео - PullRequest
0 голосов
/ 10 октября 2018

Я использую последние узлы 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...