Al intentar reproducir en el Nevir NVR-2089 DUC de la cocina un vídeo que suelen ver los “peques”, el vídeo se veía correctamente pero no se escuchaba nada. He mirado las características del vídeo usando MediaInfo y he visto que estaba codificado en AC3:
General
Format : AVI
Format/Info : Audio Video Interleave
File size : 669 MiB
Duration : 1h 7mn
Overall bit rate : 1 391 Kbps
Video
ID : 0
Format : MPEG-4 Visual
Format profile : Advanced Simple@L5
Format settings, BVOP : Yes
Format settings, QPel : No
Format settings, GMC : No warppoints
Format settings, Matrix : Custom
Codec ID : XVID
Codec ID/Hint : XviD
Duration : 1h 7mn
Bit rate : 1 189 Kbps
Width : 720 pixels
Height : 544 pixels
Display aspect ratio : 4:3
Frame rate : 25.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.121
Stream size : 572 MiB (85%)
Writing library : XviD 1.2.0.dev47 (UTC 2006-11-01)
Audio
ID : 1
Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Codec ID : 2000
Duration : 1h 7mn
Bit rate mode : Constant
Bit rate : 192 Kbps
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 KHz
Stream size : 92.4 MiB (14%)
Alignment : Aligned on interleaves
Interleave, duration : 40 ms (1.00 video frame)
En cambio un fichero que se escucha perfectamente está codificado en MP3 tal como se muestra a continuación:
General
Format : AVI
Format/Info : Audio Video Interleave
File size : 668 MiB
Duration : 1h 9mn
Overall bit rate : 1 346 Kbps
Video
Format : xvid
Codec ID : xvid
Duration : 1h 9mn
Bit rate : 1 205 Kbps
Width : 720 pixels
Height : 576 pixels
Display aspect ratio : 5:4
Frame rate : 25.000 fps
Standard : PAL
Bits/(Pixel*Frame) : 0.116
Stream size : 598 MiB (90%)
Audio
ID : 1
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 3
Mode : Joint stereo
Mode extension : MS Stereo
Codec ID : 55
Codec ID/Hint : MP3
Duration : 1h 9mn
Bit rate mode : Constant
Bit rate : 128 Kbps
Channel(s) : 2 channels
Sampling rate : 48.0 KHz
Bit depth : 16 bits
Stream size : 63.5 MiB (10%)
Alignment : Aligned on interleaves
Interleave, duration : 24 ms (0.60 video frame)
Por tanto, lo primero que se me ha ocurrido ha sido intentar usar VirtualDub para convertir el vídeo volviendo a codificar únicamente el sonido (VirtualDub es capaz de copiar el vídeo sin convertirlo usando la opción “Direct Stream Copy”). He ejecutado VirtualDub 1.7.6 y he visto que no podía codificar a MP3 en mi Windows 7 x64.
Entonces he usado la solución habitual: usar Google. Para poder codificar correctamente en MP3 se puede usar un codificador de alta calidad como LAME. Para usarlo con VirtualDub es necesario descargar la DLL y también el codec en formato ACM (ACM es el antiguo formato “Audio Codec Manager” anterior al más moderno DirectShow usado en Windows XP).
Una vez descargados y descomprimidos los ficheros (por ejemplo en D:\SOFT\RUN\LAME) hay que instalar el codec ACM para que VirtualDub pueda usarlo. En Windows 7 x64 no es tan sencillo como usar botón derecho encima del fichero INF y hay que hacer lo siguiente:
- Asegurarse que se han desbloqueado todos los ficheros descargados (botón derecho + Unblock o usando streams de SysInternals)
- Ejecutar un CMD con permisos administrativos (CTRL+SHIFT+RETURN o RunAs)
- Ir al directorio %windir%\SysWOW64
- Ejecutar el comando
rundll32 setupapi.dll,InstallHinfSection DefaultInstall 0 D:\SOFT\RUN\LAME\LameACM.inf
Una vez se ha rebotado el equipo, ya se tiene disponible LAME para codificar en VirtualDub. Si se tuvieran que hacer muchos ficheros de una tirada, una opción interesante es usar WinFF, crear un preset AVI como por ejemplo -f avi -vcodec copy -acodec libmp3lame -ab 128k y después arrastrar todos los ficheros al programa para comenzar a codificar usando el preset anterior.
En mi caso he escogido una codificación idéntica a la de los archivos que se escuchan perfectamente en el Nevir: MP3, 48Khz CBR Stereo, 128kbps.
Pero aún falta un paso más. Se necesita un codec AC3 en formato ACM para que VirtualDub pueda descomprimir el audio original. La solución se encuentra de nuevo usando Google en la siguiente página:
Para instalarlo hay que ejecutar el mismo comando que se ha usado con LAME (rundll32 setupapi.dll,InstallHinfSection DefaultInstall 0 D:\SOFT\RUN\AC3ACM\x86\AC3ACM.inf) y, sin rebotar, se tiene disponible en VirtualDub.