在NodeJS中剪切音频:如何删除指定时间段片段并生成新文件
NodeJS音频区间剔除拼接解决方案
推荐使用 fluent-ffmpeg 库实现需求,该库是FFmpeg的NodeJS封装,支持任意时间段的音频裁剪、拼接操作,适配绝大多数常见音频格式。
前置依赖
- 首先需要在本地环境安装FFmpeg(Windows/macOS/Linux均有对应发行包,配置好环境变量即可)
- 项目中安装fluent-ffmpeg依赖:
npm install fluent-ffmpeg
实现逻辑
你需要把原音频拆为两个片段:0秒到20秒的第一段、50秒到88秒(1分28秒总时长)的第二段,再将两个片段拼接即可得到剔除20-50秒区间的最终音频。
示例代码
const ffmpeg = require('fluent-ffmpeg'); const fs = require('fs'); // 原文件路径 const inputPath = './input.mp3'; // 临时片段存储路径 const part1Path = './temp_part1.mp3'; const part2Path = './temp_part2.mp3'; // 最终输出路径 const outputPath = './output.mp3'; // 第一步:剪切第一片段(0-20秒) ffmpeg(inputPath) .setStartTime(0) .setDuration(20) .output(part1Path) .on('end', () => { // 第二步:剪切第二片段(50秒到结束) ffmpeg(inputPath) .setStartTime(50) .output(part2Path) .on('end', () => { // 第三步:拼接两个片段 ffmpeg() .input(part1Path) .input(part2Path) .concat(outputPath) .on('end', () => { // 清理临时文件 fs.unlinkSync(part1Path); fs.unlinkSync(part2Path); console.log('音频处理完成'); }) .run(); }) .run();
其他可选方案
如果不想依赖FFmpeg环境,也可以使用 audio-concat + wav-decoder/mp3-parser的组合方案,但兼容性和处理效率远低于fluent-ffmpeg,仅适合处理轻量wav格式音频的场景。
内容的提问来源于stack exchange,提问作者Shani
相关产品推荐
相关产品推荐

