Несколько процессов в NodeJS или нативном FFMPeg - PullRequest
0 голосов
/ 09 октября 2019

Я использую этот код в nodejs:

function spawnFfmpeg(input, output){
   var args = [
        '-i', input,
        '-b:v', '2M',
        '-b:a', '192k',
        '-vcodec', 'libx264',
        '-crf', '27',
        '-preset', 'veryfast',
        '-filter:v',
        'scale=w=1280:h=720',
        '-f', 'mpegts',
        '-blocksize', '16384',
        '-flush_packets', '1',
        output,
        '-y'
   ];
   var ffmpeg = spawn('ffmpeg', args);
   return ffmpeg;
}
function test(){
  for(var i = 0; i <= 100; i++){
        let ffmpeg = spawnFfmpeg('test.ts', 'output_'+i+'.ts');
        ffmpeg.on('exit', () => {
            console.log('EXITED');
        });
  }

}
setInterval(() => {
    console.log('OK');
    test();
}, 4000);

Я загружаю видеофайлы TS через HTTP и работаю на моем HTTP-сервере (пока он работает), но когда я хочу изменить размер видеоразмер скрипта высокий cpu и ram (потому что слишком много процесса ffmpeg).

Поскольку я делаю 100 запросов каждые 4 секунды, каждый запрос был разным источником, я создал эту тестовую функцию и обнаружил, что проблема заключается в том, что ffmepgне может обработать это большое число спавна;

Примечание: Когда я обслуживаю только файл TS без изменения размера (используя ffmpeg), сценарии работают нормально только с центральным процессором 0,4% и оперативной памятью 40 МБ, но проблема возникает, когда я ставлюffmpeg в скрипте nodejs.

Так что я подумал, что проблему можно решить с помощью jfaspg-версии ffmepg (в backend nodejs), возможно ли это?

...