Freigeben über


IMFMediaSource-Schnittstelle (mfidl.h)

Implementiert von Medienquellobjekten.

Medienquellen sind Objekte, die Mediendaten generieren. Beispielsweise können die Daten aus einer Videodatei, einem Netzwerkdatenstrom oder einem Hardwaregerät wie einer Kamera stammen. Jede Medienquelle enthält einen oder mehrere Datenströme, und jeder Datenstrom liefert Daten eines Typs, z. B. Audio oder Video.

Vererbung

Die IMFMediaSource-Schnittstelle erbt von IMFMediaEventGenerator. IMFMediaSource verfügt auch über diese Typen von Mitgliedern:

Methodik

Die IMFMediaSource-Schnittstelle hat diese Methoden.

 
IMFMediaSource::CreatePresentationDescriptor

Ruft eine Kopie der Präsentationsbeschreibung der Medienquelle ab. Anwendungen verwenden den Präsentationsdeskriptor, um Datenströme auszuwählen und Informationen zum Quellinhalt abzurufen.
IMFMediaSource::GetCharacteristics

Ruft die Merkmale der Medienquelle ab.
IMFMediaSource::P ause

Hält alle aktiven Datenströme in der Medienquelle an.
IMFMediaSource::Shutdown

Beendet die Medienquelle und gibt die verwendeten Ressourcen frei.
IMFMediaSource::Start

Startet, sucht oder startet die Medienquelle neu, indem angegeben wird, wo die Wiedergabe gestartet werden soll.
IMFMediaSource::Stop

Beendet alle aktiven Datenströme in der Medienquelle.

Bemerkungen

In Windows 8 wird diese Schnittstelle mit IMFMediaSourceEx erweitert.

Für einige Gerätequellen, z. B. Kameras oder Mikrofone, implementiert die IMFMediaSource auch das IKsControl , das von Benutzermodusanwendungen verwendet werden kann, um KSPROPERTY-, KSEVENT- und KSMETHOD-Vorgänge an den zugrunde liegenden Gerätetreiber auszuweisen.

Hinweis

Diese Schnittstelle ist optional und ist möglicherweise nicht verfügbar. Wenn diese Schnittstelle nicht verfügbar ist, gibt QueryInterface E_NOINTERFACE zurück.

Rufen Sie eine Instanz von IMFMediaSource ab, indem Sie IMFSourceResolver::CreateObjectFromByteStream, IMFSourceResolver::CreateObjectFromURL oder die asynchronen Versionen dieser Methoden aufrufen.

Das folgende Beispiel zeigt, wie Sie MITHILFE von IMFSourceResolver eine Instanz von IMFMediaSource aus einem IMFByteStream abrufen.

#include <wil.h>
#include <mfplat.h>
#include <mfidl.h>

HRESULT CreateMediaSourceFromStream(_In_ IMFByteStream* stream, _COM_Outptr_ IMFMediaSource** source)
{
    *source = nullptr;

    wil::com_ptr_nothrow<IMFSourceResolver> sourceResolver;
    RETURN_IF_FAILED(MFCreateSourceResolver(&sourceResolver));

    MF_OBJECT_TYPE objectType;
    wil::com_ptr_nothrow<IUnknown> sourceUnknown;
    RETURN_IF_FAILED(sourceResolver->CreateObjectFromByteStream(stream, nullptr, MF_RESOLUTION_MEDIASOURCE, nullptr, &objectType, &sourceUnknown));

    RETURN_IF_FAILED(sourceUnknown.copy_to(IID_PPV_ARGS(source)));
    return S_OK;
}

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows Vista [Desktop-Apps | UWP-Apps]
Mindestanforderungen für unterstützte Server Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Fenster
Header mfidl.h

Siehe auch

IMFMediaEventGenerator

Media Foundation-Schnittstellen

Medienquellen