J'écris une application .NET DirectShow qui capture le flux audio de n'importe quel périphérique de capture, le code en mp3 en utilisant le filtre DirectShow de LAME et enfin écrit le flux dans un fichier. Ceci est mon graphique DirectShow: source de capture -> ENCODEUR AUDIO LAME (compresseur audio) -> WAV DEST (Wave muxer, compilé à partir de sources SDK) -> Auteur du fichier. Le problème est que je voudrais configurer l'encodeur (bitrate, canaux, VBR/CBR, etc) par programme et ne pas utiliser les pages de propriétés (ISpecifyPropertyPages) disponibles sur l'encodeur LAME. Après la récupération des sources LAME, il apparaît que la configuration doit être effectuée à l'aide de l'interface spécifique IAudioEncoderProperties.Configurer l'encodeur MP3 LAME dans l'application DirectShow en utilisant IAudioEncoderProperties
J'ai essayé de rassembler cette interface COM dans mon application .NET en utilisant cette déclaration:
[ComImport]
[SuppressUnmanagedCodeSecurity]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("ca7e9ef0-1cbe-11d3-8d29-00a0c94bbfee")]
public interface IAudioEncoderProperties
{
// Get target compression bitrate in Kbits/s
int get_Bitrate(out int dwBitrate);
// Set target compression bitrate in Kbits/s
// Not all numbers available! See spec for details!
int set_Bitrate(int dwBitrate);
}
Notez que toutes les méthodes sont redéfinis.
Je jetai avec succès mon filtre compresseur audio (l'encodeur LAME) en utilisant:
IAudioEncoderProperties prop = mp3Filter as AudioEncoderProperties;
Mais quand je l'appelle méthode get_Bitrate la valeur retournée est 0 et appelant la méthode set_Bitrate semble avoir aucune incidence sur la sortie fichier. J'ai essayé de configurer mon filtre en utilisant les pages de propriétés et cela fonctionne. Donc, j'aimerais savoir si quelqu'un a déjà utilisé l'encodeur LAME dans une application DirectShow (.NET ou non) et pourrait m'apporter de l'aide?
Cordialement.
- Sypher
Cela fonctionne! Merci beaucoup! –