0

我正在尝试使用 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);

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

4

2 回答 2

1

Windows SDK 有许多媒体基础示例(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
        );
于 2013-02-12T09:13:57.793 回答
1

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

API 文档示例代码

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

于 2018-12-26T15:01:24.747 回答