So transcodieren Sie Inhalte mit intelligenter Rekomprimierung
Sie können Inhalte mithilfe des Windows Media Format SDK von einer Bitrate in eine andere transcodieren. Normalerweise umfasst dies einfach das Decodieren des Inhalts und die Codierung wieder in die gewünschte Bitrate. Der Windows Media Audio 9-Codec unterstützt die intelligente Rekomprimierung, die eine Transcodierung ermöglicht, die eine bessere Qualität als normal erreicht.
Für die intelligente Rekomprimierung muss der ursprüngliche Audiodatenstrom mit dem Windows Medienaudiocodec codiert werden. Alle Versionen des Codecs werden unterstützt, die spezialisierten Audiocodecs (Windows Media Audio 9 Professional und Windows Media Audio 9 Voice) jedoch nicht. Wenn die ursprüngliche Audiodatei mit dem Windows Media Audio 9 Lossless-Codec codiert wurde, ist keine intelligente Rekomprimierung notwendig, da in der ursprünglichen Codierung keine Informationen verloren gegangen sind.
Führen Sie die folgenden Schritte aus, um die intelligente Rekomprimierung zu verwenden.
- Richten Sie ein Readerobjekt mit der Quelldatei zum Lesen ein. Weitere Informationen finden Sie unter Lesen von ASF-Dateien.
- Richten Sie ein Writerobjekt ein, das zum Transcodieren der Datei verwendet werden soll. Legen Sie den Dateinamen für die neue Datei fest. Wählen Sie ein Profil aus, das für die neue Datei verwendet werden soll. Legen Sie das ausgewählte Profil im Writerobjekt fest. Weitere Informationen finden Sie unter Schreiben von ASF-Dateien.
- Rufen Sie einen Zeiger auf die IWMProfile-Schnittstelle des Readerobjekts ab, indem Sie IWMReader::QueryInterface aufrufen.
- Rufen Sie die IWMStreamConfig-Schnittstelle für den zu transcodierten Audiodatenstrom ab, indem Sie IWMProfile::GetStream aufrufen.
- Rufen Sie die IWMMediaProps-Schnittstelle für das Streamkonfigurationsobjekt ab, indem Sie IWMStreamConfig::QueryInterface aufrufen.
- Rufen Sie die WM _ MEDIA _ TYPE-Struktur für den Stream ab, indem Sie zwei Aufrufe von IWMMediaProps::GetMediaType tätigen. Rufen Sie die Größe der -Struktur beim ersten Aufruf ab, und ordnen Sie Arbeitsspeicher zu, damit ein Puffer beim zweiten Aufruf übergeben wird.
- Rufen Sie einen Zeiger auf die IWMInputMediaProps-Schnittstelle für die Eingabe im Writer ab, indem Sie IWMWriter::GetInputProps aufrufen.
- Rufen Sie die IWMPropertyVault-Schnittstelle für das Eingabemedieneigenschaftenobjekt ab, indem Sie IWMInputMediaProps::QueryInterface aufrufen.
- Verwenden Sie die IWMPropertyVault::SetProperty-Methode, um die g _ wszOriginalWaveFormat-Eigenschaft festlegen. Verwenden Sie die IN Schritt 6 erhaltene WAVEFORMATEX-Struktur als Wert der -Eigenschaft.
- Schließen Sie Änderungen an den Eingabemedieneigenschaften ein, indem Sie IWMWriter::SetInputProps aufrufen und einen Zeiger auf die IWMInputMediaProps-Schnittstelle übergeben.
- Beginnen Sie mit dem Lesen von Beispielen aus der originalen Datei, und übergeben Sie sie mit Aufrufen von IWMWriter::WriteSample an den Writer.