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

标签 c++ c audio

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

  • 跛脚
  • 综合工具包
  • OpenAL
  • DirectSound

但我找不到任何这些库的简单示例。通常我不介意翻阅大量代码,但在这里我对这个主题完全不了解,所以我总觉得我在黑暗中拍摄。

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

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

最佳答案

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

第 1 步: 下载并安装libsndfile詹姆斯莫里斯建议的图书馆。这个库非常易于使用——它唯一的缺点是它不适用于 mp3 文件。

第 2 步: 查看 libsndfile 附带的“示例”文件夹并找到 generate.c。这提供了一个很好的工作示例,可以将任何非 mp3 文件转换为各种文件格式。它还让我们一窥 libsndfile 背后的强大功能。

第 3 步: 借用 generate.c 的代码,我创建了一个 c 文件,它只是将音频文件转换为 .wav 文件。这是我的代码:http://pastie.org/719546

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

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

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

如果有更好的方法(我相信有)可以做到这一点,请告诉我。我个人从未见过这样的逐步路线图,所以我想我会把它放在那里。

关于c++ - 在 C/C++ 中使用音频的绝对初学者指南?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1814531/

相关文章:

c++ - 在模板中使用 friend

c - 将字符串与指针数组分开

c - 如何删除未使用的共享内存和信号量?

c - 为什么我在执行 printf ("%f",3/2) 时得到 2.168831?

C++ 项目未编译

c++ - 将相同的值转发给两个或多个函数

c++ - 如何使用 TBB 获取任务

c++ - 什么是 "Argument-Dependent Lookup"(又名 ADL,或 "Koenig Lookup")?

ipad - 有什么方法可以让网页记录来自iPad的声音?

ios - 在 ios 中与音频播放器一起在屏幕上显示文本