【问题标题】:C++ audio output [closed]C ++音频输出[关闭]
【发布时间】:2014-12-16 13:34:32
【问题描述】:

我想在 C++ 中(异步)输出音频流。

我已经看过 hereherehere,但它已经过时并且链接已损坏。

我确信这是一项简单的任务,但我在网络上找不到任何地方可以执行此操作。我更喜欢整洁、面向 STL 的东西(例如,我可以像在屏幕上写字一样写字的设备?)。由于我使用的是 VC2013,我可以使用 windows 预编译的头文件,但更愿意避免使用它。

谢谢,

更新:

我试图与 STL 保持接近,但从外观上看,我做不到,所以我会坚持使用 Windows API。 PlaySound 不合适,因为我的数据不在文件中,而是在内存中的缓冲区中。 我曾尝试使用waveOutWrite,但我想按顺序播放两个声音,即在 t=0 开始声音 2 秒,在 t=1 开始声音 3 秒(重叠)

【问题讨论】:

  • 音频输出很简单?今年我错过了什么吗?这里没有任何标准化的方式,所以它不能是simple task。另外,您发布的链接有什么问题?我看到你使用的是windows环境,为什么不使用directx api、PlaySound等呢?
  • 首先,不,你不能像“写入屏幕”那样做,因为音频不是 C++ 的一部分,它依赖于平台,你必须使用平台特定的函数来实现工作。其次,你自己试过什么?那是如何工作(或不工作)的?和预编译的头文件无关,只是为了加快编译速度。
  • 使用 sndPlaySound(或 PlaySound)

标签: c++ audio


【解决方案1】:

输出音频的方式有很多种,这里就不一一列举了。

由于您使用的是 Windows,因此您可以使用 MS API,例如 Core AudioDirectSound

您还可以使用跨平台 API,例如 FMOD Ex

不管怎样,输出音频并不难,但也不是很简单;您应该期望大约 10 次 API 调用来获得一个体面的工作音频流示例。

【讨论】:

    【解决方案2】:

    在 Windows 下,您可以使用 WSAPI。

    以下是有效的 WSAPI 示例:

    http://msdn.microsoft.com/en-us/library/windows/desktop/dd316756%28v=vs.85%29.aspx

    在 Linux 下可以使用 alsa、pulseaudio 等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2023-03-07
      • 2018-06-11
      • 1970-01-01
      相关资源
      最近更新 更多