我使用IMFMediaEngine播放視頻流(平滑流媒體,HLS),並可能與的PlayReady以後運行。IMFMediaEngine始終在640×480使用DirectComposition
它奇妙地使用TransferVideoFrame將視頻繪製到紋理上。但我知道這是PlayReady + DRM + 1080p視頻的要求,可以使用DirectComposition。所以我正在努力做到這一點。
這樣做的另一個好處是,視頻幀渲染獨立於應用程序,所以應用程序UI中可能的口吃或滯後不會影響視頻播放。
我能使其工作,但不幸的是,IDCompositionVisual我使用最後總是被限制爲640×480 。所以視頻必須縮小到它。然後,如果我將其轉化爲規模,我會得到一張難看的圖片。
我註冊的視覺是這樣的:
pMediaAttributes->SetUnknown(MF_MEDIA_ENGINE_PLAYBACK_VISUAL, m_pDcompVideoVisual);
如這裏記載: https://msdn.microsoft.com/en-us/library/windows/desktop/hh162850(v=vs.85).aspx
力圖打造一個前表面上和視覺SetContent不會改變任何東西。這就像視頻播放器用它自己的表面覆蓋它,640x480。將它固定在簡單的播放器上並找到真正的解決方案,並且能夠在收到事件時指定可視化表面的大小。
由於這是IMFMediaEngine中用於指定DirectComposition表面的選項,因此必須有一種方法可以使此工作成爲可能。
謝謝。我確實得到了微軟的支持,他們也說了同樣的話。出於某種原因,DirectComposition在Windows10 XboxOne上停止工作。數字版權管理的要求不是技術性的,而是明顯的非書面規則。所以程序員決不會直接操縱框架。我們正在提出更高的問題以確保仍然如此。 同時,感謝您的答案,這是正確的做法。 –