1

首先,一些背景知识:
我正在开发 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)。

不幸的是,我几乎没有处理媒体流的经验。所以我的第一个问题是,是否可以按照我描述的方式进行流式传输?

如果可能的话,这是一种明智的方式还是我应该考虑使用一些不同的库/框架?

4

1 回答 1

1

虽然使用 DShow 和/或 WMF SDK 将为您提供最大的灵活性,但如果您的唯一目标是将视频/音频流式传输到 Silverlight,您可以使用Windows Media Encoder 9之类的东西,或者您可以使用新的 Expression Encoder。两者都支持将实时网络摄像头和麦克风流式传输到 Windows Media Server 发布点,或者它可以在本地端口上托管流。两者都有一个可通过 .NET 获得的 SDK(WME 使用 COM 互操作,而 Encoder 有一个本机 .NET API)此流与 Silverlight 和 Windows Media Player 兼容。

于 2009-08-29T03:26:15.983 回答