.mp3 大小与 .wav 大小相比如何?

Posted

技术标签:

【中文标题】.mp3 大小与 .wav 大小相比如何?【英文标题】:How do .mp3 sizes compare to .wav sizes? 【发布时间】:2020-05-22 16:19:11 【问题描述】:

我一直致力于将用户上传的.mp3 文件转换为.wav 格式以供后端处理。我一直关注this example,我认为它有效,但结果.wav 比后端想要处理的要大。我对音频构成的内部工作原理知之甚少,无法理解我可以更改哪些内容以进一步压缩最终的.wav 文件,或者是否有可能。

它是直接的 1:1 转换,其中某个尺寸 .mp3 将始终变为某个尺寸 .wav?这将是一个简单的答案,但是创建.wav 似乎有很多配置,我敢肯定它不是那么简单。

几乎没有适合初学者的文档,我可以找到详细说明转换中实际发生的情况,例如这些行(以及所有其他行)实际在做什么:

intBuffer[0] = 0x4952; // "RI"
intBuffer[1] = 0x4646; // "FF"

非常感谢这里的任何帮助,我想我在这里不知所措。

【问题讨论】:

“实际上我也找不到详细说明实际情况的文档” -> en.wikipedia.org/wiki/Mp3#Encoding_and_decoding @Andreas 太好了,谢谢,但是您知道我没有音频语言背景的任何资源吗?在这个阶段,这对我来说几乎是希腊语。 mp3 与其对应的 wav 之间很可能存在 1:1 映射,但是 mp3 有许多排列方式,例如可变或固定比特率,因此没有固定类型的 mp3,所以我会避免尝试担心从 mp3 转换后的 wav 文件会有多大……根据定义,wav 不是压缩的……还有几种不同风格的 wav 编解码器(例如整数或浮点数)……位深度,采样率和字节序是 wav 文件编码的原始音频的三个基本属性 @ScottStensland 嗯,我明白了,谢谢。那么,如果我的后端只能处理一个 8mb 的 wav 文件,并且我有用户上传或录制需要转换的各种大小的 mp3,那么我试图限制它们是不是运气不好?还是我必须对 mp3 的大小有非常严格的限制? 您可以将上传的 mp3 大小限制为 1mb,因为通常会发生 1:10 的比例,这可能会导致 wav 约为 10mb ...单声道文件(单声道)将使音频剪辑持续时间最大化给定文件大小限制,而两个通道(立体声)将使收听时间减半 【参考方案1】:

我一直致力于将用户上传的 .mp3 文件转换为 .wav 格式以供后端处理。

为什么?仅当您对原始 PCM 数据进行处理时才需要这样做。在大多数情况下,您可以将其保留为上传给您的原始决赛。

我一直在关注这个例子

该示例仅在您需要转换客户端时才有用。如果在服务器上进行转换,您使用 FFmpeg 之类的工具为您进行转换会更高效。

但生成的 .wav 更大

WAV 文件通常存储原始 PCM。这是通过每秒数千次量化压力水平来实现的。它允许无损编辑,但效率不高。我们不会直接“听到”压力变化,而是听到频率。而且,我们听到的内容也发生了一些进化变化。 (例如,如果在安静的声音的同时有响亮的声音,我们不会注意到那些安静的声音。我们的大脑正在寻找即将吃掉我们的狮子,而不是对面的涓涓细流。)

MP3 的工作原理是利用我们听到和感知声音的方式来占用更少的空间。处理是在频域中完成的。与较安静的声音相比,更多的带宽花费在较响的声音上。一些声音的时间有点混乱。不是在单个样本级别上工作,而是一起处理短时间块(“帧”)。 MP3 是有损的,但旨在丢失声音中不那么重要的部分。在这个过程中,它可以听起来接近“透明”,大约是原始 PCM 带宽的 1/7。

WAV 文件中的原始 PCM 始终是最大的文件大小。如果您需要减小尺寸,它不是适合这项工作的工具。

【讨论】:

我可以告诉你,你的前几个问题的答案是因为后端只能处理WAV文件,而决定前端来处理转换。但是,您的回答使我认为我应该推荐一种不同的方法。谢谢! @jdmac 是的,我会在服务器端进行转换,以减少上传大小并最大限度地提高与用户发送内容的兼容性和一致性。如果可能,请始终保留原始文件的副本。存储很便宜,而且您永远不知道何时需要重新转换。 (例如,您将来可能会决定您实际上希望这些有损副本开始。或者,您可能需要重新提取一些元数据。去过那里,做到了。:-) 绝对将该文件存档。)

以上是关于.mp3 大小与 .wav 大小相比如何?的主要内容,如果未能解决你的问题,请参考以下文章

MP3 样本大小?

WAV文件有多大?MP3文件有多大?使用Lame 压缩比是多少?

如何在 Windows Phone 8 中使用 mp3 文件?

MP3/wav 音频文件的持续时间

Figma 中的字体大小与 Flutter 相比如何?

将大 mp3 文件转换为 wav 时间问题