实现具有不同比特率的文件上传,将它们压缩成不同的质量,然后上传。有没有办法使用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 将为给定比特率提供更好的音质,并得到很好的支持。
接下来,如果可能的话,您应该从无损源开始。 通过在已经有损压缩的内容上使用有损压缩,您会损失更多的质量,同时通过强调压缩伪影来浪费更多的带宽。
现在,进入你的问题。 在浏览器中执行此操作的唯一优化方法是使用媒体记录器 API。 基本上,您可以为要定位的比特率创建几个媒体录像机实例。 然后,通过媒体流播放音频,并将媒体录像机的输出流式传输到您的服务器。 理想情况下,这可能通过离线音频上下文比实时发生得更快。 但是,这目前在浏览器中不起作用,因此您必须实时执行此操作。
除非你有一个非常奇怪的边缘用例,否则我不会为此烦恼。 在服务器端进行转码,以获得更高效、更可预测的结果。 也许在不久的将来,我们将在浏览器上拥有更好的编解码器API。