So stellen Sie komprimierte Beispiele mit dem asynchronen Reader zur Verfügung

Der asynchrone Reader kann komprimierte Beispiele aus Streams in ASF-Dateien liefern. Anwendungen liefern in der Regel komprimierte Beispiele, wenn sie einen Stream aus einer Datei in eine andere kopieren. Es ist nicht ratsam, Daten erneut zu komprimieren, die aus einem komprimierten Datenstrom rekonstruiert wurden, da daten während des Codierungsprozesses verloren gehen. Digitale Medien, die mehr als einmal komprimiert wurden, verringern die Qualität deutlich.

Das Windows Media Format SDK stellt keine Methoden zum Decodieren von Daten bereit, nachdem sie aus einer ASF-Datei extrahiert wurden. Wenn Sie komprimierte Beispiele erhalten und diese später dekomprimieren möchten, müssen Sie dafür Ihren eigenen Code bereitstellen. Eine Möglichkeit, diese Einschränkung zu umgehen, besteht im Schreiben der komprimierten Beispiele in eine neue ASF-Datei und dem anschließenden erneuten Lesen in normale, unkomprimierte Beispiele.

Führen Sie die folgenden Schritte aus, um komprimierte Beispiele mit dem asynchronen Reader zu erhalten.

  1. Implementieren Sie den IWMReaderCallbackAdvanced::OnStreamSample-Rückruf. Dieser Rückruf ist in der Funktion im Grunde identisch mit IWMReaderCallback::OnSample, mit der Ausnahme, dass er Stichproben nach Streamnummer liefert und die Beispiele weiterhin komprimiert sind.
  2. Rufen Sie vor beginn der Wiedergabe einen Zeiger auf die IWMReaderAdvanced-Schnittstelle des Readerobjekts ab, indem Sie IWMReader::QueryInterface aufrufen.
  3. Konfigurieren Sie den Reader so, dass komprimierte Beispiele für den gewünschten Stream übermittelt werden, indem Sie IWMReaderAdvanced::SetReceiveStreamSamples aufrufen.
  4. Wiederholen Sie Schritt 3 für jeden Stream, für den eine komprimierte Beispielbereitstellung gewünscht ist.

Hinweis

Bildstreams sind für die Übermittlung komprimierter Datenströme ungültig. Wenn Sie einen Bilddatenstrom aus einer Datei in eine andere kopieren, funktioniert er in der neuen Datei nicht. Um einen Bilddatenstrom aus einer Datei in eine Datei zu kopieren, rufen Sie die Bilddatenstrombeispiele nach Ausgabenummer ab und fügen sie in die neue Datei ein, als würde ein neuer Bilddatenstrom enthalten sein.

IWMReaderCallbackAdvanced-Schnittstelle

Lesen von Dateien mit dem asynchronen Reader