0

私はリアルタイムのビデオ変換デモアプリに取り組んでいます。ビデオ ファイルはnode-multiparty、ファイルのpart is pipedtoavconv.stdinで解析され、処理されるとchunk pipestoで解析されますwrite stream

ソースコードの一部を次に示します。

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。通常、パーツが解析されたときにイベントが発生する必要があります。これは、パーツがアップロードされたことを意味します。

テスト ビデオ ファイル (~800KB) と、テスト用の低レベルのラップトップがあります。localhost でテストを実行しているときに、変換プロセスendの最後にイベントが発生します。これは ~15 秒間続きます。avconv

800KB のビデオ ファイルがアップロードされましたが、partストリームはまだ空ではなく、データが によって処理されるのを待っているようですavconv

私は正しいですか、それとも別のことがありますか?

4

1 に答える 1

1

あなたは、絶対に正しい。Readableストリームは、end完全に消費された場合にのみイベントを発行します。こちらをご覧ください: http://nodejs.org/api/stream.html#stream_event_end

于 2014-02-06T20:50:50.893 に答える