1

这个问题已经在我脑海中萦绕了几年,但我从未真正找到答案。

我想做的是提取 MP3 文件的实际波形/PCM,这样我就可以使用声卡播放它(当然)。

理想情况下,我会尝试一些 DSP 效果。

我的第一步是研究 LAME,但我没有发现任何与程序中的 MP3 解码相关的内容或类似的东西。

所以我问我在哪里可以找到这样的东西。

我应该使用什么语言?我在想 C,但也许有一些编程语言可以更有效地完成这项工作。

谢谢!

纪尧姆。

4

6 回答 6

5

问题归结为:你想要完成什么?

从您对 MP3 解码并在声卡上播放的问题的描述中,听起来好像您正在尝试制作媒体播放器。

但是,如果您的意图是玩弄 DSP 效果,那么听起来问题更多是关于处理声音而不是解码 MP3。如果是这种情况,可能会考虑为现有媒体播放器(例如Windows Media PlayerWinamp )编写插件,这将是您想要完成的最简单的途径。

坦率地说,从头开始学习编写自己的解码器不仅仅是一个编程问题,而是一个数学问题,因此使用现有的库是可行的方法。如果有的话,与操作系统或 DirectSound 等库对话以输出音频似乎是不必要的工作。我觉得为现有播放器开发插件是可行的方法,除非您的目标是制作自己的媒体播放器。

如果您真正想要完成的是播放音频数据,那么可能使用任何 MP3 解码器将 MP3 解码为未压缩的 PCM,然后以您选择的语言对其进行操作将实现您处理声音效果的目标。

语言选择将取决于您是否要直接与 MP3 解码库交互,或者您是否可以只使用原始音频输入,这将允许您使用几乎任何您选择的语言。

前段时间有一个类似的问题,程序化音频入门,我在其中发布了有关操作音频的一些基本方法的答案,例如放大、更改播放速度以及使用 FFT 进行一些工作。

于 2009-02-27T05:22:53.157 回答
2

libmpg123应该可以解决问题。

于 2009-02-27T04:04:39.600 回答
1

我一直在使用 Windows Media SDK,不是为了这个目的,但我很确定有钩子可以让你截取音频流,或将 MP4 转换为未压缩的 WAV。我使用了 C++。

于 2009-02-27T04:05:59.813 回答
1

很多:

http://www.mp3-tech.org/programmer/decoding.html

选择你的毒药...

此外,LAME 会解码 MP3(查看 --decode 选项),因此您可能会在该源中发现一些有趣的东西。

-亚当

于 2009-02-27T04:08:25.470 回答
1

这真的取决于你在什么平台上编程以及你想用代码做什么。如果您在 Windows 上,您应该查看windows 媒体格式 sdkDirectShow。它们都应该能够将 mp3 文件解码为原始波形。在 Mac 上,我希望 Quicktime 也有同样的能力。其他人已经建议了 Linux/开源代码的源代码。

于 2009-02-27T04:45:58.283 回答
0

我建议您查看 Cubase 和 Wavelab,因为它们都可以将 MP3 转换为 WAV 等,并允许您播放波形

于 2011-01-23T17:51:12.853 回答