安装 Node.js:
安装 FFmpeg(不清楚的可以看我的上篇博客里有详细的安装步骤):
在你的开发目录中,创建一个新的目录作为项目文件夹,如 video-transcoder。
打开终端或命令提示符,进入该目录,并初始化一个新的 Node.js 项目:
cd path/to/video-transcoder npm init -y
安装 fluent-ffmpeg 和 chokidar(用于监控文件系统变化的库):
npm install fluent-ffmpeg chokidar
在项目目录中创建一个名为 transcode.js 的文件,并添加以下内容:
const fs = require('fs'); const path = require('path'); const ffmpeg = require('fluent-ffmpeg'); const chokidar = require('chokidar'); // 设置监控的目录和输出目录 const watchDir = path.join(__dirname, 'watch'); const outputDir = path.join(__dirname, 'output'); // 确保输出目录存在 if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } // 监控目录中的新文件 chokidar.watch(watchDir).on('add', (filePath) => { // 确保文件是视频(这里简单以文件扩展名为准,可根据需要调整) if (path.extname(filePath).match(/\.(mp4|mov|avi)$/)) { console.log(`Detected new video for transcoding: ${filePath}`); // 设置输出文件路径 const outputFilePath = path.join(outputDir, path.basename(filePath, path.extname(filePath)) + '_converted.mp4'); // 使用 FFmpeg 进行转码 ffmpeg(filePath) .output(outputFilePath) .videoCodec('libx264') // 使用 x264 编码 .audioCodec('aac') // 使用 AAC 音频编码 .on('end', () => console.log(`Transcoding finished: ${outputFilePath}`)) .on('error', (err) => console.error(`Transcoding error: ${err.message}`)) .run(); } }); console.log(`Watching for videos to transcode in: ${watchDir}`);
这段脚本做了几件事:
在 video-transcoder 目录中,确保有 watch 和 output 两个子目录。将你想要自动转码的视频文件放入 watch 目录。
在命令行中运行你的脚本:
node transcode.js
脚本会自动检测 watch 目录中的新视频文件,并开始转码过程,转码后的视频将保存在 output 目录。
通过上述步骤,你已经创建了一个可以自动监控目录并转码视频的Node.js脚本。这个脚本可以根据你的特定需求进一步定制和扩展,例如添加更多的转码选项、处理更多视频格式、或者在转码完成后发送通知等。这只是展示了FFmpeg和Node.js在视频处理自动化方面强大功能的冰山一角。随着你对这些工具的深入了解,你将能够解锁更多的可能性,以适应日益增长的多媒体处理需求。