Node.js 中,将 .mov 文件转换为 .mp4 文件,通常使用 FFmpeg,一个强大的多媒体处理工具。以下是具体的步骤和代码实现:

步骤:

  1. 安装 FFmpeg
    在本地安装 FFmpeg,确保在命令行可以运行 ffmpeg。可以从 FFmpeg官网 下载并安装。
  2. 安装 Node.js 相关依赖
    使用 fluent-ffmpeg 包在 Node.js 中调用 FFmpeg。 npm install fluent-ffmpeg
  3. 实现转换逻辑

代码实现:

const ffmpeg = require('fluent-ffmpeg');
const path = require('path');

// 输入和输出路径
const inputPath = path.join(__dirname, 'input.mov'); // 替换为你的 .mov 文件路径
const outputPath = path.join(__dirname, 'output.mp4'); // 输出的 .mp4 文件路径

// 转换函数
function convertMovToMp4(input, output) {
  return new Promise((resolve, reject) => {
    ffmpeg(input)
      .output(output)
      .videoCodec('libx264') // 使用 H.264 编码
      .audioCodec('aac')    // 使用 AAC 编码
      .on('start', (commandLine) => {
        console.log('FFmpeg 命令:', commandLine);
      })
      .on('progress', (progress) => {
        console.log(`处理进度: ${progress.percent.toFixed(2)}%`);
      })
      .on('end', () => {
        console.log('转换完成!');
        resolve(output);
      })
      .on('error', (err) => {
        console.error('转换失败:', err.message);
        reject(err);
      })
      .run(); // 开始执行转换
  });
}

// 执行转换
convertMovToMp4(inputPath, outputPath)
  .then((file) => console.log('转换成功, 输出文件路径:', file))
  .catch((err) => console.error('发生错误:', err));

代码说明:

  1. 输入文件和输出文件路径
    替换 input.movoutput.mp4 为你实际的文件路径。
  2. 关键参数
    • videoCodec('libx264'):使用 H.264 编码进行视频压缩。
    • audioCodec('aac'):使用 AAC 编码处理音频。
    • .on('progress'):显示实时处理进度。
    • .on('error'):处理转换中的错误。
  3. 异步处理
    转换操作是异步的,因此使用了 Promise 来简化回调逻辑。

运行结果:

运行代码后,我们将会看到:

  1. 实时转换进度。
  2. 转换成功后,生成一个 .mp4 文件。

注意事项:

  1. 确保 FFmpeg 可用: ffmpeg -version 如果未安装 FFmpeg,请先安装,并将其添加到系统路径。
  2. 文件大小和转换速度:
    • 文件越大,转换所需时间越长。
    • 如果需要进一步优化参数,可参考 FFmpeg 的文档进行配置。
  3. 如果在 Windows 环境中遇到 ffmpeg 找不到的问题,可以通过以下方式解决: const ffmpegPath = 'C:/path/to/ffmpeg.exe'; // 替换为实际路径 ffmpeg.setFfmpegPath(ffmpegPath);

这样,原先的 .mov 文件就可以轻松地转换为 .mp4