【问题标题】:Audio support for programming languages对编程语言的音频支持
【发布时间】:2012-07-29 10:27:51
【问题描述】:

我想开始一个爱好项目,专注于以某种方式显示文件夹中的音频文件,并且能够播放此类音频文件并显示播放的基本控制选项。但是,我正在努力为此寻找合适的编程语言。

显示部分不应该太难,并且可能在大多数编程语言中都可以完成。 音频部分是我最关心的,因为它不是项目的主要重点,应该只做有限的事情(所以它不应该太难)而且我对声音支持一无所知在我目前知道的编程语言中。 (Java、C 和 C++)

特别是我希望能够做这些事情:

  1. 播放声音文件
  2. 停止/暂停正在播放的歌曲
  3. 调整音量
  4. 显示一个显示歌曲中当前位置的栏

大多数文件将是 .mp3 文件,但能够处理其他格式无疑是一个优势。因为这只是一个小项目,所以如果它只在 Windows 上运行也没关系。可扩展性很好,但不是必需的。

如果能够以不太复杂的方式完成这些简单的事情以及个人经验,那么对音频支持/编程语言的音频库(我一直在寻找新的东西)有一个小的概述会很好。

通过这种方式,我希望更好地了解哪种编程语言最适合我的项目。 (我非常希望不必在项目中途更改语言)

--

编辑: 如果第一部分成功,这仅适用于项目的后期阶段:我将要更改显示的音频文件的文件名。 (使它们遵循特定的格式)

【问题讨论】:

  • 在浏览器中运行的网络应用怎么样?你可以学习 HTML5 + Javascript,这些都是当今很好的技能。有一个
  • 实际上听起来不错,但从性能 POV 来看,我不确定它是否可行。我要显示的音频文件夹的大小(并且经常同步!)为 100Gb,典型的“歌曲”大约为 100-200Mb。我忘了提到的是,在稍后阶段,我想对歌曲的文件名进行一些实际处理(使文件名遵循统一的格式),我认为这是不可能的。我将在 :) 中编辑它
  • 100-200Mb,那是什么歌? + 我不明白为什么您以后不能重命名文件,它们将被放置在您的服务器上,您可以随心所欲,人们一直在重命名网络文件!只要您相应地更新您的 HTML 页面就没有问题。
  • + 如果这是一个您愿意与他人分享的项目,那么您需要一个网络服务器 = 在一个地方同步,任何人都可以立即使用。
  • 实际上有很多用于音频处理和播放的 C/C++ 库。您所要求的大部分内容也只是您身边的一些处理。例如,通过了多少百分比的音频。你试过在网上搜索这样的图书馆吗?

标签: audio programming-languages


【解决方案1】:

我没有编写太多音频处理程序,但我知道其中有很多用于 C 和 C++。也许对于 Java 也是如此,但我不知道 Java。我曾在游戏中使用SDL 的音频,但它没有那么多功能,我不推荐它。

this question 要求使用 C 语言库,SO 提出了一些类似的问题。你可能想看看那些。

您还需要寻找加载不同文件类型的库。至少 SDL 只打开 .wav 文件,我相信大多数播放库都会支持。对于 MP3,您很可能需要一个额外的库。我知道Audacity 使用LAME Mp3 所以我猜这应该不错。

您想要的一些功能也可以自己实现。例如,知道音乐的长度和你已经阅读的数量,你就会知道你在音频中的距离。调整音量也是一种乘法(在最简单的情况下),如果库不提供,您可以对音频数据执行此操作。

一个很好的选择似乎是PortAudio,也就是used by Audacity,并且在我上面提到的问题的接受答案中也推荐。

【讨论】:

  • 非常感谢。看起来我将使用 C++ 并开始查找您提到的库。
  • 更新:wwise 出名了!
【解决方案2】:

我用 Java 和 C++ 完成了音频应用程序。 Java 开发速度更快,因为它是一种更强大的语言并且具有垃圾收集功能,但 JavaSound 是一个非常糟糕的音频解决方案。当然,还有 FFMPEG 和其他东西的包装器,所以你可以让很多东西工作。下面是一个 Java 音频应用示例:http://www.indabamusic.com/help/mantis

OTOH,C++ 为您提供大量控制、低延迟和丰富的库。 (另一个答案提到了 Portaudio,它确实很棒。)但是您肯定会发现它的开发周期也更长。

你当然可以用任何一种语言做任何你想做的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多