【问题标题】:Live streaming with DirectShow and Windows Media Format SDK使用 DirectShow 和 Windows Media Format SDK 进行直播
【发布时间】:2009-04-24 18:28:40
【问题描述】:

首先,一些背景:
我正在开发 Silverlight 3 应用程序,并希望添加对实时流媒体的支持(网络摄像头 + 麦克风作为输入)。不幸的是,Silverlight 无法访问网络摄像头或麦克风本身,因此我需要创建一个独立的应用程序来建立媒体流。我猜 Silverlight 最适合 Microsoft 技术,所以我想使用带有 WMV/WMA 编码的 ASF 格式。

在做了一些研究之后,我认为我可以这样做:

  • 似乎可以使用 DirectShow 捕获网络摄像头和麦克风输入,然后将其合并为一个“流”。
  • 要对流进行编码,我可能需要将其传递给 Windows Media Format SDK 库(MSDN 文档描述了如何将 DirectShow 与 WM ASF Writer 一起使用)。
  • 我认为应该可以使用“Network Sink”之类的东西来广播 ASF 流(无需将其写入 HDD)。
  • 我想将大量客户端连接到流会占用大量带宽,因此我应该将流发送到服务器并从那里广播。我只是不知道是否可以使用 ASF 读取器/写入器的组合来通过服务器“传递”流。我也不知道是否可以使用多播来获得类似的结果。

我打算使用 C#,尽管这可能没有太大区别,因为无论如何我都必须为 C++ 库使用一些包装器(例如 DirectShow.Net 或 SlimDX)。

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

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

【问题讨论】:

    标签: streaming directshow asf


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      相关资源
      最近更新 更多