当前位置: 首页>前端>正文

ffmpeg同时只转换1个文件_nodejs

如果你需要使用 fluent-ffmpegFLV 转换为 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 库。


https://www.xamrdz.com/web/2h51993968.html

相关文章: