Wiederspielen von Dateien aus einer Netzwerkquelle
Das Lesen aus einem Netzwerk ist nicht grundlegend anders als das Lesen einer lokalen Datei. Die Anwendung übergibt die URL an die IWMReader::Open-Methode des Readerobjekts, und das Readerobjekt verarbeitet die Details der Netzwerkprotokolle. Das Readerobjekt verwendet die intelligente Pufferverwaltung, um eine möglichst reibungslose Wiedergabe zu ermöglichen. Wenn die Anwendung mehr Kontrolle über die Netzwerkeinstellungen des Readerobjekts benötigt, sind diese über die Schnittstellen IWMReaderNetworkConfig und IWMReaderNetworkConfig2 verfügbar.
Inhalte aus einer Netzwerkquelle fallen in eine der folgenden beiden Kategorien:
- Streaming. Die Daten werden just-in-time übertragen, um auf dem lokalen Computer abgespielt zu werden. Server mit Windows Media-Dienste können Streamingdaten bereitstellen. Wenn MbR-Inhalte (Multiple Bit Rate) gestreamt werden, kann der Client beim Streaming eine andere Bitrate vom Server anfordern.
- Heruntergeladen. Alle Daten werden so schnell wie möglich übertragen, sodass sie als Datei auf dem lokalen Computer gespeichert werden können. Webserver stellen heruntergeladene Daten bereit. Nach dem Download wird keine Kommunikation zwischen dem Client und dem Server hergestellt.
Wenn das Readerobjekt eine Datei von einem Webserver herunterlädt, wird ein Verfahren namens progressives Streaming verwendet, das es einem Player ermöglicht, mit dem Rendern des Inhalts zu beginnen, bevor der Download abgeschlossen ist. Daten werden gepuffert, um einen ununterbrochenen Datenfluss an den Player zu ermöglichen. Informationen wie Übertragungsrate und Dauer des Inhalts werden verwendet, um zu bestimmen, wie lange die Daten gepuffert werden, bevor sie an den Player übertragen werden.
Um eine Datei oder einen Stream über ein Netzwerk zu öffnen, rufen Sie die IWMReader::Open-Methode des Readerobjekts mit der entsprechenden URL auf. Open ist ein asynchroner Aufruf, daher wird sofort zurückgegeben. Wenn die Quelle zum Lesen bereit ist, sendet das Readerobjekt eine WMT OPENED-Benachrichtigung an die _ IWMStatusCallback::OnStatus-Rückrufmethode der Anwendung. An diesem Punkt kann die Anwendung den Reader für den Übermittlungsmodus abfragen, indem sie IWMReaderAdvanced2::GetPlayMode aufruft. Bei Netzwerkinhalten gibt diese Methode entweder WMT PLAY MODE DOWNLOAD zurück, was auf heruntergeladenen Inhalt hinweist, oder WMT PLAY MODE STREAMING, was auf _ _ _ gestreamten Inhalt _ _ _ hinweist.
Um mit dem Lesen der Datei oder des Streams zu beginnen, rufen Sie die IWMReader::Start-Methode auf. Der Reader sendet eine WMT BUFFERING START-Benachrichtigung, wenn er mit dem Puffern des Inhalts beginnt, und eine _ _ WMT BUFFERING STOP-Benachrichtigung, wenn _ _ die Pufferung abgeschlossen ist. Während der Reader Inhalte puffert (d. h. zwischen diesen beiden Benachrichtigungen), sollten Sie den Pufferungsfortschritt für den Benutzer anzeigen. Die IWMReaderAdvanced2::GetBufferProgress-Methode gibt den Prozentsatz der gepufferten Daten und die geschätzte Zeit zurück, die verbleibt. Für heruntergeladene Inhalte können Sie auch IWMReaderAdvanced2::GetDownloadProgress aufrufen, um den Downloadfortschritt zu erhalten. Rufen Sie diese Methoden wiederholt auf, um die Anzeige zu aktualisieren, bis die Pufferung abgeschlossen ist. Die Pufferung kann während der Wiedergabe aufgrund von Faktoren wie Netzwerküberlastung erneut auftreten. In diesem Fall erhält die Anwendung eine weitere WMT _ BUFFERING _ START-Benachrichtigung.
Wenn das Readerobjekt mit der Wiedergabe des Inhalts beginnt, sendet es eine WMT _ STARTED-Benachrichtigung. Wenn jedes Beispiel decodiert wird und zum Rendern verfügbar wird, übergibt der Reader es über die RÜCKRUFMETHODE IWMReaderCallback::OnSample an die Anwendung. An diesem Punkt ist der Prozess identisch mit dem für die lokale Dateiwiedergabe. Wenn die Wiedergabe beendet wird, sendet der Reader eine WMT _ END _ OF _ STREAMING-Benachrichtigung.