2017-03-17 116 views
0

我使用Windows Media Foundation創建示例應用程序。使用Media Foundation播放IMFSamples

我已經使用源讀取器IMFSourceReader來讀取媒體文件,然後使用自定義MFT IMFTransform處理樣本IMFSamples後。

在MFT中我已經處理過IMFSamples,我怎樣在Windows中播放/顯示它們。我不想使用EVR進行顯示。

而且我看過一個問題:
How to play IMFMediaSample in media foundation?

按照我需要使用MFPlay播放樣本的建議,但究竟如何可以做到這一點。

在接口IMFPMediaPlayer我無法找到任何方法可以推送媒體樣本。
https://msdn.microsoft.com/en-us/library/windows/desktop/dd374329(v=vs.85).aspx

+0

如果IMFSample包含DXGI或D3D9表面可以使用DX顯示。否則,您可以使用GDI將IMFMediaBuffer顯示到一個窗口中。那是你需要的嗎? – VuVirt

+0

@VuVirt:如何查找IMFSample是否包含DXGI或D3D9曲面。我們還可以如何使用GDI在窗口中顯示IMFMediaBuffer,如果您有任何示例。我有一個自定義混音器,它在視頻樣本中混合一個圖像並生成樣本。我需要在視頻窗口中顯示此示例。 – User7723337

回答

0

IMFSample是原始數據的包裝。如果您恰好放棄了用於播放/演示的標準API產品(如EVR for video),則必須從媒體樣本對象中提取數據,否則將使用該數據,例如根據您的判斷使用其他API。對於可視化,您可以選擇其他的Windows API:DirectX,DirectShow,傳統的DirectDraw,GDI,以及其他可視化應用程序。 GDI +,Direct2D等。

IMFSample不立即被其他API立即接受,因爲它不是它的設計目的。在媒體基礎API EVR是爲演示而設計的,而EVR就是你應該使用的。

The video sample object is a specialized implementation of the IMFSample interface for use with the Enhanced Video Renderer (EVR)...

相關問題