可能重复:
How to get PCM data from microphone in C++ (os Windows)?
如何从麦克风中捕获声音,并在另一台计算机上实时收听? 感谢。
答案 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)