2014-02-05 8 views
0

Я работаю над демонстрационным приложением для преобразования видео в реальном времени. Файл видео обрабатывается с node-multiparty, файлом part is piped до avconv.stdin, а при обработке - chunk pipes - write stream.Node.js & avconv - преобразование видео в реальном времени

Вот часть исходного кода:

var form = new multiparty.Form(), 
    args = ['-i', 'pipe:0', '-f', 'webm', 'pipe:1'], 
    avconv = spawn('avconv', args), 
    output = fs.createWriteStream(filePath); 

form.on('part', function (part) { 
    if (part.filename) { 
    part.pipe(avconv.stdin); 

    part.on('end', function() { 
     console.log('===== Video has been uploaded! ====='); 
     avconv.stdin.end(); 
    }); 
    } 
}); 

avconv.stdout.pipe(output); 

Я заинтересован в end случае прикрепленной к файлу part. Обычно событие должно быть запущено, когда часть анализируется, что означает, что она была загружена.

У меня есть тестовый видеофайл (~ 800 КБ) и низкоуровневый ноутбук для тестирования. При запуске теста на localhost, end событие стреляет в самый конец процесса преобразования avconv, который длится ~ 15 секунд.

Видеоролик 800KB загружен быстрее, но похоже, что поток part все еще не пуст, ожидая обработки данных на avconv.

Я прав, или есть другое?

ответ

Смежные вопросы