使用 C++ 教程和示例代码进行音频流传输 [关闭]
Posted
技术标签:
【中文标题】使用 C++ 教程和示例代码进行音频流传输 [关闭]【英文标题】:Audio streaming using C++ tutorial and sample code [closed] 【发布时间】:2012-07-19 17:20:15 【问题描述】:我想学习音频流的基础知识。特别是,我想学习如何从计算机麦克风捕获音频,并实时流式传输,以便其他用户可以实时收听。我想在 Windows 上做。
是否有任何好的教程来解释它是如何完成的,以及一些我可以查看更多细节的示例 C++ 代码?
我还听说 ASIO 提供了一个低延迟库,所以我对此很感兴趣。
【问题讨论】:
一个好的开始是说明您的目标平台。由于 C++ 没有用于声音的原生 API,因此您将不得不依赖第三方库,其中大部分是特定于平台的。 谢谢,我对 Windows 和 ASIO 库很感兴趣。但更重要的是一个解释音频流是如何完成的教程,例如什么是服务器或套接字等。 这样的问题结束是怎么回事?这是一个严重相关的问题。在 PC 平台上用于实时音频的良好工作示例代码是一个严重的持续问题。 【参考方案1】:如果您使用的是 Windows,也许 here 是一个不错的起点?
阅读该页面并查看WASAPI。
您可以使用IAudioCaptureClient
直接从设备捕获原始音频
我参与了涉及实时音频流的项目,并使用aac 作为音频格式,使用Live555 作为流媒体库。这些可能是一个很好的起点。
【讨论】:
谢谢,我想知道是否有一个教程解释了音频流是如何完成的,还有一些示例 C++ 代码展示了它是如何实现的? 看来这本书确实不错。而且水平也足够低,可以学到很多跨平台的东西。 amazon.com/Learning-Core-Audio-Hands-On-Programming/dp/…我可能错了,如果有 Windows 专用的书也一样好,请告诉我! 你的问题很宽泛 TJ1。如果您想了解更多关于套接字和服务器的信息,听起来您应该首先使用winsock
开始寻找一些基本的网络教程,也许在这里? johnnie.jerrata.com/winsocktutorial
否则Live555
是开源的,如果你想爬取一些源代码。学习网络基础知识,然后开始考虑流式传输。
@ChrisBarry 感谢本书的建议,我会看一下本书的内容,如果有 Windows 等价物,我会告诉你。【参考方案2】:
对于在 Windows 上录制和播放音频,我推荐the waveform audio API。您有一个示例 here 用于记录来自麦克风的数据。
对于流媒体部分,如果你想使用已经可用的多媒体流媒体服务器,我会推荐icecast,它的API lib。
如果你想自己实现网络流,那么你可以使用asio lib。你有一些例子here。
对于客户端的音频播放,有使用波形APIhere的教程。
【讨论】:
谢谢,这很有用,我会看看你的建议。 没有。 MMIO 有可怕的延迟。甚至不值得一看,最近的操作系统也没有相关改进。 Windows 上的 MMIO API 对实时音频来说是一场灾难。很少有低于 100 毫秒的延迟。不值得追求。 WASAPI 应该解决 Windows 的实时音频问题,但无法在 Windows 7 平台上提供任何低于 30 毫秒延迟的东西。有一些证据表明 WASAPI 在 Windows 8 上工作得更好。但我在让它可靠地工作时遇到了严重的问题。如果您追求低延迟音频,ASIO 可能仍然是要走的路。很遗憾。 Microsoft 从未提供过可靠的实时音频样本。一个严重的持续问题。以上是关于使用 C++ 教程和示例代码进行音频流传输 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章