Freigeben über


Netzwerkquellenfeatures

Die Netzwerkquelle stellt die Basisimplementierung für Streamingmediendateien bereit und macht die IMFMediaSource--Schnittstelle verfügbar. Die spezifische Netzwerkquellimplementierung hängt vom Protokoll ab, das zum Öffnen der Quelle verwendet wird, z. B. RTSP oder HTTP. Die protokollspezifischen Netzwerkquellen erweitern die grundlegenden Netzwerkfunktionen. Informationen zu den unterstützten Schemas und Protokollen finden Sie unter unterstützten Protokolle.

Die Netzwerkquelle:

  • Implementiert Features wie Zwischenspeichern, Proxyerkennung und automatische Erneute Verbindung.
  • Konvertiert protokollunabhängige Aufrufe vom Quelllöser in protokollspezifische Aufrufe.
  • Interagiert mit der Socketebene und dem Betriebssystem. Analysiert die SDP-Beschreibung und verwendet sie als Konfigurationsdaten und liest Datenstromdaten aus der zugrunde liegenden Socketsebene. Beim Empfang ist die Netzwerkquelle für das Neuanordnen und Anfordern einer erneuten Übertragung von Paketen verantwortlich.

Erstellen von Netzwerkquellen

Das Erstellen einer Medienquelle für eine Quelle aus dem Netzwerk unterscheidet sich nicht von einer Medienquelle für eine lokale Datei. Die Anwendung übergibt die URL für die Quelle an Source Resolver Methoden wie IMFSourceResolver::CreateObjectFromURL oder IMFSourceResolver::BeginCreateObjectFromURL und gibt das MF_RESOLUTION_MEDIASOURCE Flag an. Weitere Informationen zur Verwendung dieses Flags finden Sie unter Using the Source Resolver.

Je nach dem von der Anwendung bereitgestellten Schema lädt der Quelllöser das entsprechende Schemahandlerobjekt, das die IMFSchemeHandler Schnittstelle verfügbar macht. Die Anwendung kann den Schemahandler auch direkt verwenden, um die Netzwerkquelle zu erstellen, indem IMFSchemeHandler::BeginCreateObjectaufgerufen wird.

Weitere Informationen finden Sie unter Schemahandler und Byte-Stream Handler.

Media Foundation unterstützt keine Bytestreams für Netzwerkquellen. Das Bytestreamobjekt wird nur im Szenario für heruntergeladene Inhalte unterstützt. Alle Daten werden so schnell wie möglich übertragen, damit sie als Datei auf dem lokalen Computer gespeichert werden können. Webserver stellen heruntergeladene Daten bereit. Nach Beginn des Downloads gibt es keine Kommunikation vom Client an den Server. In diesem Fall wird das HTTP-Downloadprotokoll verwendet.

Wenn die Anwendung den Quelllöser anfordert, ein Bytestreamobjekt für das Schema "http:", "mms:" oder "rtsp:" zu erstellen, schlägt der Aufruf mit dem MF_E_UNSUPPORTED_SCHEME Fehler fehl.

Anmerkung

In Windows 7 unterstützt die Netzwerkquelle Windows Media Station-Dateien (. NSC). Diese Dateien werden im Multicaststreaming von Medieninhalten über ein Netzwerk verwendet. So erstellen Sie die Netzwerkquelle für eine angegebene . Die NSC-Datei muss die Anwendung den Quelllöser verwenden.

 

Wenn die Anwendung den Schemahandler verwendet, ignoriert der asynchrone Aufruf den dwFlags Parameter und gibt einen Zeiger auf die Netzwerkquelle nach Abschluss zurück.

Die folgende Abbildung zeigt den Datenfluss für Medienstreaming mithilfe der Netzwerkquelle.

Flussdiagramm mit Pfaden von Der Anwendung zum Streamingserver mit einer Schleife zwischen Netzwerkquelle und Mediensitzung

Netzwerkquellkonfiguration

In diesem Thema werden die features beschrieben, die von der Netzwerkquelle und den zugehörigen Konfigurationsoptionen unterstützt werden. Eine Anwendung kann die Netzwerkquelle beim Erstellen des Netzwerkquellobjekts konfigurieren. Diese Optionen werden in einem IPropertyStore--Objekt gespeichert, das die Anwendung an den pProps Parameter der Quelllösermethoden oder IMFSchemeHandler::BeginCreateObjectübergeben muss.

