首先,一些背景知识:
我正在开发 Silverlight 3 应用程序,并希望添加对实时流媒体的支持(网络摄像头 + 麦克风作为输入)。不幸的是,Silverlight 无法访问网络摄像头或麦克风本身,因此我需要创建一个独立的应用程序来建立媒体流。我猜 Silverlight 最适合 Microsoft 技术,所以我想使用带有 WMV/WMA 编码的 ASF 格式。
在做了一些研究之后,这是我认为我可以做的:
- 似乎可以使用 DirectShow 捕获网络摄像头和麦克风输入,然后将其组合成一个“流”。
- 要对流进行编码,我可能需要将其传递给 Windows Media Format SDK 库(MSDN 文档描述了如何将 DirectShow 与 WM ASF Writer 一起使用)。
- 我认为应该可以使用“网络接收器”之类的东西来广播 ASF 流(无需将其写入 HDD)。
- 我猜想将大量客户端连接到流上会占用大量带宽,所以我可能应该将流发送到服务器并从那里广播。我只是不知道是否可以使用 ASF 读取器/写入器的组合来通过服务器“传递”流。我也不知道是否可以使用多播来获得类似的结果。
我打算使用 C#,尽管这可能没有太大区别,因为无论如何我都必须为 C++ 库使用一些包装器(如 DirectShow.Net 或 SlimDX)。
不幸的是,我几乎没有处理媒体流的经验。所以我的第一个问题是,是否可以按照我描述的方式进行流式传输?
如果可能的话,这是一种明智的方式还是我应该考虑使用一些不同的库/框架?