Come riprodurre file multimediali con Media Foundation
Questa esercitazione illustra come riprodurre file multimediali usando l'oggetto Media Session .
Prerequisiti
Prima di leggere questo argomento, è necessario avere familiarità con i concetti di Media Foundation seguenti:
- Sessione multimediale
- Resolver di origine
- Topologie
- Generatori di eventi multimediali
- Descrittori di presentazione
Nota
Questo argomento non descrive come riprodurre i file protetti da Digital Rights Management (DRM). Per informazioni su DRM in Microsoft Media Foundation, vedere Come riprodurre file multimediali protetti.
Panoramica
Gli oggetti seguenti vengono usati per riprodurre un file multimediale con la sessione multimediale:
- Un'origine multimediale è un oggetto che analizza un file multimediale o un'altra origine di dati multimediali. L'origine multimediale crea oggetti di flusso per ogni flusso audio o video nel file. I decodificatori converte i dati multimediali codificati in video e audio non compressi.
- Il resolver di origine crea un'origine multimediale da un URL.
- Il renderer video avanzato (EVR) esegue il rendering del video sullo schermo.
- Streaming Audio Renderer (SAR) esegue il rendering dell'audio in un altoparlante o in un altro dispositivo di output audio.
- Una topologia definisce il flusso di dati dall'origine multimediale a EVR e SAR.
- La sessione multimediale controlla il flusso di dati e invia eventi di stato all'applicazione. La figura seguente illustra questo processo.
Di seguito è riportata una struttura generale dei passaggi necessari per riprodurre un file multimediale usando la sessione multimediale:
Chiamare la funzione MFStartup per inizializzare la piattaforma Media Foundation.
Chiamare MFCreateMediaSession per creare una nuova istanza della sessione multimediale.
Usare il resolver di origine per creare un'origine multimediale. Per altre informazioni, vedere Uso del resolver di origine.
Creare una topologia che connette l'origine multimediale a EVR e SAR. In questo passaggio l'applicazione crea una topologia parziale che non include i decodificatori. Per altre informazioni, vedere Creazione di topologie di riproduzione.
Chiamare FMIMediaSession::SetTo topologia per impostare la topologia nella sessione multimediale.
Usare l'interfaccia IMFMediaEventGenerator per ottenere eventi dalla sessione multimediale.
Chiamare FMIMediaSession::Start per avviare la riproduzione. Dopo l'avvio della riproduzione, è possibile sospendere la riproduzione chiamando FMMediaSession::P ause o interrompendola chiamando FMMediaSession::Stop.
Quando l'applicazione viene chiusa, rilasciare le risorse:
- Chiamare FMIMediaSession::Close per chiudere la sessione multimediale. Questo metodo è asincrono. Al termine, la sessione multimediale invia un evento MESessionClosed . È quindi possibile eseguire i passaggi rimanenti.
- Chiamare FMIMediaSource::Shutdown per arrestare l'origine multimediale.
- Chiamare FMIMediaSession::Shutdown per arrestare la sessione multimediale.
- Chiamare MFShutdown per arrestare la piattaforma Media Foundation.
Le sezioni seguenti mostrano un esempio di codice completo:
- Passaggio 1: Dichiarare la classe CPlayer
- Passaggio 2: Creare l'oggetto CPlayer
- Passaggio 3: Aprire un file multimediale
- Passaggio 4: Creare la sessione multimediale
- Passaggio 5: Gestire gli eventi della sessione multimediale
- Passaggio 6: Controllare la riproduzione
- Passaggio 7: Arrestare la sessione multimediale
- Esempio di riproduzione sessione multimediale
Argomenti correlati