c# - MP3 字节数组 - 转换为 WAV 并导航到时间索引?

标签 c# audio mp3

我有一个包含 MP3 流的字节数组。

如果我希望能够转换为 WAV,假设必须进一步解码此流是否正确?

在其当前字节状态下,是否可以执行基本功能,例如获取/设置位置(按时间)?

最佳答案

是的,MP3 文件与 WAV 文件有很大不同。 WAV 文件包含样本形式的原始音频数据,从头到尾绘制输出波形,位图文件包含从左到右、从上到下的像素原始数据的方式相同。您可以将 WAV 文件视为声波的位图图片——但它存储的不是像素颜色,而是音频强度,通常每秒 44,100 个音频强度,如果是立体声,则为两个 channel ,每个 channel 2 个字节。

(知道这一点,您实际上可以计算出 WAV 文件的文件大小——要存储 1 分钟的音频,您需要 60 秒 * 44100 个样本 * 2 个 channel * 2 个字节 = 10.09MB。)

MP3 文件包含此图像的数学修改版本,并丢弃人类听不到的音频。它的工作原理类似于 jpeg 图像压缩图像的方式。

正如视频卡最终需要位图来处理一样,声卡最终也需要 WAV 数据来处理——所以是的,您需要一个解码器。

Mp3 文件的开头是一个称为 ID3 标签的数据 block ,其中包含有关该文件的一系列基本信息——艺术家姓名、轨道长度、专辑名称等。你可以使用类似 C# ID3 的东西在 C# 中读/写 ID3 标签。

至于音频本身,我不确定是否有完全用 C# 编写的 Mp3 解码器。从技术上讲,没有理由不能完成(它也应该是很好的性能),但是标准非常宽松并且数学很复杂,所以人们倾向于只使用 FFMpeg 之类的东西来解码。这里面的一些想法 Google search .

如果不需要做任何特殊处理,只想播放音频,可以使用WPF/Silverlight Media元素。

您可能会从 Josh Smith's Podder 中得到一些提示应用程序。

关于c# - MP3 字节数组 - 转换为 WAV 并导航到时间索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3432860/

相关文章:

c# - WPF XAML 解析错误。 "Data at the root level is invalid."

c# - 动态查询 azure 表

javascript - 在javascript中获取mp3歌曲的持续时间

android - 将/res/raw/中的.mp3文件共享到WhatsApp

c# - process.start从ASP页面开始,exe文件放在哪里

c# - 在 C# 中有条件地传递可选参数

ios - 在按钮上切换图像单击 iOS

graphics - 是否有任何来源可以获取可负担得起的软件产品和游戏图形和声音?

matlab - 如何获得定义频段中的所有fft箱数量?

java - 使用JLayer播放mp3资源