C - 如何从麦克风中捕获声音?

时间:2012-10-16 20:31:33

标签: c winapi audio capture

  

可能重复:
  How to get PCM data from microphone in C++ (os Windows)?

如何从麦克风中捕获声音,并在另一台计算机上实时收听? 感谢。

3 个答案:

答案 0 :(得分:3)

最简单的方法是使用Win32 API提供的waveIn函数。

您可以阅读Recording and Playing Sound with the Waveform Audio Interface了解概述,或者直接浏览API documentation

答案 1 :(得分:0)

要录制,您可以在win32API中使用waveIn函数。

但在发送之前,请记住通过waveIn函数获取的字节缓冲区中的数据是PCM格式,它很容易堵塞您的网络。在将数据通过WinSOCK Apis进行隧道传输之前,必须首先将PCM数据压缩为aLaw或uLaw格式。否则,它肯定不会是“实时”馈送,也占用大量带宽。

答案 2 :(得分:0)

音频i / o的另一个简单解决方案是portaudio。除便携外,它非常易于使用。

要通过网络获取音频数据,正如另一个答案所指出的那样,您应该知道您的数据非常庞大。但是,一个好的起点是尝试发送原始数据。一旦你能做到这一点,那么你可以担心压缩它 - 你需要一步一步地解决一个复杂的问题。最终,您可能希望将UDP用于原始音频数据包。

用于发送音频,视频,聊天和其他数据的好图书馆是Google libjingle,它实现了Google Talk协议。它已经解决了UDP与TCP,防火墙等的许多问题。你可能会发现它有点难以使用,因为它是很多代码,你需要使用你可能不熟悉的XMPP。此外,它是C ++,而不是C.它还需要一些服务器中介,尽管你可以使用谷歌的服务器。如果这对你不起作用,你可以做一些本土的事情,但你可能会发现你需要做一些工作才能做到这一点。

我相信有一些图书馆可以帮到你。尝试谷歌搜索“互联网电话库c”和“voip c库”(尽管这不是,严格意义上说,voip)