可能重复:
How to get PCM data from microphone in C++ (os Windows)?C - 如何从麦克风捕捉声音?
如何从麦克风捕捉声音,听到它在另一台计算机上生活? 谢谢。
可能重复:
How to get PCM data from microphone in C++ (os Windows)?C - 如何从麦克风捕捉声音?
如何从麦克风捕捉声音,听到它在另一台计算机上生活? 谢谢。
的simplist的方法是使用由Win32 API提供的waveIn功能。
你可以阅读Recording and Playing Sound with the Waveform Audio Interface作为概述,或者只是潜入API documentation。
要记录,您可以在win32API中使用waveIn函数。
但在发送前,请记住,数据通过waveIn功能字节的缓冲区得到的是PCM格式,否则很容易堵塞您的网络。您必须先将PCM数据压缩成法律或uLaw格式,然后再通过WinSOCK Apis进行隧道传输。否则,它肯定不会是一个“实时”馈送,也会占用大量带宽。
我怎么能压缩的PCM数据到A-规则或ULAW –
HTTP ://www.codeproject.com/Articles/14237/Using-the-G711-standard请参阅这里了解开源实现。尽管它在C#中可以转换为C/C++ –
音频输入/输出的另一个简单解决方案是portaudio。除了便携式之外,它的使用非常简单。
通过网络获取音频数据,作为另一个答案指出,你应该知道你的数据是巨大的。然而,开始的好地方是尝试发送原始数据。一旦你可以做到这一点,那么你可以担心压缩它 - 你需要一次解决一个复杂的问题。最终,您可能会想要使用UDP作为原始音频数据包。
好的库发送音频,视频,聊天等数据是谷歌的libjingle它实现了谷歌talk协议。它已经解决了UDP与TCP,防火墙等许多问题。您可能会发现它有点难以处理,因为它有很多代码,您需要使用您可能不熟悉的XMPP。此外,它是C++,而不是C.它也需要一些服务器中介,虽然你可以使用谷歌的服务器。如果这不适合你,你可以做一些家庭成长的事情,但你可能会发现你需要做一些适当的工作才能做到。
我相信有一些图书馆可以帮助你。尝试使用Google的东西,如“互联网电话库c”和“VOIP C库”(尽管这不,严格意义上,VOIP)
你尝试过什么?你有没有至少尝试谷歌这个?在stackoverflow我们帮助你解决一个问题,而不是设计你的系统。 –
我试图用WaveIn命令,但是无法与他们处理:http://msdn.microsoft.com/en-us/library/aa452431.aspx –