fluent-ffmpeg 模块:"end" 事件未触发
fluent-ffmpeg module: "end" event does not fire
我正在使用 fluent-ffmpeg
npm 模块
我已经从我的客户发布了一个视频,并且正在使用 new stream.Readable
到 "read" 视频缓冲区。
ffmpeg 正在转换并保存文件,一切看起来都很漂亮,但 "end" 事件从未触发。
我的代码如下:
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`);
我得到了每个进度事件的日志,它确实保存了视频,但从未调用 "end" 事件的回调。
我认为这是一个错误,因为其他一切正常。
显然,在我推送 Buffer 以结束流后,我必须将 null
推送到我的可读流,这又结束了 ffmpeg 进程。
const videoStream = new stream.Readable({
read: function (n) {
this.push(myVideoBuffer);
this.push(null);
}
});
就是这样;现在我的 "end" 活动开始了,一切正常。
我正在使用 fluent-ffmpeg
npm 模块
我已经从我的客户发布了一个视频,并且正在使用 new stream.Readable
到 "read" 视频缓冲区。
ffmpeg 正在转换并保存文件,一切看起来都很漂亮,但 "end" 事件从未触发。
我的代码如下:
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`);
我得到了每个进度事件的日志,它确实保存了视频,但从未调用 "end" 事件的回调。
我认为这是一个错误,因为其他一切正常。
显然,在我推送 Buffer 以结束流后,我必须将 null
推送到我的可读流,这又结束了 ffmpeg 进程。
const videoStream = new stream.Readable({
read: function (n) {
this.push(myVideoBuffer);
this.push(null);
}
});
就是这样;现在我的 "end" 活动开始了,一切正常。