我有一个包含 MP3 流的字节数组。
如果我希望能够转换为 WAV,那么假设该流必须进一步解码是否正确?
在当前字节状态下,是否可以执行基本功能,例如获取/设置位置(时间方面)?
是的,MP3 文件与 WAV 文件有很大不同。 WAV 文件从头到尾包含样本形式的原始音频数据,以绘制输出波形,就像位图文件包含从左到右、从上到下的像素原始数据一样。您可以将 WAV 文件视为声波的位图图片 - 但它不是存储像素颜色,而是存储音频强度,通常每秒 44,100 个音频强度,如果是立体声,则为两个通道,每个通道 2 个字节。
(知道这一点后,您实际上可以计算出 WAV 文件的文件大小 - 要存储 1 分钟的音频,您需要 60 秒 * 44100 个样本 * 2 个通道 * 2 字节 = 10.09MB。)
MP3 文件包含该图像经过数学修改的版本,并丢弃人类听不到的音频。它的工作原理与 jpeg 图像压缩图像的方式类似。
正如视频卡最终需要位图来工作一样,声卡最终需要 WAV 数据来工作 - 所以,是的,您需要一个解码器。
Mp3 文件的开头是一个称为 ID3 标签的数据块,其中包含有关该文件的一系列基本信息 - 艺术家姓名、曲目长度、专辑名称等。你可以使用类似的东西C# ID3 http://sourceforge.net/projects/csid3lib/在 C# 中读取/写入 ID3 标签。
至于音频本身,我不确定是否有完全用 C# 编写的 Mp3 解码器。从技术上讲,没有理由不能做到这一点(性能方面也应该很好),但标准相当宽松,数学运算也很激烈,所以人们倾向于只使用 FFMpeg 之类的东西来解码。这里面的一些想法.
如果不需要做任何特殊处理,只想播放音频,可以使用WPF/Silverlight元素。
您可能会得到一些提示约什·史密斯的豆荚 http://joshsmithonwpf.wordpress.com/2008/01/06/introducing-podder-the-wpf-podcast-player/ app.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)