这个问题在我脑海里已经存在了几年,我从来没有真正找到答案。
我想要的是提取MP3文件的实际波形/ PCM,以便我可以使用声卡(当然)播放它。
理想情况下,我会尝试一些DSP效果。
我的第一步是调查LAME,但我没有找到任何与程序中的MP3解码或类似内容有关的内容。
所以我问我在哪里可以找到这样的东西。
我应该使用哪种语言?我在想C,但也许有编程语言可以更有效地完成工作。
谢谢!
纪尧姆。
答案 0 :(得分:5)
问题归结为:你想要完成什么?
根据您对MP3解码问题的描述并在声卡上播放,听起来好像您正在尝试制作媒体播放器。
然而,如果你想要使用DSP效果,那么听起来问题更多的是处理声音而不是解码MP3。如果是这种情况,可能会考虑为现有媒体播放器(例如Windows Media Player和Winamp)编写插件,这将是您尝试完成的最简单的途径。
坦率地说,从头开始学习编写自己的解码器不仅仅是一个编程问题,而是一个数学问题,因此使用现有的库是可行的方法。与DirectSound等操作系统或库交谈以输出音频似乎是不必要的工作。除非你的目标是制作自己的媒体播放器,否则我觉得为现有播放器制作插件是可行的方法。
如果您真正想要实现的是播放音频数据,那么可能使用任何MP3解码器将MP3解码为未压缩的PCM,然后使用您选择的语言对其进行操作将实现您处理声音效果的目标。 / p>
语言选择取决于您是否要直接与MP3解码库交互,或者您是否可以使用原始音频输入,这样您就可以使用几乎任何您选择的语言。
前面有一个类似的问题Getting started with programmatic audio,在那里我发布了一些操作音频的基本方法的答案,例如放大,改变播放速度,以及使用FFT做一些工作。
答案 1 :(得分:2)
libmpg123应该可以做到这一点。
答案 2 :(得分:1)
我一直在使用Windows Media SDK,不是为了这个目的,但我很确定有钩子让你拦截音频流,或者将MP4转换为未压缩的WAV。我用过C ++。
答案 3 :(得分:1)
的数量:
http://www.mp3-tech.org/programmer/decoding.html
选择你的毒药......
另外,LAME会对MP3进行解码(请查看--decode选项),这样您就可以在该源中找到有趣的内容。
- 亚当
答案 4 :(得分:1)
这实际上取决于您编程的平台以及您希望如何处理代码。如果您使用的是Windows,则应该查看windows media format sdk或DirectShow。他们都应该能够将mp3文件解码为原始波形。在Mac上,我希望Quicktime能够拥有同样的能力。其他人已经提出了Linux /开源代码的来源。
答案 5 :(得分:0)
我建议您查看Cubase和Wavelab,因为它们都会将MP3转换为WAV等,并允许您使用波形