更新:我添加了一篇新文章,描述了如何在客户端执行此操作。
在kaizen.place 上工作时,这是一个鼓励持续改进音乐的音乐应用程序,我发现需要将wav
文件转换为mp3
.为了降低托管成本,我为文件上传大小设置了 10 MB 的限制。但是一首标准的 3 分钟歌曲刚好超过 30 MB。间接地,这个限制意味着对于一首完整的歌曲,艺术家需要上传mp3
文件。
在听说(并亲眼目睹)准备上传新版本歌曲的烦恼之后,我认为允许用户上传更大的wav
文件,然后将它们转换为mp3
.平均而言,mp3
转换后的曲目占用的空间约为wav
.这实质上意味着现在可以接受高达近 100 MB 的 wav 文件,而无需使用超过 10 MB 的存储空间。
这篇文章浓缩了我从几个不同来源获取的信息,希望能为您的下一个音频项目提供足够的信息。
安装 fluent-ffmpeg
node-fluent-ffmpeg,FFMPEG 的流畅 API (),下载node-fluent-ffmpeg的源码_GitHub_酷徒
Fluent-ffmpeg 正在寻找新的维护者 wiki 上的更多详细信息 该库抽象了复杂的命令行......
<span style="background-color:#f2f2f2"><span style="color:rgba(0, 0, 0, 0.8)"><span style="color:#292929">npm 安装 fluent-ffmpeg</span><span style="color:#292929">或者</span><span style="color:#292929">纱线添加流畅的ffmpeg</span></span></span>
安装ffmpeg
fluent-ffmpeg
只是ffmpeg
程序顶部的一个小层。因此,您必须ffmpeg
安装
Ubuntu
apt-get 安装 ffmpeg
苹果电脑
<span style="background-color:#f2f2f2"><span style="color:rgba(0, 0, 0, 0.8)"><span style="color:#292929">酿造安装ffmpeg</span></span></span>
视窗
去下载Ubuntu并至少将其安装在硬盘驱动器的一个分区上。以后你会感谢我的。
最终代码
<span style="background-color:#f2f2f2"><span style="color:rgba(0, 0, 0, 0.8)"><span style="color:#292929">从“fluent-ffmpeg”导入 ffmpeg;从“路径”导入路径;</span><span style="color:#292929">function isWavFile(wavFilename: string) { const ext = path.extname(wavFilename); 返回 ext === ".wav"; }</span><span style="color:#292929">function convertWavToMp3(wavFilename: string): Promise<string> { return new Promise((resolve, reject) => { if (!isWavFile(wavFilename)) { throw new Error(`Not a wav file`); }</span><span style="color:#292929"> const outputFile = wavFilename.replace(".wav", ".mp3"); ffmpeg({ source: wavFilename, }).on("error", (err) => { reject(err); }).on("end", () => { resolve(outputFile); }).save (输出文件); }); }</span></span></span>
结论
你有它。上面的代码wav
从文件系统加载一个文件并将其转换为mp3
.七爪网