0

拡張子が node-ytdl の YouTube 動画をダウンロードするアプリケーションを作成しています。クライアントにダウンロードの進行状況インジケーターを送信したいので、それを計算するためのチャンク情報を取得しようとしています。私のコードは次のようになります。

        var writing = fs.createWriteStream('video.mp4');
        var stream = ytdl('https://www.youtube.com/watch?v=jofNR_WkoCE', { filter: function(format) { return format.container === 'mp4'; }, quality: "lowest" });
        stream.pipe(writing);

        var completed_len = 0;
        var total_len = 0;

        writing.on('data', function(chunk) {
            console.log('received data!');
            completed_len += chunk.length;
        });

        writing.on('close', function ()
        {
            console.log('close');
            res.send('completed!');
        });

奇妙なことに、ダウンロードが完了するたびに「閉じる」が発生しても、「データ」イベントからログが取得されません。ビデオは正しく書かれています。Node.jsストリームは初めてです。私は何か間違ったことをした?

4

1 に答える 1

2

間違ったストリームにバインドしただけです。'data'イベントは、によって作成されたような読み取り可能なストリームで発生します。streamytdl

stream.on('data', function (chunk) {
    // ...
});

Node 0.8'close'以前を使用している場合は、両方のストリームでイベントが発生します。0.10 では、書き込み可能なストリームのイベントが に変更されました。'finish'

于 2013-10-03T19:32:21.760 に答える