2012-10-16 97 views

回答

0

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

但在发送前,请记住,数据通过waveIn功能字节的缓冲区得到的是PCM格式,否则很容易堵塞您的网络。您必须先将PCM数据压缩成法律或uLaw格式,然后再通过WinSOCK Apis进行隧道传输。否则,它肯定不会是一个“实时”馈送,也会占用大量带宽。

+0

我怎么能压缩的PCM数据到A-规则或ULAW –

+0

HTTP ://www.codeproject.com/Articles/14237/Using-the-G711-standard请参阅这里了解开源实现。尽管它在C#中可以转换为C/C++ –

0

音频输入/输出的另一个简单解决方案是portaudio。除了便携式之外,它的使用非常简单。

通过网络获取音频数据,作为另一个答案指出,你应该知道你的数据是巨大的。然而,开始的好地方是尝试发送原始数据。一旦你可以做到这一点,那么你可以担心压缩它 - 你需要一次解决一个复杂的问题。最终,您可能会想要使用UDP作为原始音频数据包。

好的库发送音频,视频,聊天等数据是谷歌的libjingle它实现了谷歌talk协议。它已经解决了UDP与TCP,防火墙等许多问题。您可能会发现它有点难以处理,因为它有很多代码,您需要使用您可能不熟悉的XMPP。此外,它是C++,而不是C.它也需要一些服务器中介,虽然你可以使用谷歌的服务器。如果这不适合你,你可以做一些家庭成长的事情,但你可能会发现你需要做一些适当的工作才能做到。

我相信有一些图书馆可以帮助你。尝试使用Google的东西,如“互联网电话库c”和“VOIP C库”(尽管这不,严格意义上,VOIP)

相关问题