【问题标题】:cross-platform, open libraries for C#/Silverlight/.NET audio/video real time streaming用于 C#/Silverlight/.NET 音频/视频实时流的跨平台开放库
【发布时间】:2011-06-15 10:04:04
【问题描述】:
我正在寻找一个用于将会议 a/v 流式传输到服务器的库,该库将多播到所有其他客户端。我看过 SIP 和 openh323,对于 voip 电话来说,两者似乎都太专业了。
我希望应用程序是跨平台 Silverlight 应用程序(mac 和 windows),所以我不认为我可以使用 DirectSound,对吧?
提前致谢。
【问题讨论】:
标签:
c#
silverlight
libraries
audio-streaming
【解决方案1】:
您的问题可能混合了苹果和橙子。 DirectSound 提供了访问声卡的 API; H.323 和 SIP 是拨打电话的标准。
Silverlight 4 原生提供了几个与 DirectSound 大致相当的简化 API,以便您可以访问麦克风、声卡和网络摄像头。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ff602282(VS.95).aspx。
但是一旦你得到了声音,你仍然需要对其进行编码、传输、混合、分发,然后接收。这就是它变得复杂的地方。 Flash 本机支持所有这些; Silverlight 没有。目前最好的开源实现是由 SocketCoder 整合的,可在 CodePlex 上获得,但它使用专有的信号/流协议、专有且效率非常低的视频编解码器和专有媒体服务器。
据我所知,在 Silverlight 中做您想做的事情的最佳选择是 StreamCoders 提供的闭源解决方案。它不是开源的,但它支持一套合理的开放标准,这意味着您可能能够使用第三方开源媒体服务器。当然,您需要进行测试以确保它是您所需要的。
或者,您可以尝试将任何各种开源解决方案移植到 C#。我用 Speex 预处理器完成了这个:它很复杂,但没有你想象的那么难。您大概可以使用 openH323 和现有的各种基于 C 的编解码器做类似的事情。您甚至可以尝试修改 FluorineFx (http://www.fluorinefx.com/) 的 Silverlight RTMP 实现来做您需要做的事情。当然,这一切都不是一件简单的事情。