我正在使用Media Foundation框架处理自定义视频播放器。 目前,我可以使用IMFMediaSession播放,暂停,停止或更改播放速率。 我也可以使用IMFSourceReader检索单个帧。
我目前能够将帧(IMFSample)渲染到窗口区域(HWND),但仅限于媒体会话停止时。 我的目标是能够在媒体会话暂停时呈现框架。 (=使用源阅读器而不是媒体会话进行帧步进)
我使用GetDC,CreateBitmap,SelectObject和BitBlt来渲染我的帧。 我尝试使用directd3d接口用纯色填充它(我对direct3d很新,所以遵循基本教程)但它没有用。 这就是我所做的:使用MR_VIDEO_ACCELERATION_SERVICE检索IDirect3DDeviceManager9,执行OpenDeviceHandle,LockDevice,Clear,Begin / EndScene和Present。
这些调用都没有失败,但我怀疑EVR仍在绘制最后一帧。 基本上,我希望EVR在我想要时停止重新绘制它的框架,当然,我需要重新启用它的绘制过程。
知道怎么做吗? 感谢
答案 0 :(得分:0)
我终于开始工作了。 如果您有兴趣,请执行以下操作:
要隐藏以前的内容,请不要设置alpha以使其不透明。 调用IMFVideoMixerBitmap :: ClearAlphaBitmap以获取以前的内容。
瞧!