Bueno, pues me ha costado, pero he encontrado la solución... tras varias búsquedas en Google y varias horas probando tal y cual combinación de opciones, he vuelto a empezar desde el principio:
man mencoder, y que la consola nos guíe.
Partimos de la siguiente estructura:
mencoder -o video.avi -ovc CODECVIDEO -oac CODECAUDIO video.wmv mencoder --> el programa que usaremos para la codificación
-o video.avi --> nombre del archivo resultante
video.wmv --> nombre del archivo de origen
-ovc CODECVIDEO --> códec de vídeo que usaremos (sustituir
CODECVIDEO)
-oac CODECAUDIO --> códec de audio que usaremos (sustituir
CODECAUDIO)
Bien, la cuestión es elegir el códec adecuado. Y cómo sabemos qué codecs tenemos disponibles? Empecemos con los codecs de audio. Obtendremos una lista de los mismos en la consola de comandos:
[dan@dan ~]$ mencoder -oac help
Using GNU internationalization
Original domain: messages
Original dirname: /usr/share/locale
Current domain: mplayer
Current dirname: /usr/share/locale
MEncoder 1.0pre7-3.4.3 (C) 2000-2005 MPlayer Team
CPU: Advanced Micro Devices Athlon MP/XP Thoroughbred (Family: 6, Stepping: 1)
Detected cache-line size is 64 bytes
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 0
Compiled with runtime CPU detection - WARNING - this is not optimal!
To get best performance, recompile MPlayer with --disable-runtime-cpudetection.
77 audio & 184 video codecs
File not found: 'frameno.avi'
Failed to open frameno.avi
Available codecs:
copy - frame copy, without re-encoding (useful for AC3)
pcm - uncompressed PCM audio
mp3lame - cbr/abr/vbr MP3 using libmp3lame
lavc - FFmpeg audio encoder (MP2, AC3, ...)
Exiting... (error parsing cmdline)
[dan@dan ~]$
Bueno, no vamos a complicarnos... usaremos directamente
mp3lame, que es el que he usado en mis anteriores intentos, y con el sonido no he tenido ningún problema.
Ahora, lo problemático... los codecs de vídeo. Recurrimos igualmente a la consola para conocer nuestras opciones:
[dan@dan ~]$ mencoder -ovc help
Using GNU internationalization
Original domain: messages
Original dirname: /usr/share/locale
Current domain: mplayer
Current dirname: /usr/share/locale
MEncoder 1.0pre7-3.4.3 (C) 2000-2005 MPlayer Team
CPU: Advanced Micro Devices Athlon MP/XP Thoroughbred (Family: 6, Stepping: 1)
Detected cache-line size is 64 bytes
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 0
Compiled with runtime CPU detection - WARNING - this is not optimal!
To get best performance, recompile MPlayer with --disable-runtime-cpudetection.
77 audio & 184 video codecs
File not found: 'frameno.avi'
Failed to open frameno.avi
Available codecs:
copy - frame copy, without re-encoding. Doesn't work with filters.
frameno - special audio-only file for 3-pass encoding, see DOCS.
raw - uncompressed video. Use fourcc option to set format explicitly.
nuv - nuppel video
divx4 - divx4linux/divx5linux library (depends on configuration)
lavc - libavcodec codecs - best quality!
vfw - VfW DLLs, currently only AVID is supported.
qtvideo - QuickTime DLLs, currently only SVQ1/3 are supported.
libdv - DV encoding with libdv v0.9.5
xvid - XviD encoding
Exiting... (error parsing cmdline)
[dan@dan ~]$
Bien, empecemos a descartar opciones... por lo visto
frameno sólo maneja el audio, cosa que no me sirve. He probado
raw, y el tamaño estimado del archivo resultante es de casi 10 GB, cuando el archivo de origen es de apenas 260 MB, así que lo descartamos.
Nuv no sé qué es, así que de momento lo aparco.
Lavc y
Xvid me han dado malos resultados en anteriores intentos, así que quedan descartados.
Qtvideo no es precisamente lo que busco. De los que quedan cuál probaríais? He probado
divx4, y aunque el tamaño estimado del archivo final supera los 400 MB (casi duplica el tamaño del original), y el tiempo estimado de procesado es casi el doble que con
lavc, creo que es el códec con el que me voy a quedar, ya que el resultado es perfecto. Por lo tanto, el código quedará finalmente así:
mencoder -o video.avi -ovc divx4 -oac mp3lame video.wmv
Me ha costado, pero lo he encontrado. Espero que le sirva a alguien.