Automatische Erneute Verbindung

Das Feature für die automatische erneute Verbindung der Netzwerkquelle ermöglicht es einem Client, automatisch eine Verbindung mit dem Medienserver herzustellen, wenn die TCP-Verbindung mit dem Server fehlschlägt oder der Client Pakete nicht empfängt. Wenn die Verbindung fehlschlägt, versucht die Netzwerkquelle, eine erneute Verbindung mit dem Medienserver herzustellen, indem die gleiche Konfiguration verwendet wurde, die in der vorherigen Verbindung verwendet wurde. Der Vorgang für die erneute Verbindung ist asynchron. Die Netzwerkquelle löst das MEReconnectStart--Ereignis aus, wenn die Erneute Verbindung gestartet wird, und das MEReconnectEnd Ereignis, wenn die erneute Verbindung erfolgreich war oder fehlschlägt.

Wenn die Anzahl der Wiederholungsversuche den durch die eigenschaft MFNETSOURCE_AUTORECONNECTLIMIT angegebenen Maximalwert überschreitet, wird der Vorgang für die erneute Verbindung abgebrochen. Die Anzahl der Wiederholungsversuche wird in der eigenschaft MFNETSOURCE_AUTORECONNECTPROGRESS gespeichert.

Die automatische Erneute Verbindung ermöglicht eine reibungslose Wiedergabe von Medieninhalten, auch wenn die TCP-Verbindung mit dem Medienserver fehlschlägt. Für eine reibungslose Wiedergabe muss der Client über ausreichende Daten verfügen, mindestens 1 bis 2 Minuten im Cache, um die Wiedergabe bis zur erneuten Verbindung fortzusetzen. Die maximale Datenmenge, die von der Netzwerkquelle gepuffert werden kann, kann in der eigenschaft MFNETSOURCE_MAXBUFFERTIMEMS festgelegt werden.

Schnelles Streaming

Der Netzwerkquellclient fordert den Server auf, einige Der Daten am Anfang des Inhalts schneller zu streamen als die durch die Bitrate des Inhalts angegeben. Wenn schnelles Start- auf dem Server aktiviert ist, sendet der Server einen beschleunigten Bitrate-Datenstrom, sodass der Client eine ausreichende Menge an Daten schneller als in Echtzeit puffern kann. Dies verbessert die Benutzererfahrung, indem anfängliche Pufferverzögerungen minimiert werden, was durch verschiedene Faktoren wie niedrige Geschwindigkeit des Clientcomputers oder des Netzwerks und der verfügbaren Bandbreite verursacht werden kann.

Um die Menge der schnellen Streamingdaten anzugeben, die der Client anfordern kann, legen Sie die eigenschaft MFNETSOURCE_ACCELERATEDSTREAMINGDURATION fest. Wenn die Netzwerkquelle UDP als Transportprotokoll verwendet, geben Sie die maximale Menge an Fast-Streaming-Daten an, indem Sie stattdessen die eigenschaft MFNETSOURCE_MAXUDPACCELERATEDSTREAMINGDURATION festlegen.

Schnelles Streamen auf dem Client ist auch über das feature schnellen Cache möglich – Streaming von On-Demand-Inhalten schneller als Echtzeit und Zwischenspeichern von Daten im lokalen Cache des Clients. Um diese Art von schnellem Streaming zu verwenden, muss der schnelle Cache auf der Netzwerkquelle aktiviert sein, und der Server muss ihn unterstützen. Wenn der Client Inhalte vom Server anfordert, überprüft die Netzwerkquelle zunächst, ob sich der Inhalt bereits im Cache des Clients befindet. Wenn sich der Inhalt im lokalen Cache des Clients befindet und nicht abgelaufen ist, wird er gerendert. Wenn sich der Inhalt nicht im lokalen Cache befindet oder bereits abgelaufen ist, wird der Inhalt gestreamt und zwischengespeichert, und die Netzwerkquelle gibt sie aus dem lokalen Cache wieder. Bei nachfolgenden Anforderungen werden für Wiedergabelisten nur fehlende Einträge zwischengespeichert und dann wiedergegeben. Wenn sich ein Wiedergabelisteneintrag bereits im lokalen Cache des Clients befindet, wird er von dort wiedergegeben und nicht erneut zwischengespeichert.

