Delen via


Inhoud transcoderen met Slimme recompressie

[De functie die is gekoppeld aan deze pagina, Windows Media Format 11 SDK, is een verouderde functie. Het is vervangen door Source Reader en Sink Writer. Bronlezer en Sink Writer zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken bronlezer en Sink Writer- in plaats van Windows Media Format 11 SDK, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]

U kunt inhoud van de ene bitsnelheid naar de andere transcoderen met behulp van de Windows Media Format SDK. Normaal gesproken is dit het eenvoudigweg decoderen van de inhoud en het opnieuw coderen naar de gewenste bitsnelheid. De Windows Media Audio 9-codec ondersteunt slimme recompressie, waardoor transcodering mogelijk is die een betere kwaliteit bereikt dan normaal.

Voor slimme recompressie moet de oorspronkelijke audiostream worden gecodeerd met de Windows Media Audio-codec. Alle versies van de codec worden ondersteund, maar de gespecialiseerde audiocodecs (Windows Media Audio 9 Professional en Windows Media Audio 9 Voice) zijn dat niet. Als de oorspronkelijke audio is gecodeerd met de Windows Media Audio 9 Lossless codec, is het niet nodig om slimme recompressie te gebruiken, omdat er geen informatie verloren is gegaan in de oorspronkelijke codering.

Voer de volgende stappen uit om slimme recompressie te gebruiken.

  1. Stel een lezerobject in met het bronbestand voor lezen. Voor meer informatie, zie ASF-bestanden lezen.
  2. Stel een schrijverobject in dat moet worden gebruikt voor het transcoderingen van het bestand. Stel de bestandsnaam voor het nieuwe bestand in. Selecteer een profiel dat u wilt gebruiken voor het nieuwe bestand. Stel het geselecteerde profiel in het writer-object in. Voor meer informatie, zie ASF-bestanden schrijven.
  3. Haal een aanwijzer naar de IWMProfile-interface van het lezerobject door IWMReader::QueryInterfaceaan te roepen.
  4. Haal de IWMStreamConfig--interface op om de audiostream te transcoderen door IWMProfile::GetStreamaan te roepen.
  5. Haal de IWMMediaProps-interface voor het streamconfiguratieobject op door IWMStreamConfig::QueryInterfaceaan te roepen.
  6. Haal de WM_MEDIA_TYPE structuur voor de stream op door twee aanroepen naar IWMMediaProps::GetMediaType. Bepaal de grootte van de structuur bij de eerste aanroep en wijs geheugen toe voor een buffer die bij de tweede aanroep wordt gebruikt.
  7. Haal een aanwijzer naar de IWMInputMediaProps interface voor de invoer in de schrijver door IWMWriter::GetInputPropsaan te roepen.
  8. Haal de IWMPropertyVault--interface voor het object eigenschappen van invoermedia op door IWMInputMediaProps::QueryInterfaceaan te roepen.
  9. Gebruik de methode IWMPropertyVault::SetProperty om de eigenschap g_wszOriginalWaveFormat in te stellen. Gebruik de WAVEFORMATEX structuur die u in stap 6 hebt verkregen als de waarde van de eigenschap.
  10. Voeg wijzigingen in de eigenschappen van de invoermedia toe door IWMWriter::SetInputProps aan te roepen en deze door te geven aan de IWMInputMediaProps interface.
  11. Begin met het lezen van voorbeelden uit het oorspronkelijke bestand en geef ze door aan de schrijver met aanroepen naar IWMWriter::WriteSample.

Geavanceerde onderwerpen

IWMInputMediaProps Interface

IWMMediaProps Interface

IWMProfile Interface

IWMPropertyVault Interface

IWMStreamConfig Interface