2011-06-02 77 views
5

我已经搜索了高和低,并找不到任何像样的MP3解码器=/C++跨平台MP3解码器?

我需要一个将在gcc/linux下编译的。

我能找到的最接近的是libmad,它根本没有任何文档,我能找到的唯一例子就是它的主页上的一个,它非常复杂。

有没有人知道我在哪里可以找到一个?

+0

你看着跛脚? http://lame.sourceforge.net/ – 2011-06-02 03:11:41

+0

是的...我的印象是,它只是为编码..我再检查 – bitwise 2011-06-02 03:14:12

+0

看命令行页面:http://lame.cvs。 sourceforge.net/viewvc/lame/lame/USAGE我可以看到至少有几个看起来很有前途的选项,比如'--decode'和'--mp3input'。这将暗示底层图书馆有能力做你需要的东西,我会想象的。无论它是否具有很好的,封装良好的解码MP3的C++函数,都是另一回事...... – 2011-06-02 03:17:25

回答

4

我以前用过MAD (MPEG Audio Decoder),效果很好,所以我不会这么快就放弃它。 MAD特别设计用于在没有浮点运算的情况下在CPU上获得良好性能,例如,在为移动设备开发应用程序时,这是理想的。
我想推荐你看看this project (GSPlayer)的源代码。它是Windows CE/Windows Mobile的音频播放器,它使用libmad。代码功能齐全,整洁,不会太大,所以它可以帮助您了解如何在您自己的项目中使用libmad。

虽然您可能必须验证libmad的许可证(GPL),因为它可能不适合您的需要。

+1

他已经有许可证的痛苦来处理,只是通过拥有该功能。该死的软件专利。 (他也已经在这个问题中引用了这个) – 2011-06-02 03:30:13

+2

我终于找到了它的工作......但直到我看到一些FMOD的例子,这使得它非常明显,程序员有责任提供自己的读取和写功能。在另一个我用来参考的解码示例中,ogg vorbis lib从文件中读取并为自己填充缓冲区= /但我想这种做法是为了提高可移植性而完成的?我绝对需要这个。谢谢您的帮助 :) – bitwise 2011-06-02 17:16:10

2

ffmpeg应该能够毫无困难地处理MP3。实际上访问这些功能有多容易,但我不能说。

3

你看过Lame

看看它的command-line page,我可以看到至少有几个看起来很有前途的选项,比如--decode--mp3input。这将暗示底层图书馆有能力做你需要的东西,我会想象的。无论它是否具有很好的,封装良好的用于解码mp3的C++函数,都是另一回事。

正如在评论中指出的那样,您应该仔细检查许可和专利协议。

+0

+1真正是第一个(也许将是最好的)答案。 – 2011-06-02 03:29:26