【问题标题】:Is mms:// URL supported over Media Foundation?媒体基础是否支持 mms:// URL?
【发布时间】:2013-06-10 23:22:08
【问题描述】:

我正在运行 Media Foundation 示例 MFPlayer 来呈现 URL mms://。

这将失败,错误代码为 MF_E_INVALIDMEDIATYPE

在此示例的 GetMajorType 中,类型为 MFMediaType_Image 而不是 MFMediaType_Video

  1. 为什么它以MFMediaType_Image 的形式出现,即使它是一个视频文件?

  2. 如果是MFMediaType_Image,如何处理?我试过使用相同的代码什么

它用于渲染视频,但因错误 0xc00d5214 (MF_E_TOPO_UNSUPPORTED) 而失败。

  1. 如果我在 wmplayer 中播放相同的 mms://,它不使用 Media Foundation,它使用直接显示播放相同的内容。在直接展示中,它使用我无法使用的 wmrender 源过滤器,因为没有信息如何使用它。这个 wmrender 源过滤器实际上是做什么的?如何在我的应用程序中使用/创建相同的内容?

  2. 我尝试使用 topoedit 进行渲染。它抛出错误,指出无效的媒体类型。我在 media Foundation 中阅读了 MMS 协议is supported,为什么它在 topoedit 中失败了?

【问题讨论】:

    标签: winapi directshow mms windows-media-player ms-media-foundation


    【解决方案1】:

    对于初学者:

    当您在 Windows Media Player 中播放 mms:// 时,过滤器图如下所示:

    WMP 使用 DirectShow 的事实表明它无法通过 Media Foundation 设置播放。此图上源过滤器的 CLSID 不是公开的,它是 Windows Media Player 的一个内部类:没有记录,甚至不适用于第三方应用程序。

    这给你两个选择:

    1. WM ASF Reader Filter
    2. 基于WM Format SDK 的自定义源过滤器

    我已阅读 Media Foundation 支持 MMS 协议

    MSDN 文章说 mms:// URL 可以通过翻转来协商 RTSP/HTTP 协议(​​如果可用的话!)。

    【讨论】:

    • 您好 Roman,感谢您的快速回复。只想在 Windows Media Player 中确认一件事,如果我们播放 mms:// 它可以在 Windows 7 上运行。Microsoft 使用 Direcshow 过滤器“WMRenderer 源过滤器”,它在外部不可用。微软称它是 WM ASF Reader Filter 的包装器。如何为我的应用程序使用/编写 WMRender 源过滤器? - 沙拉德