【发布时间】:2012-10-16 20:31:33
【问题描述】:
【问题讨论】:
-
你试过什么?你至少试着用谷歌搜索一下吗?在 stackoverflow,我们帮助您解决问题,而不是为您设计系统。
-
我尝试使用 WaveIn 命令,但无法处理:msdn.microsoft.com/en-us/library/aa452431.aspx
【问题讨论】:
最简单的方法是使用 Win32 API 提供的waveIn 函数。
您可以阅读Recording and Playing Sound with the Waveform Audio Interface 了解概览,或者直接深入了解API documentation。
【讨论】:
要录制,可以使用win32API中的waveIn函数。
但是在发送之前,请记住,通过waveIn函数进入字节缓冲区的数据是PCM格式,它很容易阻塞您的网络。您必须先将 PCM 数据压缩为 aLaw 或 uLaw 格式,然后才能通过 WinSOCK API 进行隧道传输。否则,它肯定不会是“实时”提要,也会占用大量带宽。
【讨论】:
另一个简单的音频输入/输出解决方案是portaudio。除了便携之外,它还非常易于使用。
要通过网络获取音频数据,正如另一个答案所指出的那样,您应该知道您的数据是巨大的。但是,一个好的起点是尝试发送原始数据。一旦你能做到这一点,你就可以担心压缩它——你需要一步一步地解决一个复杂的问题。最终,您可能希望对原始音频数据包使用 UDP。
用于发送音频、视频、聊天和其他数据的一个很好的库是 google 的 libjingle,它实现了 google talk 协议。它解决了 UDP 与 TCP、防火墙等方面的许多问题。无论如何,您可能会发现它有点难以使用,因为它有很多代码,而且您需要使用您可能不熟悉的 XMPP。此外,它是 C++,而不是 C。它还需要一些服务器中介,尽管您可以使用 google 的服务器。如果这对你不起作用,你可以做一些本土的事情,但你可能会发现你需要做一些工作才能把它做好。
我确信有一些库可以帮助您。尝试在谷歌上搜索诸如“internet telephony library c”和“voip c library”之类的东西(即使这不是,在最严格的意义上,voip)
【讨论】: