这个脚本将监控一个特定的目录,自动转码新添加的视频文件,并将转码后的视频保存到指定目录。
准备环境
- 安装 Node.js:- 访问 Node.js 官网,下载并安装适合你操作系统的 Node.js 版本。
- 安装 FFmpeg(不清楚的可以看我的上篇博客里有详细的安装步骤):- 对于 Windows 用户,可以从 FFmpeg 官方网站下载预编译的二进制文件,解压,并将
bin
目录添加到系统的环境变量中。- macOS 用户可以使用 Homebrew 安装:brew install ffmpeg
。- Linux 用户(以 Ubuntu 为例)可以使用:sudo apt install ffmpeg
。
设置项目
- 在你的开发目录中,创建一个新的目录作为项目文件夹,如
video-transcoder
。 - 打开终端或命令提示符,进入该目录,并初始化一个新的 Node.js 项目:
cd path/to/video-transcodernpm 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}`);
这段脚本做了几件事:
- 使用
chokidar
库监控watchDir
目录下的新添加文件。 - 当检测到新文件时,判断是否为视频文件(通过文件扩展名)。
- 如果是视频文件,使用
fluent-ffmpeg
将其转码为使用 H.264 编码的 MP4 文件,并保存到outputDir
目录。 - 在转码过程中,通过事件监听器输出转码进度和结果。
运行脚本
- 在
video-transcoder
目录中,确保有watch
和output
两个子目录。将你想要自动转码的视频文件放入watch
目录。 - 在命令行中运行你的脚本:
node transcode.js
- 脚本会自动检测
watch
目录中的新视频文件,并开始转码过程,转码后的视频将保存在output
目录。
结语
通过上述步骤,你已经创建了一个可以自动监控目录并转码视频的Node.js脚本。这个脚本可以根据你的特定需求进一步定制和扩展,例如添加更多的转码选项、处理更多视频格式、或者在转码完成后发送通知等。这只是展示了FFmpeg和Node.js在视频处理自动化方面强大功能的冰山一角。随着你对这些工具的深入了解,你将能够解锁更多的可能性,以适应日益增长的多媒体处理需求。
版权归原作者 接着奏乐接着舞。 所有, 如有侵权,请联系我们删除。