美文网首页nodejs编程
ffmpeg同时只转换1个文件_nodejs

ffmpeg同时只转换1个文件_nodejs

作者: zip11 | 来源:发表于2024-01-15 20:13 被阅读0次

    如果你需要使用 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 库。

    相关文章

      网友评论

        本文标题:ffmpeg同时只转换1个文件_nodejs

        本文链接:https://www.haomeiwen.com/subject/lnvhodtx.html