Wiedergeben von Dateien aus einer Netzwerkquelle
[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK ist ein Legacyfeature. Es wurde von Source Reader und Sink Writer abgelöst. Source Reader und Sink Writer wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit quellleser und Senkenschreiber anstelle des Windows Media Format 11 SDK verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
Das Lesen aus einem Netzwerk unterscheidet sich nicht grundlegend vom Lesen einer lokalen Datei. Die Anwendung übergibt die URL an die IWMReader::Open-Methode des Leserobjekts, und das Reader-Objekt verarbeitet die Details der Netzwerkprotokolle. Das Reader-Objekt verwendet eine intelligente Pufferverwaltung, um eine möglichst reibungslose Wiedergabe zu gewährleisten. Wenn die Anwendung mehr Kontrolle über die Netzwerkeinstellungen des Leserobjekts 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 wiedergegeben zu werden. Server, auf denen Windows Media Services ausgeführt wird, können Streamingdaten bereitstellen. Wenn MBR-Inhalte (Multiple Bit Rate) gestreamt werden, kann der Client beim Streamingvorgang eine andere Bitrate vom Server anfordern.
- Heruntergeladen. 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.
Wenn das Reader-Objekt eine Datei von einem Webserver herunterlädt, verwendet es eine Technik namens progressives Streaming, mit der ein Player mit dem Rendern des Inhalts beginnen kann, bevor der Download abgeschlossen ist. Daten werden gepuffert, um einen ununterbrochenen Datenfluss für den Player bereitzustellen. Informationen wie die Übertragungsrate und Dauer des Inhalts werden verwendet, um zu bestimmen, wie lange die Daten gepuffert werden sollen, bevor sie an den Spieler übergeben werden.
Um eine Datei oder einen Stream über ein Netzwerk zu öffnen, rufen Sie die IWMReader::Open-Methode des Leserobjekts mit der entsprechenden URL auf. Open ist ein asynchroner Aufruf, sodass er sofort zurückgegeben wird. Wenn die Quelle zum Lesen bereit ist, sendet das Reader-Objekt 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. Für Netzwerkinhalte gibt diese Methode entweder WMT_PLAY_MODE_DOWNLOAD zurück, die heruntergeladenen Inhalt angibt, oder WMT_PLAY_MODE_STREAMING, der gestreamten Inhalt angibt.
Rufen Sie die IWMReader::Start-Methode auf, um mit dem Lesen der Datei oder des Streams zu beginnen. Der Leser sendet eine WMT_BUFFERING_START Benachrichtigung, wenn er beginnt, den Inhalt zu puffern, und eine WMT_BUFFERING_STOP Benachrichtigung, wenn die Pufferung abgeschlossen ist. Während der Reader Inhalte puffert (d. h. zwischen diesen beiden Benachrichtigungen), können Sie dem Benutzer den Pufferfortschritt anzeigen. Die IWMReaderAdvanced2::GetBufferProgress-Methode gibt den Prozentsatz der gepufferten Daten und die geschätzte Zeit zurück. 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 Reader-Objekt beginnt, den Inhalt wiederzugeben, sendet es eine WMT_STARTED Benachrichtigung. Da jedes Beispiel decodiert ist und zum Rendern verfügbar wird, übergibt der Reader es über die IWMReaderCallback::OnSample-Rückrufmethode an die Anwendung. An diesem Punkt ist der Prozess identisch mit der lokalen Dateiwiedergabe. Wenn die Wiedergabe beendet wird, sendet der Leser eine WMT_END_OF_STREAMING Benachrichtigung.
Zugehörige Themen