最近在做项目的时候需要在nodejs中将mp3转成wav格式,还需要转换成单声道格式。那么来试试吧(适用于windows端)
实现思路
- 使用ffmpeg(命令行工具)进行转换,需要安装命令行工具
- nodejs中下载fluent-ffmpeg依赖包进行转换,fluent-ffmpeg是nodejs中针对ffmpeg进行代码适配的依赖包
- 编写工具方法,如果有其他格式转换需求,可以自行扩展
1. windows中安装命令行工具(ffmpeg)
(ffmpeg官网):[ffmpeg.org/]
(下载地址):[www.gyan.dev/ffmpeg/buil…]
可以去下载地址中下载,我是下载git master builds中的ffmpeg-git-full.7z压缩包。也可以下载essentials包,那个功能就少点,不过够用。
下载后就可以解压缩到你想要的任意地方中,然后设置里面bin目录下的环境变量,以确保cmd命令行可以访问。这步就不用多说了吧?有问题可以私信
2. 在nodejs项目中安装依赖包
npm install fluent-ffmpeg
3. 编写工具方法
参数为file对象或者strem流对象都可,channels为视频通道数,toFormat可以自行修改视频格式
import ffmpeg from "fluent-ffmpeg";
import { Readable } from "node:stream";
/**
* Converts an MP3 file object to a WAV file object.
*
* @param {Readable} mp3Stream - The input MP3 file as a Readable stream.
* @returns {Readable} - A Readable stream for the output WAV file.
*/
export function convertMp3ToWav(mp3FileStream, channels = 1) {
const wavFileStream = ffmpeg()
.input(mp3FileStream)
.audioChannels(channels)
.toFormat('wav')
.pipe();
return wavFileStream;
}