我一直对音频转换软件感到好奇,但是从初学者的角度来看,我从未见过如何编写一个简单的程序,例如将mp3文件转换为wav。我不是在询问所涉及的任何复杂算法,只是使用简单库的一个小例子。搜索SO,我提出了几个名字,包括:
但我无法找到任何这些库的直接示例。通常我不介意涉及大量的代码,但在这里我完全不了解这个主题,所以我总觉得我在黑暗中拍摄。
这里的任何人都有一个关于使用这些库转换声音文件的简单示例/教程吗?我的问题专门针对C / C ++,因为这些是我目前正在学习的两种语言,所以我想继续关注它们。
编辑:有一件事我忘了提及:我正在使用* NIX系统。
答案 0 :(得分:3)
感谢大家的回复!我把它们拼凑在一起,成功地制作了一个将AIFF / WAV / etc文件转换为mp3文件的小工具。似乎对这个问题有一些兴趣,所以这就是我所做的,一步一步:
第1步: 按照James Morris的建议下载并安装libsndfile库。这个库非常容易使用 - 它唯一的缺点是它不适用于mp3文件。
第2步: 查看libsndfile附带的'examples'文件夹并找到generate.c。这给出了将任何非mp3文件转换为各种文件格式的良好工作示例。它还让我们一瞥libsndfile背后的力量。
第3步: 借用generate.c中的代码,我创建了一个只将音频文件转换为.wav文件的c文件。这是我的代码:http://pastie.org/719546
第4步: 下载并安装LAME encoder。这将安装libmp3lame库和lame命令行实用程序。
第5步: 现在你可以仔细阅读LAME的API或只是分叉和执行一个过程来跛脚将你的wav文件转换为mp3文件。
第6步:带出香槟和鱼子酱!
如果有更好的方法(我确定有)这样做,请告诉我。我个人从未见过像这样的分步路线图,所以我想我会把它放在那里。
答案 1 :(得分:2)
要在各种格式(MP3除外)之间进行转换,请检查libsndfile http://mega-nerd.com/libsndfile/
Libsndfile是一个专为此设计的库 允许阅读和写作许多人 不同的采样声音文件格式 (如MS Windows WAV和 Apple / SGI AIFF格式)通过一个 标准库接口。
在读写操作期间, 格式无缝转换 应用程序的格式之间 程序已请求或提供和 文件的数据格式。该 应用程序员可以保留 幸福地没有意识到诸如此类的问题 文件字节序和数据格式
使用起来也很简单,API遵循标准C库函数名称的样式:
http://mega-nerd.com/libsndfile/api.html
示例包含在源代码发布中。
对于实际的音频输出,将需要另一个库,已经提到的SDL可能是一个很好的起点。虽然SDL也可以读/写音频文件,但libsndfile远远优于。
答案 2 :(得分:1)
如果您对DSP和计算机感到好奇,请查看Synthesis Toolkit。好可爱。它专为学习而设计。他们在自己网站上的示例和教程非常简单明了。请记住,编写它的人写下来,这样他们就可以创建真实乐器的声学模型。因此,他们已经包含了一些只是简单的古怪而有趣的乐器。它将为您提供处理PCM声音的核心理解。而你可能会在你的时候将一些有趣的小噪音制作者混在一起。
答案 3 :(得分:0)
检查libmad http://mad.sourceforge.net“”M“peg”A“udio”D“编码器库”应该提供一个很好的例子。 另外,为了便于跨平台音频处理,请检查SDL http://www.libsdl.org/。 希望有所帮助。