Standardmäßig ist der schnelle Cache auf dem Netzwerkquellclient aktiviert. Die folgenden Faktoren bestimmen jedoch auch, ob das Feature verwendet wird:

  • Der Client muss über zusätzliche Bandbreite verfügen, um den Inhalt schneller als die normale Geschwindigkeit herunterzuladen und zwischenzuspeichern.
  • Der Client muss über ausreichend Speicherplatz verfügen. Wenn der Client weniger als 100 MB freien Speicherplatz hat, nachdem der angeforderte On-Demand-Inhalt zwischengespeichert wurde, wird er nicht zwischengespeichert, sondern gleichzeitig gestreamt und gerendert.

Das Feature "Schneller Cache" wird von der MFNETSOURCE_CACHEENABLED-Eigenschaft gesteuert.

Pufferverwaltung

Die Netzwerkquelle bietet eine effiziente Pufferverwaltung, die den Pufferstatus auf dem Client überwacht. Standardmäßig puffert die Netzwerkquelle beim Start 5 Sekunden Daten. Dieser Wert kann durch Festlegen der eigenschaft MFNETSOURCE_BUFFERINGTIME konfiguriert werden. Basierend auf diesem Eigenschaftswert berechnet die Netzwerkquelle die Puffergröße, die ausreicht, um eine reibungslose und unterbrechungsfreie Wiedergabe des Medieninhalts sicherzustellen. Wenn diese Eigenschaft auf 0 festgelegt ist, ist die Pufferverwaltung deaktiviert. Wenn der Inhalt im Puffer niedrig ist, startet die Netzwerkquelle die Pufferung und löst das MEBufferingStarted Ereignis aus, um anzugeben, dass die Pufferung begonnen hat. Beim Empfang dieses Ereignisses beendet die Pipeline das Rendering. Wenn die Pufferung abgeschlossen ist, löst die Netzwerkquelle das MEBufferingStopped--Ereignis aus, und der Client kann das Rendern erneut starten.

Der Client beginnt mit dem Rendern des Inhalts, nachdem er die durch die Puffergröße des ersten Beispiels angegebene Datenmenge angesammelt hat. Wenn dieser Wert niedriger als die berechnete Puffergröße ist, wird die Wiedergabe sofort gestartet. Dieses Verhalten ähnelt dem Feature "Schnellstart".

Die eigenschaft MFNETSOURCE_MAXBUFFERTIMEMS speichert die maximale Datenmenge, die gepuffert werden kann.

Bandbreitenauswahl

Wenn ein Client im Rahmen der Verbindungseinrichtung eine Verbindung mit dem Medienserver herstellt, führt die Netzwerkquelle statische Paketpaare Messung aus, um die anfängliche Verbindungsbandbreite zwischen Client und Server zu schätzen. Basierend auf dem Ergebnis dieser Messung kann der Client Audio- und Videodatenströme auswählen, die in die geschätzte Bandbreite passen. Dadurch wird eine reibungslose Wiedergabe des Streamingmedieninhalts sichergestellt.

Während der Schnellstartphase wird dynamische Paketpaar Messung durchgeführt. In diesem Prozess empfängt der Client große Datenmengen, die mehrere Pakete oder Beispiele sein können.

Das Ergebnis der dynamischen Paketpaarmessung ist genauer als die Von statischen Paketpaarmessungen zurückgegebene Verbindungsbandbreitenschätzung, da der statische Paketpaarprozess ein einzelnes Paket mit fester Größe sendet, das möglicherweise keine genauen Ergebnisse für Netzwerke mit hoher Bandbreite liefert.

Die Anwendung kann die geschätzte Bandbreite mithilfe der eigenschaft MFNETSOURCE_PPBANDWIDTH abrufen.

Netzwerkbedingungen können sich dynamisch ändern, was zu Störungen bei der Wiedergabe der Netzwerkquelle führt. Die Netzwerkquelle kann die anfängliche Datenstromauswahl des Clients basierend auf der Empfangsrate und dem Pufferzustand ändern. Beispielsweise kann der Client während der Netzwerküberlastung zu einer niedrigeren Bitrate wechseln und wieder zu einer höheren Bitrate wechseln, wenn der Netzwerkdatenverkehr verbessert wurde und der Client eine ausreichende Menge an gepufferten Inhalten angesammelt hat.

Networking in Media Foundation