Windows 平台上的音频/视频流
我正在构建一个在课堂环境中使用的交互式语言学习应用程序。这个想法是,教师应该能够与学生交谈(=向所有学生发送音频流),让学生以两人或多人为一组互相交谈(=音频 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 这样的框架相关联?它们是否易于集成到自定义应用程序中?它们足够灵活吗?
有人拥有所有或其中一项技术的经验吗?也许我还可以考虑其他选择?
非常感谢您的建议
I'm building an interactive language learning application to be used in a classroom environment. The idea is that a teacher should be able to talk to the students (=audio stream to all students), let students talk to each other (= audio P2P) in groups of two or more, let students watch a video coming from a the DVD player or coming from a media server. It should be possible to save the audio/video streams. The teacher should also be able to monitor, take-over or block the desktop of the students. The platform is Windows and it's a desktop application, no web application. The audio delay should be as minimal as poosible. Optionally a student sitting at home should be supported, but it's not a high priority.
I am now finished with the classroom control part of the application (login, monitor, block, ...) and want to start the audio and video part. I've been evaluating several options like DirectX, GStreamer and SIP but now I have to make a decision.
DirectX seems an obvious choice for the Windows platform, but it only lets me capture and playback audio and video. The encoding/decoding/network part I should do myself.
GStreamer contains all kinds of options to capture/encode/stream/save audio and video streams. I've experimented a bit with it (ossbuild) and it does seem to involve a lot of trial and error to make something work:
- microphone capture (via directsoundsrc) produces cracking noises on some computers
- rtpL16 payloader didn't work well
- streaming raw audio over the network only working at a sampling rate of 8000, no higher
- there are a lot of errors when receiving mpeg4 video (bad I-frame), on some computers worse than others
It is my impression that gstreamer is primary targetted at linux platforms. Development and support for the Windows platform seems to be a little behind. Nevertheless it's a powerful framework that could save me months and years of work.
SIP seems to be able to do everything I want, but it is targeted towards telephony and IM. I don't know how flexible SIP is. It seems to me that the SIP layer would just be overhead as I already have a central (teacher) application that can control and setup all the streams. The interesting parts of frameworks like opalvoip and freeswitch are the actual audio/video capture, the encoding and transmission. Does anyone know how these interesting parts relate a framework like gstreamer? Are they easy to integrate into a custom application? Are they flexible enough?
Does anyone have experience with all or one of these technologies? Maybe there are even other options I can look at?
Many thanks for your advice
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的选择可能很适合您。
首先,您可以使用媒体基础 http://msdn .microsoft.com/en-us/library/ms697062%28v=VS.85%29.aspx 这链接了一些顶级介绍。您可以使用 API 来管理源解码器和转码器。它提供抽象的低级接口来满足需要。
其他选项是使用 WPF mediaelement,此链接提供了有关如何使用它的一些指导 http://www.silverlightshow.net/items/Two-Great-WPF-Video-Samples-Online.aspx。
您可能还想查看 Silverlight 5 的浏览器外功能 http://www.microsoft.com/silverlight /future/ 目前处于测试阶段,预计将于 2011 年 2 月推出
You have quite few options which might work well for you.
First you may use Media Foundation http://msdn.microsoft.com/en-us/library/ms697062%28v=VS.85%29.aspx this links some top level introduction. You get API to manage source decoders and transcoders. It provides abstracted as well as low level interface to meet the need.
Other option is to use WPF mediaelement, this link give some pointer on how to use it http://www.silverlightshow.net/items/Two-Great-WPF-Video-Samples-Online.aspx.
You may also want to review out of browser feature of Silverlight 5 http://www.microsoft.com/silverlight/future/ its currently in beta and expected to be available 2H 2011
您是否考虑过为 Big Blue Button 项目做出贡献?
Have you considered contributing to the Big Blue Button project?