Delen via


Key-Frame-invoeging forceren

[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.]

De Windows Media Video 9-codec ondersteunt geforceerde invoeging van sleutelframes. Wanneer u een voorbeeld aan de schrijver doorgeeft, kunt u opgeven dat het moet worden gecodeerd als een sleutelframe.

Voer de volgende stappen uit om een sleutelframe in te voegen voor een voorbeeld.

  1. Wijs een buffer toe om het voorbeeld op te slaan en haal een aanwijzer op naar de INSSBuffer-interface met de buffer door IWMWriter::AllocateSample-aan te roepen.
  2. Haal de locatie en grootte van de buffer op die in stap 1 is gemaakt door INSSBuffer::GetBufferAndLengthaan te roepen.
  3. Kopieer de voorbeeldgegevens naar de bufferlocatie en zorg ervoor dat het doorgegeven voorbeeld in de toegewezen buffer past. Afhankelijk van de bron van uw voorbeelden kunt u verschillende functies gebruiken om de gegevens te kopiƫren. Als u bijvoorbeeld een stream kopieert vanuit een AVI-bestand, kunt u de functie AVI gebruiken, AVIStreamRead.
  4. Werk de hoeveelheid gegevens bij die in de buffer worden gebruikt om de werkelijke grootte van het voorbeeld weer te geven door INSSBuffer::SetLength-aan te roepen.
  5. Verkrijg een aanwijzer voor de INSSBuffer3-interface door INSSBuffer::QueryInterfaceop te roepen.
  6. Stel het sample in als een geforceerd sleutelframe door de methode INSSBuffer3::SetProperty aan te roepen en de eigenschap WM_SampleExtensionGUID_OutputCleanPoint te configureren. Deze eigenschap is een Booleaanse waarde; stel deze in op TRUE.
  7. Geef de bufferinterface door aan de schrijver, samen met het invoernummer en de voorbeeldtijd met behulp van de methode IWMWriter::WriteSample.

IWMWriter::WriteSample

voor het schrijven van voorbeelden

VBR-codering (Variable Bit Rate)

ASF-bestanden schrijven