【问题标题】:Playing a video from file using Microsoft Media Foundation使用 Microsoft Media Foundation 从文件播放视频
【发布时间】:2013-02-12 09:07:21
【问题描述】:

我正在尝试使用 Windows Media Foundation 播放一个简单的视频。

不幸的是,关于如何执行此操作的文档似乎很少。

实际上我正在使用sharpDX 绑定来完成此操作。但我也会对 C++ 示例感到高兴。

这是我到目前为止尝试遵循本教程的内容 http://msdn.microsoft.com/en-us/library/windows/desktop/ms703190(v=vs.85).aspx

        MediaManager.Startup();

        MediaSession mediaSession;
        MediaFactory.CreateMediaSession(null, out mediaSession);

        SourceResolver sourceResolver;
        MediaFactory.CreateSourceResolver(out sourceResolver);

        ComObject comObject;
        ObjectType objectType;
        sourceResolver.CreateObjectFromURL("Jack.mp4", (int) SourceResolverFlags.None, null, out objectType, out comObject);

        Topology topology;
        MediaFactory.CreateTopology(out topology);

这运行没有错误,但我还没有想出如何将它链接到窗口或纹理,以便我可以实际看到视频。

【问题讨论】:

    标签: .net ms-media-foundation


    【解决方案1】:

    Windows SDK 中有多个Media Foundation Samples(C++)在:

    • \Samples\multimedia\mediafoundation

    例如,MFPlayer2 Sample 创建将其链接到视频窗口的播放器:

    HRESULT MFPlayer2::Initialize(HWND hwndVideo)
    {
       HRESULT hr = S_OK;
    
        SafeRelease(&m_pPlayer);
    
        hr = MFPCreateMediaPlayer(
            NULL,
            FALSE,          // Start playback automatically?
            0,              // Flags
            this,           // Callback pointer   
            hwndVideo,      // Video window
            &m_pPlayer
            );
    

    【讨论】:

    • 在较新的 API(媒体会话)上,您可以通过MFCreateVideoRendererActivate 连接您的windnow,请参阅Creating Playback Topologies(在底部)。
    • ..这对我来说相当复杂且难以理解。所有这些拓扑、流描述符、源解析器等......
    • 这是你切换到 DirectShow API 的地方(这不是简单的,但仍然更广泛使用)。
    【解决方案2】:

    如果您可以放弃对 Windows 7 的支持,请使用 IMFMediaEngine 而不是会话。

    API documentation, sample code.

    不要忘记将 D3D11_CREATE_DEVICE_VIDEO_SUPPORT flag 添加到您的 D3D 设备,创建 IMFDXGIDeviceManager,并将管理器传递给 MF_MEDIA_ENGINE_DXGI_MANAGER 属性中的引擎。

    【讨论】:

      猜你喜欢
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多