2013-02-12 3 views
0

Я пытаюсь использовать Windows Media Foundation для воспроизведения простого видео.Воспроизведение видео из файла с помощью Microsoft 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

Windows SDK имеет ряд Media Foundation Samples (C++) в:

  • \ Samples \ мультимедийное \ 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 
     ); 
+0

спасибо за это! но arent MPlayer и MPlayer2 не рекомендуется? – clamp

+0

На новом API (сеанс мультимедиа) вы подключаете свой ветровой поток через 'MFCreateVideoRendererActivate', см. [Создание топологий воспроизведения] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms701605% 28v = vs.85% 29.aspx) (внизу). –

+0

спасибо, да, я бы хотел использовать только новый API. – clamp