我正在尝试使用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);
这运行没有错误,但我还没弄明白如何将其链接到窗口或纹理,以便我可以实际看到视频。
答案 0 :(得分:0)
Windows SDK中包含许多Media Foundation Samples(C ++):
例如,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
);
答案 1 :(得分:0)
如果您可以放弃对Windows 7的支持,请使用IMFMediaEngine而不是会话。
API documentation,sample code。
请不要忘记将D3D11_CREATE_DEVICE_VIDEO_SUPPORT flag添加到D3D设备,创建IMFDXGIDeviceManager,然后将管理器的MF_MEDIA_ENGINE_DXGI_MANAGER属性传递给引擎。