流畅的ffmpeg如何保存回调

时间:2018-08-07 12:29:22

标签: node.js express amazon-s3 ffmpeg fluent-ffmpeg

我正在使用fluent-ffmpeg GIT 我想进一步处理保存的文件。但是保存没有任何回调。我如何使用已保存的文件进行承诺。 我的代码是

ffmpeg(filename)
    .toFormat('mp3')
    .on('error', (err) => {
       console.log('An error occurred: ' + err.message);
    })
    .on('progress', (progress) => {
        console.log('Processing: ' + progress.targetSize + ' KB converted');
})
.on('end', () => {
        console.log('Processing finished !');
})
.save(`./${newname}.mp3`)

我的问题是“保存”功能没有回调。那么如何将输出再次保存在S3上?

1 个答案:

答案 0 :(得分:1)

save方法不需要其自己的回调。如文档所述,

  

保存(文件名):将输出保存到文件

     

开始ffmpeg处理并将输出保存到文件中。

     

注意:save()方法实际上是用于同时调用两个   output()和run()。

     

<...>

     

处理结束时发出结束事件。侦听器将ffmpeg标准输出和标准错误作为参数,但生成缩略图时除外(请参见下文),在这种情况下,侦听器将接收生成的文件名数组。

该流可以像任何其他流一样被承诺化:

new Promise((resolve, reject) => {
    ffmpeg(filename)
    .toFormat('mp3')
    .on('error', reject)
    .on('progress', (progress) => {
        console.log('Processing: ' + progress.targetSize + ' KB converted');
    })
    .on('end', resolve)
    .save(`./${newname}.mp3`)
});