4

fluent-ffmpegnpm モジュールを使用しています

クライアントからビデオを投稿しnew stream.Readable、ビデオ バッファを「読み取る」ために使用しています。

ffmpeg はファイルを変換して保存しており、すべてがきれいに見えますが、「終了」イベントは決して発生しません。

私のコードは次のとおりです。

const videoStream = new stream.Readable({
    read: function (n) {
        this.push(myVideoBuffer);
    }
});

ffmpeg(videoStream)
.on('progress', e => console.log(e))
.on('end', () => {
    console.log('ended')
    videoStream.destroy();
})
.on('error', e => console.error(e))
.save(`${process.cwd()}/media/videos/${Date.now()}.mp4`);

すべての進捗イベントのログを取得し、ビデオを保存しますが、「終了」イベントのコールバックが呼び出されることはありません。

他のすべてが正常に機能するため、これはバグだと思います。

4

1 に答える 1

2

どうやら、nullストリームを終了するために Buffer をプッシュした後、Readable ストリームにプッシュする必要があり、これにより ffmpeg プロセスが終了しました。

const videoStream = new stream.Readable({
    read: function (n) {
        this.push(myVideoBuffer);
        this.push(null);
    }
});

それでおしまい; 今、私の「終了」イベントが発火しており、すべて順調です。

于 2015-12-06T22:55:40.227 に答える