使用 Javascript 在上传前更改音频文件的比特率

Changing bitrate of audio file before uploading using Javascript

实现不同比特率的文件上传,将它们压缩成不同的质量,然后上传。有没有一种方法可以使用 javascript 来实现? (音频文件格式为mp3)

JavaScript 中没有内置任何东西来做 MP3 编码之类的事情,但是这里有一个库:https://github.com/Kagami/ffmpeg.js/

我还在此处找到了一篇关于使用该库的文章,尽管其任务与您想象的有所不同:https://medium.com/jeremy-gottfrieds-tech-blog/javascript-tutorial-record-audio-and-encode-it-to-mp3-2eedcd466e78

不幸的是,我认为没有任何简单、直接的方法可以实现您的想法。您将不得不通过这个 API 并弄清楚如何使用它来实现您的目标。

首先,我建议完全不要理会 MP3。 Opus 和 AAC 将为您提供给定比特率的更好音质,并且得到了很好的支持。

接下来,如果可能的话,您应该从无损源开始。通过对已经有损压缩的内容使用有损压缩,您会失去更多的质量,同时通过强调压缩伪影浪费更多的带宽。

现在开始回答你的问题。在浏览器中执行此操作的唯一优化方法是使用 Media Recorder API。基本上,您可以为要定位的比特率创建一些 Media Recorder 实例。然后,通过媒体流播放音频,并将媒体记录器的输出流式传输到您的服务器。理想情况下,这可能比通过离线音频上下文实时发生的更快。但是,目前这在浏览器中不起作用,因此您必须实时进行。

除非你有一个非常奇怪的边缘用例,否则我不会为此烦恼。在服务器端转码,以获得更高效和可预测的结果。也许在不久的将来,我们会有更好的浏览器编解码器API。