我想写一些像Skype,即我有一台计算机上的一个不断的音频流,然后重新压缩它在一个适合于一个潜在的互联网连接的格式,接收它另一端并播放它。我们还假设互联网连接是相当现代和快速的,即DSL或类似的,通过电话等的连接速度不慢。涉及的计算机也将是相当现代的(2GHz或更高频率的双核英特尔CPU)。如何通过互联网流半音视频
我知道如何处理机器上的音频。我不知道的是如何以有效的方式传输音频。
的挑战是:
我想获得跨线良好的音频质量。
流应该被接收而没有丢弃。然而,该流可能会稍微延迟接收(第二个延迟是可以接受的)。我想运输软件可以首先确定平均(和最大)延迟,然后启动流并告诉接收器在开始播放音频之前等待最大延迟。因此,如果等待时间没有变得更高,那么整个数据流将在另一侧播放而不会出现口吃或掉落。
如果由于意外IP延迟或堵塞,流不得到切断,我希望能够注意到这一点,这样我可以采取行动(如中止流),并最终启动一个新的传输。
如果我想要使用现成的软件进行压缩和传输,我的选择是什么?我真的无意编写我自己的音频压缩引擎。 OTOH,我打算在一个垂直市场上出售这个解决方案,这意味着我可以承受每个拷贝几美元的许可费,但不是100美元。
我想最简单的解决方案是打开一个TCP流,来回发送几个包来确定它们的运行时间(或者甚至使用UDP),然后使用结果作为我的最大延迟值,然后简单地以原始形式(未压缩的16位立体声)播放音频数据,以及通过TCP连接的时间码。接收器读取数据并以预定延迟播放。这可能只适用于我期望的快速连接类型。
我只是想知道是否有更好的解决方案来达到这个目标,具有更好的性能(更低的延迟)和更少的数据(压缩)。
顺便说一句,我首先尝试在OS X上实现这一点,但如果它证明是成功的,也可能希望在Windows上实现。
谢谢,这应该让我开始更多地了解我的选择 – 2008-12-23 23:25:58