Netzwerkquellenfeatures

Die Netzwerkquelle stellt die Basisimplementierung für Streamingmediendateien bereit und macht die IMFMediaSource-Schnittstelle verfügbar. Die spezifische Netzwerkquellenimplementierung 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ützte Protokolle.

Die Netzwerkquelle:

  • Implementiert Features wie Zwischenspeichern, Proxyerkennung und automatische Wiederherstellung der 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 Socketebene. Beim Empfang ist die Netzwerkquelle für die Neuanordnung und Anforderung von Erneutübertragungen von Paketen verantwortlich.

Erstellen einer Netzwerkquelle

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 flag MF_RESOLUTION_MEDIASOURCE an. Weitere Informationen zur Verwendung dieses Flags finden Sie unter Verwenden des Quellre resolvers.

Abhängig vom 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 durch Aufrufen von IMFSchemeHandler::BeginCreateObject zu erstellen.

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 des heruntergeladenen Inhalts 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 erfolgt keine Kommunikation zwischen dem Client und dem Server. In diesem Fall wird das HTTP-Downloadprotokoll verwendet.

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

Hinweis

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

 

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

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

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

Netzwerkquellenkonfiguration

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

Automatische Wiederherstellung der Verbindung

Das Feature für die automatische Wiederherstellung der Verbindung der Netzwerkquelle ermöglicht es einem Client, automatisch wieder eine Verbindung mit dem Medienserver herzustellen, wenn die TCP-Verbindung mit dem Server fehlschlägt oder der Client keine Pakete empfängt. Wenn die Verbindung fehlschlägt, versucht die Netzwerkquelle, mit der gleichen Konfiguration wie in der vorherigen Verbindung eine Verbindung mit dem Medienserver herzustellen. Der Prozess zur Wiederherstellung der Verbindung ist asynchron. Die Netzwerkquelle löst das MEReconnectStart-Ereignis aus, wenn die erneute Verbindung beginnt, und das MEReconnectEnd-Ereignis , wenn die erneute Verbindung erfolgreich war oder fehlschlägt.

Wenn die Anzahl der Versuche zur Wiederherstellung der Verbindung den von der MFNETSOURCE_AUTORECONNECTLIMIT-Eigenschaft angegebenen Höchstwert überschreitet, wird der Vorgang für die erneute Verbindung abgebrochen. Die Anzahl der Verbindungsversuche wird in der eigenschaft MFNETSOURCE_AUTORECONNECTPROGRESS gespeichert.

Die automatische Wiederherstellung der 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 mindestens 1 bis 2 Minuten über genügend Daten im Cache verfügen, 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 mit einer schnelleren Rate zu streamen, als durch die Bitrate des Inhalts angegeben. Wenn der schnelle Start auf dem Server aktiviert ist, sendet der Server einen beschleunigten Bitratenstream, damit der Client eine ausreichende Datenmenge schneller als in Echtzeit puffern kann. Dies verbessert die Benutzerfreundlichkeit, indem anfängliche Pufferungsverzögerungen minimiert werden, die durch verschiedene Faktoren wie die niedrige Geschwindigkeit des Clientcomputers oder des Netzwerks und die verfügbare Bandbreite verursacht werden können.

Legen Sie die eigenschaft MFNETSOURCE_ACCELERATEDSTREAMINGDURATION fest, um die Menge der datenschnellen Streaming anzugeben, die der Client anfordern kann. Wenn die Netzwerkquelle UDP als Transportprotokoll verwendet, geben Sie die maximale Menge an Schnellen Streamingdaten an, indem Sie stattdessen die eigenschaft MFNETSOURCE_MAXUDPACCELERATEDSTREAMINGDURATION festlegen.

Schnelles Streaming auf dem Client ist auch über das Feature "Fast Cache " möglich. Hierbei werden On-Demand-Inhalte schneller als in Echtzeit gestreamt und Daten im lokalen Cache des Clients zwischengespeichert. Um diese Art des schnellen Streamings verwenden zu können, muss Fast Cache für die Netzwerkquelle aktiviert sein, und der Server muss dies 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 ihn aus dem lokalen Cache wieder. In nachfolgenden Anforderungen für Wiedergabelisten werden nur fehlende Einträge zwischengespeichert und dann wiedergegeben. Wenn sich ein Wiedergabelisteneintrag bereits im lokalen Cache des Clients befindet, wird er dort wiedergegeben und nicht erneut zwischengespeichert.

Standardmäßig ist Fast 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 herunterladen und zwischenspeichern zu können.
  • Der Client muss über ausreichend Speicherplatz verfügen. Wenn der Client nach dem Zwischenspeichern des angeforderten bedarfsgesteuerten Inhalts weniger als 100 MB freien Speicherplatz hat, wird er nicht zwischengespeichert, sondern gleichzeitig gestreamt und gerendert.

Das Feature Fast Cache wird von der eigenschaft MFNETSOURCE_CACHEENABLED gesteuert.

Pufferverwaltung

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

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

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

Bandbreitenauswahl

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

Während der Schnellstartphase wird eine dynamische Paketpaarmessung durchgeführt. Bei diesem Prozess empfängt der Client große Datenmengen, bei denen es sich um mehrere Pakete oder Stichproben handelt.

Das Ergebnis der dynamischen Paketpaarmessung ist genauer als die Schätzung der Linkbandbreite, die von statischen Paketpaaren zurückgegeben wird, da der statische Paketpaarprozess ein einzelnes Paket mit fester Größe sendet, was 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ühren kann. Die Netzwerkquelle kann die anfängliche Streamauswahl des Clients basierend auf der Empfangsrate und dem Pufferzustand ändern. Beispielsweise kann der Client während einer Netzwerküberlastung zu einer niedrigeren Bitrate wechseln und wieder zu einer höheren Bitrate wechseln, wenn sich der Netzwerkdatenverkehr verbessert hat und der Client eine ausreichende Menge an gepufferten Inhalten angesammelt hat.

Netzwerk in Media Foundation