Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C/C+中使用音频的绝对初学者指南+;?_C++_C_Audio - Fatal编程技术网

C++ 在C/C+中使用音频的绝对初学者指南+;?

C++ 在C/C+中使用音频的绝对初学者指南+;?,c++,c,audio,C++,C,Audio,我一直对音频转换软件很好奇,但我从来没有从初学者的角度看到一个合适的解释,比如如何编写一个简单的程序,将mp3文件转换成wav。我不是问任何涉及的复杂算法,只是一个使用简单库的小例子。通过搜索,我找到了几个名字,包括: 跛脚的 综合工具包 开放的 直接声音 但我找不到这些库的简单示例。通常我并不介意费力地阅读大量的代码,但在这里,我对这个主题完全不了解,所以我总是觉得自己在黑暗中拍摄 这里有没有关于使用这些库转换声音文件的简单示例/教程?我的问题是专门针对C/C++的,因为这是我目前正在学习

我一直对音频转换软件很好奇,但我从来没有从初学者的角度看到一个合适的解释,比如如何编写一个简单的程序,将mp3文件转换成wav。我不是问任何涉及的复杂算法,只是一个使用简单库的小例子。通过搜索,我找到了几个名字,包括:

  • 跛脚的
  • 综合工具包
  • 开放的
  • 直接声音
但我找不到这些库的简单示例。通常我并不介意费力地阅读大量的代码,但在这里,我对这个主题完全不了解,所以我总是觉得自己在黑暗中拍摄

这里有没有关于使用这些库转换声音文件的简单示例/教程?我的问题是专门针对C/C++的,因为这是我目前正在学习的两种语言,所以我想继续关注它们

编辑:有一件事我忘了提:我使用的是*NIX系统。

检查libmad“m”peg“a”udio“D”ecoder库,应该是一个很好的例子。 此外,为了便于跨平台音频处理,请检查SDL。
希望能有所帮助。

如果您对DSP和计算机感兴趣,请查看合成工具包。它很甜。它是为学习而设计的。他们在网站上提供的示例和教程非常简单和全面。记住,写这首歌的人,写这首歌是为了他们能创造出真实乐器的声学模型。因此,它们包含了一些非常古怪但很有趣的乐器。它将使您对PCM声音处理有一个基本的了解。你可能会在你工作的时候找到一些有趣的小噪音制造者


要在各种格式(MP3除外)之间进行转换,请选中libsndfile

Libsndfile是一个库,旨在 允许阅读和书写许多内容 不同的采样声音文件格式 (如MS Windows WAV和 Apple/SGI AIFF格式)通过一个 标准库接口

在读写操作期间, 格式可以无缝转换 在格式和应用程序之间 程序已请求或提供和 文件的数据格式。这个 应用程序程序员可以留下来 幸福地不知道的问题,如 文件结尾和数据格式

它的使用也很简单,API遵循标准C库函数名的样式:

源分布中包含了示例


对于实际的音频输出,需要另一个库,前面提到的SDL可能是一个很好的起点。虽然SDL也可以读/写音频文件,但libsndfile远远优于它。

感谢大家的回复!我把它们拼凑在一起,成功地制作了一个小实用程序,可以将AIFF/WAV/etc文件转换成mp3文件。似乎有人对这个问题感兴趣,所以这里是我所做的,一步一步:

第1步: 按照James Morris的建议下载并安装库。这个库非常容易使用——它唯一的缺点是不能处理mp3文件

第二步: 查看libsndfile附带的“examples”文件夹,找到generate.c。这是一个很好的将任何非mp3文件转换为各种文件格式的工作示例。这也让我们一窥libsndfile背后的力量

第三步: 借用generate.c中的代码,我创建了一个c文件,它只是将音频文件转换为.wav文件。这是我的密码:

第4步: 下载并安装。这将安装libmp3lame库和lame命令行实用程序

第五步: 现在,您可以仔细阅读LAME的API,或者只需fork&exec一个进程来将wav文件转换为mp3文件

第6步:拿出香槟和鱼子酱


如果有更好的方法(我肯定有),请让我知道。我个人从未见过像这样的一步一步的路线图,所以我想我应该把它放在那里

这是一个非常困难的问题,因为您通常不会抽象地处理音频,而是希望播放音频,这取决于操作系统API。必须编写API来处理厨房水槽。我让这个API正常工作,但示例创建了.PCM文件,我不知道如何播放。superuser.com上的相关问题:更新:我可以通过进入Project>import Raw Data在Audacity中导入PCM文件。