更新:我添加了一篇新文章,描述了如何在客户端执行此操作。
在kaizen.place 上工作时,这是一个鼓励持续改进音乐的音乐应用程序,我发现需要将wav
文件转换为mp3
. 为了降低托管成本,我为文件上传大小设置了 10 MB 的限制。但是一首标准的 3 分钟歌曲刚好超过 30 MB。间接地,这个限制意味着对于一首完整的歌曲,艺术家需要上传mp3
文件。
在听说(并亲眼目睹)准备上传新版本歌曲的烦恼之后,我认为允许用户上传更大的wav
文件,然后将它们转换为mp3
. 平均而言,mp3
转换后的曲目占用的空间约为wav
. 这实质上意味着现在可以接受高达近 100 MB 的 wav 文件,而无需使用超过 10 MB 的存储空间。
这篇文章浓缩了我从几个不同来源获取的信息,希望能为您的下一个音频项目提供足够的信息。
安装 fluent-ffmpeg
<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
.七爪网7claw.com