Référence de l'interface de l'encodeur MP3 LAME¶
Vue d'ensemble¶
L'interface IAudioEncoderProperties fournit un contrôle complet de l'encodage audio MP3 LAME. LAME (LAME Ain't an MP3 Encoder) est un encodeur MP3 de haute qualité qui produit une excellente qualité audio avec une compression efficace.
Cette interface permet la configuration du débit binaire, de la qualité, des paramètres de débit binaire variable (VBR) et de divers indicateurs d'encodage pour une sortie MP3 optimale.
Définition de l'interface¶
- Nom de l'interface :
IAudioEncoderProperties - GUID :
{595EB9D1-F454-41AD-A1FA-EC232AD9DA52} - Hérite de :
IUnknown
Définitions de l'interface¶
Définition C¶
using System;
using System.Runtime.InteropServices;
namespace VisioForge.DirectShowAPI
{
/// <summary>
/// Interface de l'encodeur MP3 LAME.
/// </summary>
/// <remarks>
/// Configurer les parametres de l'encodeur audio MPEG avec un type de flux
/// d'entree non specifie peut entrainer des comportements anormaux et des
/// resultats confus. Dans la plupart des cas, les parametres specifies seront
/// remplaces par les valeurs par defaut du type de media d'entree.
/// Pour obtenir des resultats corrects, utilisez cette interface sur le filtre
/// encodeur audio avec un pin d'entree connecte a une source valide.
/// </remarks>
[ComImport]
[System.Security.SuppressUnmanagedCodeSecurity]
[Guid("595EB9D1-F454-41AD-A1FA-EC232AD9DA52")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IAudioEncoderProperties
{
// Controle de la sortie PES
[PreserveSig]
int get_PESOutputEnabled(out int dwEnabled);
[PreserveSig]
int set_PESOutputEnabled([In] int dwEnabled);
// Configuration du debit binaire
[PreserveSig]
int get_Bitrate(out int dwBitrate);
[PreserveSig]
int set_Bitrate([In] int dwBitrate);
// Debit binaire variable (VBR)
[PreserveSig]
int get_Variable(out int dwVariable);
[PreserveSig]
int set_Variable([In] int dwVariable);
[PreserveSig]
int get_VariableMin(out int dwmin);
[PreserveSig]
int set_VariableMin([In] int dwmin);
[PreserveSig]
int get_VariableMax(out int dwmax);
[PreserveSig]
int set_VariableMax([In] int dwmax);
// Parametres de qualite
[PreserveSig]
int get_Quality(out int dwQuality);
[PreserveSig]
int set_Quality([In] int dwQuality);
[PreserveSig]
int get_VariableQ(out int dwVBRq);
[PreserveSig]
int set_VariableQ([In] int dwVBRq);
// Informations source
[PreserveSig]
int get_SourceSampleRate(out int dwSampleRate);
[PreserveSig]
int get_SourceChannels(out int dwChannels);
// Configuration de sortie
[PreserveSig]
int get_SampleRate(out int dwSampleRate);
[PreserveSig]
int set_SampleRate([In] int dwSampleRate);
[PreserveSig]
int get_ChannelMode(out int dwChannelMode);
[PreserveSig]
int set_ChannelMode([In] int dwChannelMode);
// Indicateurs
[PreserveSig]
int get_CRCFlag(out int dwFlag);
[PreserveSig]
int set_CRCFlag([In] int dwFlag);
[PreserveSig]
int get_OriginalFlag(out int dwFlag);
[PreserveSig]
int set_OriginalFlag([In] int dwFlag);
[PreserveSig]
int get_CopyrightFlag(out int dwFlag);
[PreserveSig]
int set_CopyrightFlag([In] int dwFlag);
[PreserveSig]
int get_EnforceVBRmin(out int dwFlag);
[PreserveSig]
int set_EnforceVBRmin([In] int dwFlag);
[PreserveSig]
int get_VoiceMode(out int dwFlag);
[PreserveSig]
int set_VoiceMode([In] int dwFlag);
[PreserveSig]
int get_KeepAllFreq(out int dwFlag);
[PreserveSig]
int set_KeepAllFreq([In] int dwFlag);
[PreserveSig]
int get_StrictISO(out int dwFlag);
[PreserveSig]
int set_StrictISO([In] int dwFlag);
[PreserveSig]
int get_NoShortBlock(out int dwDisable);
[PreserveSig]
int set_NoShortBlock([In] int dwDisable);
[PreserveSig]
int get_XingTag(out int dwXingTag);
[PreserveSig]
int set_XingTag([In] int dwXingTag);
[PreserveSig]
int get_ForceMS(out int dwFlag);
[PreserveSig]
int set_ForceMS([In] int dwFlag);
[PreserveSig]
int get_ModeFixed(out int dwFlag);
[PreserveSig]
int set_ModeFixed([In] int dwFlag);
// Gestion de la configuration
// pcBlock est un tampon BYTE[] en C++ ; utiliser LPArray avec SizeParamIndex=1
// pour que le marshaler lise pdwSize octets depuis le code natif.
[PreserveSig]
int get_ParameterBlockSize(
[Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] pcBlock,
out int pdwSize);
[PreserveSig]
int set_ParameterBlockSize(
[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] pcBlock,
[In] int dwSize);
[PreserveSig]
int DefaultAudioEncoderProperties();
[PreserveSig]
int LoadAudioEncoderPropertiesFromRegistry();
[PreserveSig]
int SaveAudioEncoderPropertiesToRegistry();
[PreserveSig]
int InputTypeDefined();
}
}
Définition C++¶
#include <unknwn.h>
// {595EB9D1-F454-41AD-A1FA-EC232AD9DA52}
static const GUID IID_IAudioEncoderProperties =
{ 0x595eb9d1, 0xf454, 0x41ad, { 0xa1, 0xfa, 0xec, 0x23, 0x2a, 0xd9, 0xda, 0x52 } };
DECLARE_INTERFACE_(IAudioEncoderProperties, IUnknown)
{
// Sortie PES
STDMETHOD(get_PESOutputEnabled)(THIS_ int* dwEnabled) PURE;
STDMETHOD(set_PESOutputEnabled)(THIS_ int dwEnabled) PURE;
// Debit binaire
STDMETHOD(get_Bitrate)(THIS_ int* dwBitrate) PURE;
STDMETHOD(set_Bitrate)(THIS_ int dwBitrate) PURE;
// Debit binaire variable
STDMETHOD(get_Variable)(THIS_ int* dwVariable) PURE;
STDMETHOD(set_Variable)(THIS_ int dwVariable) PURE;
STDMETHOD(get_VariableMin)(THIS_ int* dwmin) PURE;
STDMETHOD(set_VariableMin)(THIS_ int dwmin) PURE;
STDMETHOD(get_VariableMax)(THIS_ int* dwmax) PURE;
STDMETHOD(set_VariableMax)(THIS_ int dwmax) PURE;
// Qualite
STDMETHOD(get_Quality)(THIS_ int* dwQuality) PURE;
STDMETHOD(set_Quality)(THIS_ int dwQuality) PURE;
STDMETHOD(get_VariableQ)(THIS_ int* dwVBRq) PURE;
STDMETHOD(set_VariableQ)(THIS_ int dwVBRq) PURE;
// Informations source
STDMETHOD(get_SourceSampleRate)(THIS_ int* dwSampleRate) PURE;
STDMETHOD(get_SourceChannels)(THIS_ int* dwChannels) PURE;
// Configuration de sortie
STDMETHOD(get_SampleRate)(THIS_ int* dwSampleRate) PURE;
STDMETHOD(set_SampleRate)(THIS_ int dwSampleRate) PURE;
STDMETHOD(get_ChannelMode)(THIS_ int* dwChannelMode) PURE;
STDMETHOD(set_ChannelMode)(THIS_ int dwChannelMode) PURE;
// Indicateurs
STDMETHOD(get_CRCFlag)(THIS_ int* dwFlag) PURE;
STDMETHOD(set_CRCFlag)(THIS_ int dwFlag) PURE;
STDMETHOD(get_OriginalFlag)(THIS_ int* dwFlag) PURE;
STDMETHOD(set_OriginalFlag)(THIS_ int dwFlag) PURE;
STDMETHOD(get_CopyrightFlag)(THIS_ int* dwFlag) PURE;
STDMETHOD(set_CopyrightFlag)(THIS_ int dwFlag) PURE;
STDMETHOD(get_EnforceVBRmin)(THIS_ int* dwFlag) PURE;
STDMETHOD(set_EnforceVBRmin)(THIS_ int dwFlag) PURE;
STDMETHOD(get_VoiceMode)(THIS_ int* dwFlag) PURE;
STDMETHOD(set_VoiceMode)(THIS_ int dwFlag) PURE;
STDMETHOD(get_KeepAllFreq)(THIS_ int* dwFlag) PURE;
STDMETHOD(set_KeepAllFreq)(THIS_ int dwFlag) PURE;
STDMETHOD(get_StrictISO)(THIS_ int* dwFlag) PURE;
STDMETHOD(set_StrictISO)(THIS_ int dwFlag) PURE;
STDMETHOD(get_NoShortBlock)(THIS_ int* dwDisable) PURE;
STDMETHOD(set_NoShortBlock)(THIS_ int dwDisable) PURE;
STDMETHOD(get_XingTag)(THIS_ int* dwXingTag) PURE;
STDMETHOD(set_XingTag)(THIS_ int dwXingTag) PURE;
STDMETHOD(get_ForceMS)(THIS_ int* dwFlag) PURE;
STDMETHOD(set_ForceMS)(THIS_ int dwFlag) PURE;
STDMETHOD(get_ModeFixed)(THIS_ int* dwFlag) PURE;
STDMETHOD(set_ModeFixed)(THIS_ int dwFlag) PURE;
// Gestion de la configuration
STDMETHOD(get_ParameterBlockSize)(THIS_ byte* pcBlock, int* pdwSize) PURE;
STDMETHOD(set_ParameterBlockSize)(THIS_ byte* pcBlock, int dwSize) PURE;
STDMETHOD(DefaultAudioEncoderProperties)(THIS) PURE;
STDMETHOD(LoadAudioEncoderPropertiesFromRegistry)(THIS) PURE;
STDMETHOD(SaveAudioEncoderPropertiesToRegistry)(THIS) PURE;
STDMETHOD(InputTypeDefined)(THIS) PURE;
};
Définition Delphi¶
uses
ActiveX, ComObj;
const
IID_IAudioEncoderProperties: TGUID = '{595EB9D1-F454-41AD-A1FA-EC232AD9DA52}';
type
IAudioEncoderProperties = interface(IUnknown)
['{595EB9D1-F454-41AD-A1FA-EC232AD9DA52}']
// Sortie PES
function get_PESOutputEnabled(out dwEnabled: Integer): HRESULT; stdcall;
function set_PESOutputEnabled(dwEnabled: Integer): HRESULT; stdcall;
// Debit binaire
function get_Bitrate(out dwBitrate: Integer): HRESULT; stdcall;
function set_Bitrate(dwBitrate: Integer): HRESULT; stdcall;
// Debit binaire variable
function get_Variable(out dwVariable: Integer): HRESULT; stdcall;
function set_Variable(dwVariable: Integer): HRESULT; stdcall;
function get_VariableMin(out dwmin: Integer): HRESULT; stdcall;
function set_VariableMin(dwmin: Integer): HRESULT; stdcall;
function get_VariableMax(out dwmax: Integer): HRESULT; stdcall;
function set_VariableMax(dwmax: Integer): HRESULT; stdcall;
// Qualite
function get_Quality(out dwQuality: Integer): HRESULT; stdcall;
function set_Quality(dwQuality: Integer): HRESULT; stdcall;
function get_VariableQ(out dwVBRq: Integer): HRESULT; stdcall;
function set_VariableQ(dwVBRq: Integer): HRESULT; stdcall;
// Informations source
function get_SourceSampleRate(out dwSampleRate: Integer): HRESULT; stdcall;
function get_SourceChannels(out dwChannels: Integer): HRESULT; stdcall;
// Configuration de sortie
function get_SampleRate(out dwSampleRate: Integer): HRESULT; stdcall;
function set_SampleRate(dwSampleRate: Integer): HRESULT; stdcall;
function get_ChannelMode(out dwChannelMode: Integer): HRESULT; stdcall;
function set_ChannelMode(dwChannelMode: Integer): HRESULT; stdcall;
// Indicateurs
function get_CRCFlag(out dwFlag: Integer): HRESULT; stdcall;
function set_CRCFlag(dwFlag: Integer): HRESULT; stdcall;
function get_OriginalFlag(out dwFlag: Integer): HRESULT; stdcall;
function set_OriginalFlag(dwFlag: Integer): HRESULT; stdcall;
function get_CopyrightFlag(out dwFlag: Integer): HRESULT; stdcall;
function set_CopyrightFlag(dwFlag: Integer): HRESULT; stdcall;
function get_EnforceVBRmin(out dwFlag: Integer): HRESULT; stdcall;
function set_EnforceVBRmin(dwFlag: Integer): HRESULT; stdcall;
function get_VoiceMode(out dwFlag: Integer): HRESULT; stdcall;
function set_VoiceMode(dwFlag: Integer): HRESULT; stdcall;
function get_KeepAllFreq(out dwFlag: Integer): HRESULT; stdcall;
function set_KeepAllFreq(dwFlag: Integer): HRESULT; stdcall;
function get_StrictISO(out dwFlag: Integer): HRESULT; stdcall;
function set_StrictISO(dwFlag: Integer): HRESULT; stdcall;
function get_NoShortBlock(out dwDisable: Integer): HRESULT; stdcall;
function set_NoShortBlock(dwDisable: Integer): HRESULT; stdcall;
function get_XingTag(out dwXingTag: Integer): HRESULT; stdcall;
function set_XingTag(dwXingTag: Integer): HRESULT; stdcall;
function get_ForceMS(out dwFlag: Integer): HRESULT; stdcall;
function set_ForceMS(dwFlag: Integer): HRESULT; stdcall;
function get_ModeFixed(out dwFlag: Integer): HRESULT; stdcall;
function set_ModeFixed(dwFlag: Integer): HRESULT; stdcall;
// Gestion de la configuration
function get_ParameterBlockSize(out pcBlock: Byte; out pdwSize: Integer): HRESULT; stdcall;
function set_ParameterBlockSize(pcBlock: Byte; dwSize: Integer): HRESULT; stdcall;
function DefaultAudioEncoderProperties: HRESULT; stdcall;
function LoadAudioEncoderPropertiesFromRegistry: HRESULT; stdcall;
function SaveAudioEncoderPropertiesToRegistry: HRESULT; stdcall;
function InputTypeDefined: HRESULT; stdcall;
end;
Référence des méthodes¶
Configuration du débit binaire¶
set_Bitrate / get_Bitrate¶
Définit ou récupère le débit binaire de compression cible en Kbits/s. Paramètres : - dwBitrate : débit binaire en kilobits par seconde Débits MP3 courants : - 320 kbps — qualité la plus élevée, quasi-transparent - 256 kbps — très haute qualité - 192 kbps — haute qualité (recommandé pour la musique) - 128 kbps — qualité standard (acceptable pour la plupart des contenus) - 96 kbps — qualité inférieure, fichiers plus petits - 64 kbps — qualité voix/podcast Exemple (C#) :
var lame = audioEncoder as IAudioEncoderProperties;
if (lame != null)
{
// Definir une haute qualite a 192 kbps
lame.set_Bitrate(192);
}
Débit binaire variable (VBR)¶
set_Variable / get_Variable¶
Active ou désactive le mode débit binaire variable.
Paramètres : - dwVariable : 1 pour activer VBR, 0 pour désactiver (mode CBR)
Notes d'utilisation : - VBR offre un meilleur rapport qualité/taille que CBR - VBR alloue plus de bits aux passages audio complexes - CBR offre des tailles de fichier prévisibles - VBR est recommandé pour l'archivage musical
set_VariableMin / get_VariableMin¶
Définit le débit minimal pour le mode VBR.
Paramètres : - dwmin : débit minimal en kbps
set_VariableMax / get_VariableMax¶
Définit le débit maximal pour le mode VBR.
Paramètres : - dwmax : débit maximal en kbps
Exemple (C#) :
// Activer VBR avec une plage de 128-256 kbps
lame.set_Variable(1);
lame.set_VariableMin(128);
lame.set_VariableMax(256);
lame.set_VariableQ(4); // Niveau de qualite VBR
Paramètres de qualité¶
set_Quality / get_Quality¶
Définit la qualité d'encodage pour le mode CBR. Paramètres : - dwQuality : niveau de qualité (0-9) - 0 — qualité la plus élevée (le plus lent) - 2 — qualité quasi-maximale (recommandé) - 5 — bon équilibre qualité/vitesse - 7 — encodage plus rapide, qualité inférieure - 9 — qualité la plus basse (le plus rapide) Exemple (C++) :
IAudioEncoderProperties* pLame = nullptr;
pFilter->QueryInterface(IID_IAudioEncoderProperties, (void**)&pLame);
// Encodage CBR haute qualite
pLame->set_Bitrate(192);
pLame->set_Quality(2);
pLame->Release();
set_VariableQ / get_VariableQ¶
Définit le niveau de qualité pour le mode VBR. Paramètres : - dwVBRq : qualité VBR (0-9) - 0 — qualité la plus élevée (~245 kbps) - 2 — très haute qualité (~190 kbps) - 4 — haute qualité (~165 kbps) — recommandé - 6 — qualité moyenne (~130 kbps) - 9 — qualité la plus basse (~65 kbps)
Mode de canal¶
set_ChannelMode / get_ChannelMode¶
Définit le mode d'encodage stéréo.
Paramètres : - dwChannelMode : valeur du mode de canal - 0 — Stéréo - 1 — Joint Stereo (recommandé) - 2 — Dual Channel - 3 — Mono
Notes d'utilisation : - Joint Stereo offre la meilleure qualité à bas débit - Utilisez Stéréo pour l'écoute critique à haut débit - Mono réduit la taille des fichiers pour la parole/podcasts
Exemple (C#) :
// Joint stereo pour la musique a 192 kbps
lame.set_ChannelMode(1);
lame.set_Bitrate(192);
Indicateurs d'encodage¶
set_CRCFlag / get_CRCFlag¶
Active la protection d'erreur CRC. Paramètres : - dwFlag : 1 pour activer, 0 pour désactiver Utilisation : ajoute une détection d'erreurs, augmentation de taille minimale (~0,2 %)
set_CopyrightFlag / get_CopyrightFlag¶
Définit l'indicateur de copyright dans l'en-tête MP3. Paramètres : - dwFlag : 1 si soumis au droit d'auteur, 0 sinon
set_OriginalFlag / get_OriginalFlag¶
Définit l'indicateur original/copie. Paramètres : - dwFlag : 1 pour original, 0 pour copie
set_VoiceMode / get_VoiceMode¶
Optimise l'encodage pour le contenu vocal. Paramètres : - dwFlag : 1 pour activer l'optimisation vocale Utilisation : améliore la qualité de la parole à bas débit Exemple (C#) :
// Optimiser pour podcast/contenu vocal
lame.set_VoiceMode(1);
lame.set_Bitrate(64);
lame.set_ChannelMode(3); // Mono
set_XingTag / get_XingTag¶
Ajoute la balise Xing VBR pour une navigation précise. Paramètres : - dwFlag : 1 pour ajouter la balise (recommandé pour VBR) Utilisation : essentielle pour les fichiers VBR afin de permettre une navigation correcte
Gestion de la configuration¶
SaveAudioEncoderPropertiesToRegistry¶
Enregistre la configuration actuelle de l'encodeur dans le registre.
Notes d'utilisation : - Doit être appelée après modification des propriétés - Les paramètres persistent entre les sessions - Nécessite les autorisations appropriées sur le registre
LoadAudioEncoderPropertiesFromRegistry¶
Charge la configuration de l'encodeur depuis le registre.
DefaultAudioEncoderProperties¶
Réinitialise toutes les propriétés de l'encodeur aux valeurs par défaut selon le type de flux d'entrée.
InputTypeDefined¶
Vérifie si le format d'entrée a été spécifié.
Retourne : - S_OK — le type d'entrée est défini, l'encodeur peut être configuré - E_FAIL — type d'entrée non spécifié, la configuration peut échouer
Exemples complets¶
Exemple 1 : encodage musique haute qualité (C#)¶
using VisioForge.DirectShowAPI;
public void ConfigureHighQualityMP3(IBaseFilter audioEncoder)
{
var lame = audioEncoder as IAudioEncoderProperties;
if (lame == null)
return;
// Verifier si l'entree est connectee
if (lame.InputTypeDefined() != 0)
{
Console.WriteLine("Warning: Input not connected, using defaults");
}
// Parametres VBR haute qualite
lame.set_Variable(1); // Activer VBR
lame.set_VariableQ(2); // Tres haute qualite
lame.set_VariableMin(192); // Min 192 kbps
lame.set_VariableMax(320); // Max 320 kbps
// Joint stereo pour l'efficacite
lame.set_ChannelMode(1);
// Indicateurs de qualite
lame.set_XingTag(1); // Ajouter la balise VBR
lame.set_OriginalFlag(1); // Marquer comme original
lame.set_CopyrightFlag(1); // Definir le copyright
// Enregistrer les parametres
lame.SaveAudioEncoderPropertiesToRegistry();
}
Exemple 2 : encodage podcast/voix (C++)¶
#include "LAME.h"
HRESULT ConfigurePodcastMP3(IBaseFilter* pAudioEncoder)
{
HRESULT hr;
IAudioEncoderProperties* pLame = nullptr;
hr = pAudioEncoder->QueryInterface(IID_IAudioEncoderProperties,
(void**)&pLame);
if (FAILED(hr))
return hr;
// Parametres optimises pour la voix
pLame->set_VoiceMode(1); // Optimisation voix
pLame->set_Bitrate(64); // 64 kbps pour la parole
pLame->set_Quality(5); // Qualite equilibree
pLame->set_ChannelMode(3); // Mono
// Desactiver VBR pour une taille de fichier previsible
pLame->set_Variable(0);
// Ajouter la balise Xing pour la compatibilite
pLame->set_XingTag(1);
// Enregistrer la configuration
pLame->SaveAudioEncoderPropertiesToRegistry();
pLame->Release();
return S_OK;
}
Exemple 3 : encodage musical standard (Delphi)¶
procedure ConfigureStandardMP3(AudioEncoder: IBaseFilter);
var
Lame: IAudioEncoderProperties;
hr: HRESULT;
begin
if Succeeded(AudioEncoder.QueryInterface(IID_IAudioEncoderProperties, Lame)) then
begin
// Parametres musicaux VBR standard
Lame.set_Variable(1); // Activer VBR
Lame.set_VariableQ(4); // Haute qualite (~165 kbps moyen)
Lame.set_VariableMin(128); // Min 128 kbps
Lame.set_VariableMax(256); // Max 256 kbps
// Joint stereo
Lame.set_ChannelMode(1);
// Indicateurs essentiels
Lame.set_XingTag(1); // Balise VBR pour la navigation
// Enregistrer dans le registre
Lame.SaveAudioEncoderPropertiesToRegistry;
Lame := nil;
end;
end;
¶
procedure ConfigureStandardMP3(AudioEncoder: IBaseFilter);
var
Lame: IAudioEncoderProperties;
hr: HRESULT;
begin
if Succeeded(AudioEncoder.QueryInterface(IID_IAudioEncoderProperties, Lame)) then
begin
// Parametres musicaux VBR standard
Lame.set_Variable(1); // Activer VBR
Lame.set_VariableQ(4); // Haute qualite (~165 kbps moyen)
Lame.set_VariableMin(128); // Min 128 kbps
Lame.set_VariableMax(256); // Max 256 kbps
// Joint stereo
Lame.set_ChannelMode(1);
// Indicateurs essentiels
Lame.set_XingTag(1); // Balise VBR pour la navigation
// Enregistrer dans le registre
Lame.SaveAudioEncoderPropertiesToRegistry;
Lame := nil;
end;
end;
Bonnes pratiques¶
Recommandations de qualité¶
- Archivage musical : VBR Q0-Q2 (245-190 kbps en moyenne)
- Distribution musicale : VBR Q4 (165 kbps) ou CBR 192 kbps
- Streaming : CBR 128 kbps
- Podcasts/parole : CBR 64 kbps mono avec mode voix
Conseils de performance¶
- Utilisez Joint Stereo aux débits inférieurs à 192 kbps
- Activez VBR pour un meilleur rapport qualité/taille
- Ajoutez la balise Xing pour les fichiers VBR
- Utilisez le mode voix pour le contenu vocal à < 96 kbps
Flux de configuration¶
- Connectez le pin d'entrée avant la configuration
- Vérifiez
InputTypeDefined()avant de définir les propriétés - Configurez toutes les propriétés souhaitées
- Appelez
SaveAudioEncoderPropertiesToRegistry() - Vérifiez les paramètres avec les méthodes get
Dépannage¶
Problème : paramètres non appliqués¶
Solution :
// S'assurer que l'entree est connectee d'abord
if (lame.InputTypeDefined() == 0)
{
// Configurer les parametres
lame.set_Bitrate(192);
lame.SaveAudioEncoderPropertiesToRegistry();
}
else
{
// Connecter l'entree d'abord, puis configurer
}
Problème : qualité de sortie médiocre¶
Solutions : - Augmentez la qualité VBR : set_VariableQ(2) ou inférieur - Augmentez le débit CBR : set_Bitrate(192) ou supérieur - Utilisez un meilleur paramètre de qualité : set_Quality(2) - Désactivez le mode voix pour la musique : set_VoiceMode(0)
Problème : fichiers volumineux¶
Solutions :
// Utiliser VBR au lieu d'un CBR eleve
pLame->set_Variable(1);
pLame->set_VariableQ(4); // ~165 kbps en moyenne
pLame->set_VariableMax(192); // Plafonner le debit maximal