如果你需要使用 fluent-ffmpeg
将 FLV 转换为 MP4,并确保当前转换任务完成后再进行下一个任务,你可以使用异步的回调或 Promise 来实现等待转换完成的逻辑。下面是一个基于 Promise 的示例:
const ffmpeg = require('fluent-ffmpeg');
const util = require('util');
const exec = util.promisify(require('child_process').exec);
// 输入文件路径
const inputFilePath = 'input.flv';
// 输出文件路径
const outputFilePath = 'output.mp4';
// 定义函数进行转换
async function convertFLVtoMP4(inputPath, outputPath) {
// 创建 Promise
return new Promise((resolve, reject) => {
// 使用 fluent-ffmpeg 执行转换
ffmpeg(inputPath)
.output(outputPath)
.audioCodec('copy') // 保持音频流不变
.videoCodec('copy') // 保持视频流不变
.on('end', () => {
console.log('转换完成!');
resolve();
})
.on('error', (err) => {
console.error('转换出错:', err);
reject(err);
})
.run();
});
}
// 调用函数进行转换,并等待完成
async function main() {
try {
await convertFLVtoMP4(inputFilePath, outputFilePath);
// 当前任务完成后执行下一个任务
console.log('当前任务完成,可以执行下一个任务。');
} catch (error) {
console.error('发生错误:', error);
}
}
// 执行主函数
main();
这个示例中,我们将转换操作封装成了一个返回 Promise 的函数 convertFLVtoMP4
,然后在 main
函数中使用 await
确保当前任务完成后再执行下一个任务。
请注意,使用 Promise 需要 Node.js 版本 8.0.0 或更高版本,因为 util.promisify
在这之前的版本中不可用。如果你使用的是旧版本的 Node.js,可以考虑使用回调方式或者其他 Promise 库。