fluent-ffmpeg模块:"结束"事件不会发生

时间:2015-12-06 22:17:34

标签: node.js ffmpeg stream buffer fluent-ffmpeg

我正在使用fluent-ffmpeg npm模块

我已经从我的客户发布了一个视频,并使用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`);

我会记录每个进度事件,它会保存视频,但是"结束"事件的回调永远不会被调用。

我认为这是一个错误,因为其他一切都很好。

1 个答案:

答案 0 :(得分:0)

显然,在我推送缓冲区以结束流后,我必须将null推送到我的可读流,然后依次结束ffmpeg进程。

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

就是这样;现在我的“结束”事件正在解雇,一切都很好。