从 MP3 中提取原始音频/波形
Posted
技术标签:
【中文标题】从 MP3 中提取原始音频/波形【英文标题】:Extracting raw audio/waveform from an MP3 【发布时间】:2009-02-27 03:58:38 【问题描述】:这个问题已经在我脑海中萦绕了好几年,但我从未真正找到答案。
我想做的是提取 MP3 文件的实际波形/PCM,这样我就可以使用声卡播放它(当然)。
理想情况下,我会尝试一些 DSP 效果。
我的第一步是研究 LAME,但我没有发现任何与程序中的 MP3 解码或类似内容相关的内容。
所以我问我在哪里可以找到这样的东西。
我应该使用什么语言?我在想 C,但也许有一些编程语言可以更有效地完成这项工作。
谢谢!
纪尧姆。
【问题讨论】:
转换为 WAV/PCM/其他一些原始格式是否需要编程,或者是否需要一个实用程序/程序在外部完成它就足够了?我假设前者,因为后者会将这个问题放在与编程无关的领域;-) 【参考方案1】:问题归结为:您要完成什么?
根据您对 MP3 解码并在声卡上播放的问题的描述,听起来好像您正在尝试制作媒体播放器。
但是,如果您的目的是使用 DSP 效果器,那么听起来问题更多是关于处理声音而不是解码 MP3。如果是这种情况,可能会考虑为现有媒体播放器(例如Windows Media Player 和Winamp)编写插件,这将是您想要完成的最简单的途径。
坦率地说,从头开始学习编写自己的解码器不仅仅是一个编程问题,而是一个数学问题,因此使用现有的库是可行的方法。如果有的话,与操作系统或 DirectSound 等库对话以输出音频似乎是不必要的工作。我觉得为现有播放器开发插件将是可行的方法,除非您的目标是制作自己的媒体播放器。
如果您真正想要完成的是播放音频数据,那么可能使用任何 MP3 解码器将 MP3 解码为未压缩的 PCM,然后以您选择的语言对其进行操作将实现您处理声音效果的目标。
语言选择将取决于您是要直接与 MP3 解码库交互,还是只使用原始音频输入,这样您就可以使用几乎任何您选择的语言。
不久前有一个类似的问题,Getting started with programmatic audio,我在其中发布了有关操作音频的一些基本方法的答案,例如放大、更改播放速度以及使用 FFT 进行一些工作。
【讨论】:
你,先生,真棒!我浏览了你的答案,看起来很棒!我明天去看看。谢谢! 谢谢,很高兴能帮上忙! :)【参考方案2】:libmpg123 应该可以解决问题。
【讨论】:
【参考方案3】:我一直在使用 Windows Media SDK,但不是出于此目的,但我很确定有一些钩子可以让您截取音频流,或将 MP4 转换为未压缩的 WAV。我用的是 C++。
【讨论】:
【参考方案4】:手数:
http://www.mp3-tech.org/programmer/decoding.html
选择你的毒药...
此外,LAME 确实解码 MP3(查看 --decode 选项),因此您可能会在该来源中发现一些有趣的东西。
-亚当
【讨论】:
【参考方案5】:这实际上取决于您在什么平台上进行编程以及您想对代码做什么。如果您使用的是 Windows,您应该查看 windows media format sdk 或 DirectShow。它们都应该能够将 mp3 文件解码为原始波形。在 Mac 上,我希望 Quicktime 也有同样的能力。其他人已经建议了 Linux/开源代码的源代码。
【讨论】:
【参考方案6】:我建议您查看 Cubase 和 Wavelab,因为它们都可以将 MP3 转换为 WAV 等,并允许您使用波形
【讨论】:
以上是关于从 MP3 中提取原始音频/波形的主要内容,如果未能解决你的问题,请参考以下文章