我正在构建一个用于课堂环境的交互式语言学习应用程序。这个想法是,老师应该能够与学生交谈(=向所有学生发送音频流),让学生以两个或更多人为一组互相交谈(=音频 P2P),让学生观看来自DVD 播放器或来自媒体服务器。应该可以保存音频/视频流。教师还应该能够监控、接管或阻止学生的桌面。该平台是 Windows,它是一个桌面应用程序,没有 Web 应用程序。音频延迟应该尽可能小。可选地,应该支持坐在家里的学生,但这不是一个高优先级。
我现在已经完成了应用程序的教室控制部分(登录、监控、阻止,...),并且想要启动音频和视频部分。我一直在评估 DirectX、GStreamer 和 SIP 等几个选项,但现在我必须做出决定。
DirectX 似乎是 Windows 平台的明显选择,但它只允许我捕获和播放音频和视频。编码/解码/网络部分我应该自己做。
GStreamer 包含用于捕获/编码/流式传输/保存音频和视频流的各种选项。我已经对它进行了一些试验(ossbuild),它似乎需要大量的试验和错误才能使某些东西起作用: - 麦克风捕获(通过 directsoundsrc)在某些计算机上产生破裂的噪音 - rtpL16 有效载荷运行不佳 -通过网络流式传输原始音频仅以 8000 的采样率工作,不高于 - 在某些计算机上接收 mpeg4 视频(坏 I 帧)时有很多错误比其他计算机更糟糕 我的印象是 gstreamer 是主要目标在 linux 平台上。对 Windows 平台的开发和支持似乎有点落后。然而,它是一个强大的框架,可以为我节省数月和数年的工作。
SIP 似乎可以做任何我想做的事情,但它是针对电话和 IM 的。我不知道 SIP 有多灵活。在我看来,SIP 层只是开销,因为我已经有一个可以控制和设置所有流的中央(教师)应用程序。opalvoip 和 freeswitch 等框架的有趣部分是实际的音频/视频捕获、编码和传输。有谁知道这些有趣的部分如何与像 gstreamer 这样的框架相关联?它们是否易于集成到自定义应用程序中?它们是否足够灵活?
有没有人对所有这些技术或其中一种技术有经验?也许我还有其他选择?
非常感谢您的建议