title: Codificador AAC DirectShow - Interfaces y Configuración description: Interfaces DirectShow del codificador AAC: control de tasa de bits, configuración de perfil, frecuencia de muestreo y codificación para audio profesional.
Referencia de la Interfaz del Codificador AAC¶
Descripción General¶
Los filtros DirectShow del codificador AAC (Codificación de Audio Avanzada) proporcionan interfaces para la codificación de audio de alta calidad al formato AAC. AAC es el sucesor de MP3, ofreciendo mejor calidad de sonido a la misma tasa de bits y es el códec de audio estándar para MP4, M4A y aplicaciones de transmisión.
Están disponibles dos interfaces de codificador AAC: - IMonogramAACEncoder: Interfaz de configuración simple que utiliza una única estructura de configuración. - IVFAACEncoder: Interfaz completa con métodos de propiedad individuales para un control detallado.
Interfaz IMonogramAACEncoder¶
Descripción General¶
La interfaz IMonogramAACEncoder proporciona un enfoque de configuración simple basado en estructuras para la codificación AAC. La configuración se realiza utilizando la estructura AACConfig que contiene todos los parámetros esenciales de codificación.
GUID de la Interfaz: {B2DE30C0-1441-4451-A0CE-A914FD561D7F}
Hereda de: IUnknown
Estructura AACConfig¶
/// <summary>
/// Estructura de configuración del codificador AAC.
/// </summary>
public struct AACConfig
{
/// <summary>
/// Versión/perfil AAC (típicamente 2 para AAC-LC, 4 para AAC-HE)
/// </summary>
public int version;
/// <summary>
/// Tipo de objeto / perfil:
/// 2 = AAC-LC (Baja Complejidad) - recomendado para la mayoría de usos
/// 5 = AAC-HE (Alta Eficiencia)
/// 29 = AAC-HEv2 (Alta Eficiencia versión 2)
/// </summary>
public int object_type;
/// <summary>
/// Tipo de formato de salida (0 = AAC Raw, 1 = ADTS)
/// </summary>
public int output_type;
/// <summary>
/// Tasa de bits objetivo en bits por segundo (ej., 128000 para 128 kbps)
/// </summary>
public int bitrate;
}
Estructura AACInfo¶
/// <summary>
/// Información en tiempo de ejecución del codificador AAC.
/// </summary>
public struct AACInfo
{
/// <summary>
/// Frecuencia de muestreo de entrada en Hz (ej., 44100, 48000)
/// </summary>
public int samplerate;
/// <summary>
/// Número de canales de audio (1 = mono, 2 = estéreo, 6 = 5.1, etc.)
/// </summary>
public int channels;
/// <summary>
/// Tamaño del marco AAC en muestras (típicamente 1024 para AAC-LC)
/// </summary>
public int frame_size;
/// <summary>
/// Número total de marcos codificados
/// </summary>
public long frames_done;
}
Definiciones de Interfaz¶
Definición en C¶
using System;
using System.Runtime.InteropServices;
namespace VisioForge.DirectShowAPI
{
/// <summary>
/// Estructura de configuración del codificador AAC.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct AACConfig
{
public int version;
public int object_type;
public int output_type;
public int bitrate;
}
/// <summary>
/// Información en tiempo de ejecución del codificador AAC.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct AACInfo
{
public int samplerate;
public int channels;
public int frame_size;
public long frames_done;
}
/// <summary>
/// Interfaz de configuración del codificador Monogram AAC.
/// Proporciona configuración basada en estructuras para la codificación AAC.
/// </summary>
[ComImport]
[Guid("B2DE30C0-1441-4451-A0CE-A914FD561D7F")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IMonogramAACEncoder
{
/// <summary>
/// Obtiene la configuración actual del codificador AAC.
/// </summary>
/// <param name="config">Referencia a la estructura AACConfig para recibir la configuración actual</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetConfig(ref AACConfig config);
/// <summary>
/// Establece la configuración del codificador AAC.
/// </summary>
/// <param name="config">Referencia a la estructura AACConfig que contiene la configuración deseada</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetConfig(ref AACConfig config);
}
}
Definición en C++¶
#include <unknwn.h>
// {B2DE30C0-1441-4451-A0CE-A914FD561D7F}
DEFINE_GUID(IID_IMonogramAACEncoder,
0xb2de30c0, 0x1441, 0x4451, 0xa0, 0xce, 0xa9, 0x14, 0xfd, 0x56, 0x1d, 0x7f);
/// <summary>
/// Estructura de configuración del codificador AAC.
/// </summary>
struct AACConfig
{
int version;
int object_type;
int output_type;
int bitrate;
};
/// <summary>
/// Información en tiempo de ejecución del codificador AAC.
/// </summary>
struct AACInfo
{
int samplerate;
int channels;
int frame_size;
__int64 frames_done;
};
/// <summary>
/// Interfaz de configuración del codificador Monogram AAC.
/// </summary>
DECLARE_INTERFACE_(IMonogramAACEncoder, IUnknown)
{
/// <summary>
/// Obtiene la configuración actual del codificador AAC.
/// </summary>
/// <param name="config">Puntero a la estructura AACConfig para recibir la configuración</param>
/// <returns>S_OK para éxito</returns>
STDMETHOD(GetConfig)(THIS_
AACConfig* config
) PURE;
/// <summary>
/// Establece la configuración del codificador AAC.
/// </summary>
/// <param name="config">Puntero a la estructura AACConfig con la configuración deseada</param>
/// <returns>S_OK para éxito</returns>
STDMETHOD(SetConfig)(THIS_
const AACConfig* config
) PURE;
};
Definición en Delphi¶
uses
ActiveX, ComObj;
const
IID_IMonogramAACEncoder: TGUID = '{B2DE30C0-1441-4451-A0CE-A914FD561D7F}';
type
/// <summary>
/// Estructura de configuración del codificador AAC.
/// </summary>
TAACConfig = record
version: Integer;
object_type: Integer;
output_type: Integer;
bitrate: Integer;
end;
/// <summary>
/// Información en tiempo de ejecución del codificador AAC.
/// </summary>
TAACInfo = record
samplerate: Integer;
channels: Integer;
frame_size: Integer;
frames_done: Int64;
end;
/// <summary>
/// Interfaz de configuración del codificador Monogram AAC.
/// </summary>
IMonogramAACEncoder = interface(IUnknown)
['{B2DE30C0-1441-4451-A0CE-A914FD561D7F}']
/// <summary>
/// Obtiene la configuración actual del codificador AAC.
/// </summary>
function GetConfig(var config: TAACConfig): HRESULT; stdcall;
/// <summary>
/// Establece la configuración del codificador AAC.
/// </summary>
function SetConfig(const config: TAACConfig): HRESULT; stdcall;
end;
Interfaz IVFAACEncoder¶
Descripción General¶
La interfaz IVFAACEncoder proporciona una configuración completa basada en propiedades para la codificación AAC con métodos getter/setter individuales para cada parámetro. Esta interfaz ofrece un control más fino y es más fácil de usar para cambios de configuración incrementales. GUID de la Interfaz: {0BEF7533-39E6-42a5-863F-E087FAB5D84F} Hereda de: IUnknown
Definiciones de Interfaz¶
Definición en C¶
using System;
using System.Runtime.InteropServices;
namespace VisioForge.DirectShowAPI
{
/// <summary>
/// Interfaz de configuración del codificador VisioForge AAC.
/// Proporciona control completo basado en propiedades sobre los parámetros de codificación AAC.
/// </summary>
[ComImport]
[Guid("0BEF7533-39E6-42a5-863F-E087FAB5D84F")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IVFAACEncoder
{
/// <summary>
/// Fuerza una frecuencia de muestreo de entrada específica. Establecer en 0 para aceptar cualquier frecuencia.
/// </summary>
/// <param name="ulSampleRate">Frecuencia de muestreo en Hz (ej., 44100, 48000). 0 = cualquier frecuencia</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetInputSampleRate(uint ulSampleRate);
/// <summary>
/// Obtiene la frecuencia de muestreo de entrada configurada.
/// </summary>
/// <param name="pulSampleRate">Recibe la frecuencia de muestreo en Hz. 0 si no está fija</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetInputSampleRate(out uint pulSampleRate);
/// <summary>
/// Establece el número de canales de entrada.
/// </summary>
/// <param name="nChannels">Número de canales (1=mono, 2=estéreo, 6=5.1, etc.)</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetInputChannels(short nChannels);
/// <summary>
/// Obtiene el número de canales de entrada.
/// </summary>
/// <param name="pnChannels">Recibe el número de canales</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetInputChannels(out short pnChannels);
/// <summary>
/// Establece la tasa de bits objetivo. Establecer en -1 para usar la tasa de bits máxima.
/// </summary>
/// <param name="ulBitRate">Tasa de bits en bits por segundo (ej., 128000). -1 = máximo</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetBitRate(uint ulBitRate);
/// <summary>
/// Obtiene la tasa de bits configurada.
/// </summary>
/// <param name="pulBitRate">Recibe la tasa de bits en bps. -1 si está configurado al máximo</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetBitRate(out uint pulBitRate);
/// <summary>
/// Establece el tipo de perfil AAC.
/// </summary>
/// <param name="uProfile">Perfil: 2=AAC-LC, 5=AAC-HE, 29=AAC-HEv2</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetProfile(uint uProfile);
/// <summary>
/// Obtiene el perfil AAC actual.
/// </summary>
/// <param name="puProfile">Recibe el tipo de perfil</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetProfile(out uint puProfile);
/// <summary>
/// Establece el formato de salida.
/// </summary>
/// <param name="uFormat">Formato: 0=AAC Raw, 1=ADTS</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetOutputFormat(uint uFormat);
/// <summary>
/// Obtiene el formato de salida.
/// </summary>
/// <param name="puFormat">Recibe el formato de salida</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetOutputFormat(out uint puFormat);
/// <summary>
/// Establece el valor de desplazamiento de tiempo para el ajuste de marca de tiempo.
/// </summary>
/// <param name="timeShift">Desplazamiento de tiempo en milisegundos</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetTimeShift(int timeShift);
/// <summary>
/// Obtiene el valor de desplazamiento de tiempo.
/// </summary>
/// <param name="ptimeShift">Recibe el desplazamiento de tiempo en milisegundos</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetTimeShift(out int ptimeShift);
/// <summary>
/// Habilita o deshabilita el canal de Efectos de Baja Frecuencia (LFE).
/// </summary>
/// <param name="lfe">1 para habilitar LFE, 0 para deshabilitar</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetLFE(uint lfe);
/// <summary>
/// Obtiene el estado del canal LFE.
/// </summary>
/// <param name="p">Recibe el estado LFE (1=habilitado, 0=deshabilitado)</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetLFE(out uint p);
/// <summary>
/// Habilita o deshabilita el Modelado de Ruido Temporal (TNS).
/// TNS mejora la codificación de sonidos transitorios.
/// </summary>
/// <param name="tns">1 para habilitar TNS, 0 para deshabilitar</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetTNS(uint tns);
/// <summary>
/// Obtiene el estado de TNS.
/// </summary>
/// <param name="p">Recibe el estado TNS (1=habilitado, 0=deshabilitado)</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetTNS(out uint p);
/// <summary>
/// Habilita o deshabilita la codificación estéreo Mid-Side.
/// Puede mejorar la compresión para audio estéreo.
/// </summary>
/// <param name="v">1 para habilitar codificación mid-side, 0 para deshabilitar</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int SetMidSide(uint v);
/// <summary>
/// Obtiene el estado de codificación mid-side.
/// </summary>
/// <param name="p">Recibe el estado mid-side (1=habilitado, 0=deshabilitado)</param>
/// <returns>HRESULT (0 para éxito)</returns>
[PreserveSig]
int GetMidSide(out uint p);
}
}
Definición en C++¶
#include <unknwn.h>
// {0BEF7533-39E6-42a5-863F-E087FAB5D84F}
DEFINE_GUID(IID_IVFAACEncoder,
0x0bef7533, 0x39e6, 0x42a5, 0x86, 0x3f, 0xe0, 0x87, 0xfa, 0xb5, 0xd8, 0x4f);
/// <summary>
/// Interfaz de configuración del codificador VisioForge AAC.
/// </summary>
DECLARE_INTERFACE_(IVFAACEncoder, IUnknown)
{
STDMETHOD(SetInputSampleRate)(THIS_
unsigned long ulSampleRate
) PURE;
STDMETHOD(GetInputSampleRate)(THIS_
unsigned long* pulSampleRate
) PURE;
STDMETHOD(SetInputChannels)(THIS_
short nChannels
) PURE;
STDMETHOD(GetInputChannels)(THIS_
short* pnChannels
) PURE;
STDMETHOD(SetBitRate)(THIS_
unsigned long ulBitRate
) PURE;
STDMETHOD(GetBitRate)(THIS_
unsigned long* pulBitRate
) PURE;
STDMETHOD(SetProfile)(THIS_
unsigned long uProfile
) PURE;
STDMETHOD(GetProfile)(THIS_
unsigned long* puProfile
) PURE;
STDMETHOD(SetOutputFormat)(THIS_
unsigned long uFormat
) PURE;
STDMETHOD(GetOutputFormat)(THIS_
unsigned long* puFormat
) PURE;
STDMETHOD(SetTimeShift)(THIS_
int timeShift
) PURE;
STDMETHOD(GetTimeShift)(THIS_
int* ptimeShift
) PURE;
STDMETHOD(SetLFE)(THIS_
unsigned long lfe
) PURE;
STDMETHOD(GetLFE)(THIS_
unsigned long* p
) PURE;
STDMETHOD(SetTNS)(THIS_
unsigned long tns
) PURE;
STDMETHOD(GetTNS)(THIS_
unsigned long* p
) PURE;
STDMETHOD(SetMidSide)(THIS_
unsigned long v
) PURE;
STDMETHOD(GetMidSide)(THIS_
unsigned long* p
) PURE;
};
Definición en Delphi¶
uses
ActiveX, ComObj;
const
IID_IVFAACEncoder: TGUID = '{0BEF7533-39E6-42a5-863F-E087FAB5D84F}';
type
/// <summary>
/// Interfaz de configuración del codificador VisioForge AAC.
/// </summary>
IVFAACEncoder = interface(IUnknown)
['{0BEF7533-39E6-42a5-863F-E087FAB5D84F}']
function SetInputSampleRate(ulSampleRate: Cardinal): HRESULT; stdcall;
function GetInputSampleRate(out pulSampleRate: Cardinal): HRESULT; stdcall;
function SetInputChannels(nChannels: SmallInt): HRESULT; stdcall;
function GetInputChannels(out pnChannels: SmallInt): HRESULT; stdcall;
function SetBitRate(ulBitRate: Cardinal): HRESULT; stdcall;
function GetBitRate(out pulBitRate: Cardinal): HRESULT; stdcall;
function SetProfile(uProfile: Cardinal): HRESULT; stdcall;
function GetProfile(out puProfile: Cardinal): HRESULT; stdcall;
function SetOutputFormat(uFormat: Cardinal): HRESULT; stdcall;
function GetOutputFormat(out puFormat: Cardinal): HRESULT; stdcall;
function SetTimeShift(timeShift: Integer): HRESULT; stdcall;
function GetTimeShift(out ptimeShift: Integer): HRESULT; stdcall;
function SetLFE(lfe: Cardinal): HRESULT; stdcall;
function GetLFE(out p: Cardinal): HRESULT; stdcall;
function SetTNS(tns: Cardinal): HRESULT; stdcall;
function GetTNS(out p: Cardinal): HRESULT; stdcall;
function SetMidSide(v: Cardinal): HRESULT; stdcall;
function GetMidSide(out p: Cardinal): HRESULT; stdcall;
end;
Perfiles AAC y Configuración¶
Perfiles AAC¶
AAC-LC (Baja Complejidad) - Perfil 2 (Recomendado): - Mejor relación calidad-tasa de bits - Menor complejidad computacional - Soporte universal de decodificadores - Uso para: Música, podcasts, bandas sonoras de video - Rango de tasa de bits: 64-320 kbps AAC-HE (Alta Eficiencia) - Perfil 5: - Optimizado para tasas de bits bajas - Utiliza Replicación de Banda Espectral (SBR) - Mejor calidad que AAC-LC a tasas de bits bajas (<= 64 kbps) - Uso para: Transmisión, voz, aplicaciones de baja tasa de bits - Rango de tasa de bits: 32-80 kbps AAC-HEv2 (Alta Eficiencia versión 2) - Perfil 29: - Optimizado aún más para tasas de bits muy bajas - Utiliza Estéreo Paramétrico (PS) además de SBR - Mejor para mono/estéreo a tasas de bits extremadamente bajas - Uso para: Transmisión de voz, ancho de banda muy bajo - Rango de tasa de bits: 16-40 kbps
Formatos de Salida¶
AAC Raw (Formato 0): - Flujo de bits AAC puro sin contenedor - Requiere contenedor externo (MP4, M4A, MKV) - Uso para: Multiplexación en archivos MP4/M4A - Tamaño de salida más pequeño ADTS (Flujo de Transporte de Datos de Audio) - Formato 1: - AAC con encabezados de marco - Autónomo, se puede reproducir directamente - Ligeramente más grande que AAC raw - Uso para: Archivos AAC independientes, transmisión - Mejor resistencia a errores
Tasas de Bits Recomendadas¶
| Caso de Uso | Canales | Perfil | Tasa de Bits | Notas |
|---|---|---|---|---|
| Voz/Podcast (mono) | 1 | AAC-LC | 64-96 kbps | Voz clara |
| Voz/Podcast (estéreo) | 2 | AAC-LC | 96-128 kbps | Voz de alta calidad |
| Música (estéreo) estándar | 2 | AAC-LC | 128-192 kbps | Buena calidad |
| Música (estéreo) alta calidad | 2 | AAC-LC | 256-320 kbps | Calidad excelente |
| Transmisión de bajo ancho de banda | 2 | AAC-HE | 48-64 kbps | Calidad aceptable |
| Ancho de banda muy bajo | 1-2 | AAC-HEv2 | 24-40 kbps | Calidad básica |
| Sonido envolvente 5.1 | 6 | AAC-LC | 384-512 kbps | Calidad de cine |
| ## Ejemplos de Uso | ||||
| ### Ejemplo en C# - IMonogramAACEncoder (Música de Alta Calidad) | ||||
| ||||
| ### Ejemplo en C# - IVFAACEncoder (Configuración Completa) | ||||
| ||||
| ### Ejemplo en C# - Transmisión de Baja Tasa de Bits (AAC-HE) | ||||
| ||||
| ### Ejemplo en C# - Codificación de Voz/Podcast | ||||
| ||||
| ### Ejemplo en C++ - IMonogramAACEncoder | ||||
| ||||
| ### Ejemplo en C++ - IVFAACEncoder | ||||
| ||||
| ### Ejemplo en Delphi - IMonogramAACEncoder | ||||
| ||||
| ### Ejemplo en Delphi - IVFAACEncoder | ||||
| ||||
| ## Mejores Prácticas | ||||
| ### Selección de Perfil | ||||
| Usar AAC-LC (Perfil 2) cuando: | ||||
| - Codificación de música o audio de alta calidad | ||||
| - Tasa de bits >= 96 kbps | ||||
| - Se requiere máxima compatibilidad de decodificadores | ||||
| - Recomendado para la mayoría de escenarios | ||||
| Usar AAC-HE (Perfil 5) cuando: | ||||
| - Restricciones de tasa de bits (32-80 kbps) | ||||
| - Transmisión sobre ancho de banda limitado | ||||
| - Contenido de voz/habla aceptable a menor calidad | ||||
| - Aplicaciones de transmisión móvil/web | ||||
| Usar AAC-HEv2 (Perfil 29) cuando: | ||||
| - Ancho de banda extremadamente limitado (< 40 kbps) | ||||
| - Contenido solo de voz | ||||
| - Solo mono o estéreo (no multicanal) | ||||
| ### Pautas de Tasa de Bits | ||||
| Voz/Podcast Mono: | ||||
| - Mínimo: 48-64 kbps (AAC-LC) | ||||
| - Recomendado: 80-96 kbps (AAC-LC) | ||||
| - Alta calidad: 128 kbps (AAC-LC) | ||||
| Música Estéreo: | ||||
| - Mínimo: 96-128 kbps (AAC-LC) | ||||
| - Recomendado: 192-256 kbps (AAC-LC) | ||||
| - Alta calidad: 256-320 kbps (AAC-LC) | ||||
| Aplicaciones de Transmisión: | ||||
| - Bajo ancho de banda: 48-64 kbps (AAC-HE, estéreo) | ||||
| - Ancho de banda estándar: 96-128 kbps (AAC-LC, estéreo) | ||||
| - Alto ancho de banda: 192-256 kbps (AAC-LC, estéreo) | ||||
| ### Selección de Formato de Salida | ||||
| Usar AAC Raw (Formato 0) cuando: | ||||
| - Multiplexación en contenedores MP4, M4A o MKV | ||||
| - El contenedor proporciona encuadre y sincronización | ||||
| - Recomendado para la mayoría de aplicaciones de video/multimedia | ||||
| Usar ADTS (Formato 1) cuando: | ||||
| - Creación de archivos .aac independientes | ||||
| - Transmisión sin contenedor | ||||
| - Se necesita mejor recuperación de errores | ||||
| - Pruebas/depuración de audio de forma independiente | ||||
| ### Banderas de Características | ||||
| Modelado de Ruido Temporal (TNS): | ||||
| - Habilitar para todos los escenarios de codificación | ||||
| - Mejora la respuesta transitoria | ||||
| - Mejor calidad para sonidos de percusión | ||||
| - Sobrecarga computacional mínima | ||||
| Codificación Estéreo Mid-Side: | ||||
| - Habilitar para codificación de música estéreo | ||||
| - Mejora la eficiencia de compresión | ||||
| - Mejor imagen estéreo | ||||
| - Sin beneficio para mono o estéreo no correlacionado | ||||
| Efectos de Baja Frecuencia (LFE): | ||||
| - Habilitar solo para sonido envolvente 5.1/7.1 | ||||
| - Canal de subwoofer dedicado (.1) | ||||
| - Deshabilitar para estéreo/mono | ||||
| ## Solución de Problemas | ||||
| ### Baja Calidad de Audio | ||||
| Síntomas: Sonido apagado, artefactos, poca claridad | ||||
| Posibles Causas: | ||||
| 1. Tasa de bits demasiado baja para el contenido | ||||
| 2. Perfil incorrecto para la tasa de bits | ||||
| 3. TNS deshabilitado | ||||
| Soluciones: | ||||
| - Aumentar la tasa de bits a los niveles recomendados (ver tablas arriba) | ||||
| - Para tasas de bits bajas (<= 80 kbps), usar AAC-HE en lugar de AAC-LC | ||||
- Habilitar TNS: SetTNS(1) | ||||
| - Para música, asegurar tasa de bits >= 128 kbps con AAC-LC | ||||
| ### Fallos de Inicialización del Codificador | ||||
| Síntomas: Los métodos SetConfig o Set devuelven códigos de error | ||||
| Posibles Causas: | ||||
| 1. Frecuencia de muestreo no soportada | ||||
| 2. Tasa de bits inválida para el perfil | ||||
| 3. Configuración de canales incompatible | ||||
| Soluciones: | ||||
| - Usar frecuencias de muestreo estándar: 44100, 48000 Hz | ||||
| - Verificar que la tasa de bits sea apropiada para el perfil | ||||
| - Comprobar que el recuento de canales coincida con el audio de origen | ||||
| - Para AAC-HE, mantener la tasa de bits <= 128 kbps | ||||
| ### El Archivo No Se Reproduce | ||||
| Síntomas: El archivo AAC no se reproduce en reproductores multimedia | ||||
| Posibles Causas: | ||||
| 1. AAC Raw sin contenedor | ||||
| 2. Perfil no soportado | ||||
| 3. Flujo corrupto | ||||
| Soluciones: | ||||
- Usar formato de salida ADTS (SetOutputFormat(1)) para archivos independientes | ||||
- Usar AAC Raw (SetOutputFormat(0)) solo con contenedor MP4/M4A | ||||
| - Verificar que el reproductor soporte el perfil AAC (HE/HEv2 puede no ser soportado en reproductores antiguos) | ||||
| - Asegurar la finalización adecuada del flujo en el gráfico de filtros | ||||
| ### Problemas de Compatibilidad | ||||
| Síntomas: AAC se reproduce en algunos dispositivos pero no en otros | ||||
| Posibles Causas: | ||||
| 1. Perfil avanzado no soportado (AAC-HE/HEv2) | ||||
| 2. Configuración no estándar | ||||
| Soluciones: | ||||
| - Usar AAC-LC (Perfil 2) para máxima compatibilidad | ||||
| - Usar frecuencias de muestreo estándar (44100 o 48000 Hz) | ||||
| - Mantener las tasas de bits dentro de los rangos recomendados | ||||
| - Evitar tasas de bits muy bajas (< 64 kbps) para AAC-LC | ||||
| --- |