Configuration des flux audio
Les flux audio sont généralement les plus simples à configurer. Obtenez une configuration de flux à partir du codec à l’aide des méthodes d’IWMCodecInfo , comme décrit dans Obtention d’informations de configuration de flux à partir de codecs. Dans la plupart des cas, vous ne devez pas modifier les paramètres de ceux récupérés.
Le format de codec que vous sélectionnez parmi ceux énumérés dépend de l’utilisation prévue des fichiers ASF effectués avec le profil. La description du format de codec récupérée par IWMCodecInfo2::GetCodecFormatDesc résume les caractéristiques du format. Si votre application n’affiche pas les descriptions à choisir entre elles, vous pouvez appeler QueryInterface sur l’interface IWMStreamConfig du format de codec pour obtenir l’interface IWMMediaProps . Vous pouvez ensuite récupérer la structure WM_MEDIA_TYPE en appelant IWMMediaProps::GetMediaType. En examinant la structure WM_MEDIA_TYPE et la structure WAVEFORMATEX vers laquelle elle pointe, vous pouvez déterminer les paramètres du format de codec et les comparer à vos besoins.
Obtention des formats audio pour la synchronisation A/V
Le codec Audio Windows Media et le codec Windows Media Audio Professional prennent tous deux en charge les formats pour les fichiers audio uniquement et pour les fichiers audio/vidéo. Les formats audio uniquement sont optimisés pour les fichiers contenant uniquement des données audio, tandis que les formats audio/vidéo sont optimisés pour l’audio qui se trouve dans un fichier avec un flux vidéo. Lors de l’énumération des formats de codec pour ces codecs, les formats audio/vidéo viennent après les formats audio uniquement. Les descriptions au format audio/vidéo contiennent toutes la chaîne « (A/V) ». Vous pouvez identifier les formats conçus pour la synchronisation audio/vidéo par programmation en vérifiant le nombre de paquets par seconde. Les formats de synchronisation ont 5 paquets ou plus par seconde si le débit binaire est supérieur ou égal à 32 000 bits par seconde. Les formats dont le débit est inférieur à 32 000 bits par seconde peuvent être utilisés avec la vidéo synchronisée s’ils utilisent au moins 3 paquets par seconde. L’exemple de code de la rubrique Rechercher des formats audio contient le code requis pour effectuer cette case activée :
if((pWave->nAvgBytesPerSec / pWave->nBlockAlign) >=
((pWave->nAvgBytesPerSec >= 4000) ? 5.0 : 3.0))
{
// Set this stream configuration as the new best match.
}
Obtention Low-Delay formats audio
Le codec Windows Media 9.1 et le codec Windows Media Audio 9.1 Professionnel prennent tous deux en charge les formats à faible délai. Ces formats ont une fenêtre de mémoire tampon plus petite que les autres formats audio. L’audio à faible délai est destiné à améliorer les performances dans les scénarios où les fichiers ou les flux seront fréquemment commutés ; par exemple, une application qui répertorie un certain nombre de chansons pour la diffusion en continu dans l’interface utilisateur et permet aux utilisateurs de basculer arbitrairement entre elles.
Les formats à faible délai sont disponibles uniquement en mode CBR (une ou deux passes). Les descriptions de format à faible délai contiennent toutes la chaîne « Retard faible ». Vous pouvez identifier les formats par programmation en vérifiant la valeur de débit binaire du format. Les formats à faible délai sont affectés à des débits binaires inférieurs de 1 kilobits aux débits du format normal équivalent. Par exemple, le codec Windows Media Audio 9.1 prend en charge un format CBR à passage unique avec un débit binaire de 192 kbit/s. Le format à faible délai équivalent a un débit binaire de 191 kbit/s. En outre, à l’exception du format mono de 5 kbits/s pris en charge par le codec Windows Media Audio 9.1, les formats à faible délai sont les seuls formats qui ont une valeur de débit binaire impaire.
Configuration de l’audio à débit binaire variable
Lorsque vous avez besoin d’un format de débit binaire variable (VBR) pour l’un des codecs audio Windows Media, vous pouvez l’obtenir en définissant les paramètres d’énumération dans la méthode IWMCodecInfo3::SetCodecEnumerationSetting . Définissez g_wszVBREnabled sur True et définissez g_wszNumPasses sur 1 pour le VBR basé sur la qualité ou sur 2 pour le VBR à deux passes (contrainte ou sans contrainte). Si vous utilisez un VBR à deux passes contraintes, vous devez définir manuellement le débit binaire maximal et la fenêtre de mémoire tampon pour le flux à l’aide des méthodes d’IWMPropertyVault , comme décrit dans Configuration des flux VBR.
Dans les profils VBR basés sur la qualité, le membre nAvgBytesPerSec de la structure WAVEFORMATEX contient le niveau de qualité (1 à 100) dans l’octet de bas ordre et les trois octets d’ordre élevé sont définis sur 0x7fffff. N’essayez pas de modifier le paramètre qualité en modifiant cette valeur manuellement ; vous devez utiliser le format tel qu’il est récupéré à partir du codec. Pour utiliser une valeur de qualité différente, vous devez énumérer les formats jusqu’à ce que vous en trouviez un qui répond à vos besoins. En outre, nAvgBytesPerSec ne sera pas conservé dans le fichier ASF ; lorsque vous obtenez la structure WAVEFORMATEX pour un fichier qui a été ouvert avec l’objet lecteur, nAvgBytesPerSec contient une valeur approximative représentant le nombre moyen d’octets par seconde.
Notes
Lors de la configuration des flux audio, vous ne devez jamais avoir une valeur de fenêtre de mémoire tampon audio supérieure à la valeur des flux vidéo dans le fichier. Normalement, ce n’est pas un problème, car les valeurs de fenêtre de mémoire tampon audio doivent être comprises entre 1,5 et 3 secondes et les valeurs vidéo doivent être comprises entre 3 et 5 secondes. Si une fenêtre de mémoire tampon audio est supérieure à une fenêtre de mémoire tampon vidéo, le fichier est lu avec les flux légèrement en dehors de la synchronisation.
Rubriques connexes