Share via


Pour forcer l’insertion de Key-Frame

[La fonctionnalité associée à cette page, le Kit de développement logiciel (SDK) Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par lecteur source et enregistreur récepteur. Le lecteur source et l’enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise le lecteur source et l’enregistreur récepteur au lieu du Kit de développement logiciel (SDK) Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Le codec Windows Media Video 9 prend en charge l’insertion forcée d’images clés. Lorsque vous passez un exemple à l’enregistreur, vous pouvez spécifier qu’il doit être encodé en tant que trame clé.

Pour forcer l’insertion d’images clés pour un exemple, effectuez les étapes suivantes.

  1. Allouez une mémoire tampon pour contenir l’exemple et récupérez un pointeur vers l’interface INSSBuffer contenant la mémoire tampon en appelant IWMWriter::AllocateSample.
  2. Récupérez l’emplacement et la taille de la mémoire tampon créée à l’étape 1 en appelant INSSBuffer::GetBufferAndLength.
  3. Copiez vos données d’exemple vers l’emplacement de la mémoire tampon, en vous assurant que l’exemple passé correspondra à la mémoire tampon allouée. Selon la source de vos exemples, vous pouvez utiliser diverses fonctions pour copier les données. Par exemple, si vous copiez un flux à partir d’un fichier AVI, vous pouvez utiliser la fonction AVI, AVIStreamRead.
  4. Mettez à jour la quantité de données utilisée dans la mémoire tampon pour refléter la taille réelle de l’exemple en appelant INSSBuffer::SetLength.
  5. Obtenez un pointeur vers l’interface INSSBuffer3 en appelant INSSBuffer::QueryInterface.
  6. Définissez l’exemple en tant que trame de clé forcée en appelant la méthode INSSBuffer3::SetProperty pour définir la propriété WM_SampleExtensionGUID_OutputCleanPoint. Cette propriété est une valeur booléenne ; définissez-le sur TRUE.
  7. Transmettez l’interface de mémoire tampon à l’enregistreur ainsi que le nombre d’entrée et l’exemple d’heure à l’aide de la méthode IWMWriter::WriteSample .

IWMWriter::WriteSample

Pour écrire des exemples

Encodage à débit binaire variable (VBR)

Écriture de fichiers ASF