miércoles, 28 de noviembre de 2007

Incrustar subtítulos permanentemente a un video en GNU/Linux

Funte: HacheMuda

Hace unos días necesité incrustar un fichero de subtítulos .srt en un video, para colgarlo en el post del Doctor Cox parodiando al Doctor House. Nunca lo había hecho pero es muy sencillo:

Partiendo de un video y unos subtítulos, pongamos que se llaman mi_video.avi y mis_subs.srt, es muy fácil insertar los subtítulos en el video para que se queden pegados permanentemente. Te propongo dos opciones para hacerlo, una en línea de comandos con Mencoder y otra con interfaz gráfica usando Avidemux, para que elijas la que más te guste:

1- Usando Mencoder, en línea de comandos:

El patrón de Mencoder para este caso sería:

$ mencoder -oac copy -ovc [codec] [codec opts] -sub [sub file.srt] -subfont-text-scale [3 normally]

Por ejemplo podemos ejecutar:

$ mencoder mi_video.avi -oac pcm -ovc lavc -lavcopts vcodec=xvid:mbd=2:trell:autoaspect -sub mis_subs.srt -subfont-text-scale 3 -o video_final.avi

Así obtendríamos un video llamado video_final.avi con códec XVid y con los subtítulos integrados con un tamaño de fuente normal.

2- Usando Avidemux:

Avidemux nos da la oportunidad de hacer algunas tareas de edición de video con interfaz gráfica. Y funciona realmente bien. Para insertar los subtítulos requiere recodificar el video completo, no vale con decirle que haga una copia porque no insertará los nuevos subtítulos.

Recuerda decirle a Avidemux la ruta correcta de la fuente tipográfica, ya que la que viene por defecto no es correcta en muchas distribuciones de GNU/Linux.

Fuentes:

3 comentarios:

Anónimo dijo...

hola, tu tutorial de mencoder es muy útil, pero cuando hago todo el proceso me tira el siguiente error:

andoni@ubuntu:~/Escritorio$ mencoder Heroes.2x11.Powerless.avi -oac pcm -ovc lavc -lavcopts vcodec=xvid:mbd=2:trell:autoaspect -sub heroes.211.hdtv-lol.esp.srt -subfont-text-scale 3 -o video_final
MEncoder 2:1.0~rc2-0ubuntu1~gutsy1 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Core(TM)2 Duo CPU T7100 @ 1.80GHz (Family: 6, Model: 15, Stepping: 13)
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
success: format: 0 data: 0x0 - 0x15dbe800
AVI file format detected.
[aviheader] Video stream found, -vid 0
[aviheader] Audio stream found, -aid 1
VIDEO: [XVID] 624x352 12bpp 23.976 fps 1007.7 kbps (123.0 kbyte/s)
[V] filefmt:3 fourcc:0x44495658 size:624x352 fps:23.98 ftime:=0.0417
==========================================================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
==========================================================================
SUB: Detected subtitle file format: subviewer
SUB: Read 652 subtitles.
SUB: Adjusted 8 subtitle(s).
Cannot find codec 'xvid' in libavcodec...
Couldn't open video filter 'lavc'.
Failed to open the encoder.

Exiting...
andoni@ubuntu:~/Escritorio$

qué debo hacer?
un saludo.

Paquillo Dubois dijo...

Hola.

Creo que tu problema se debe a que no tienes instalados los codecs que se indican en la linea de comando que se pone de ejemplo. Fíjate:

Cannot find codec 'xvid' in libavcodec...
Couldn't open video filter 'lavc'.
Failed to open the encoder.

Por tanto, la solución sería cambiar alguna opción o instalar un unos buenos codecs. Como lo más sencillo es lo segundo, mira este enlace:
http://bioinformatiquillo.blogspot.com/2007/09/conversor-de-audio-para-ubuntu.html
y ejecuta unicamente el gran comando que aparece al pricipio (olvídate de medibuntu y el resto)

Anónimo dijo...

Saludos,

a mi tambien me da el mensaje de:

Cannot find codec 'xvid' in libavcodec..

He ejecutado la linea esa tan larga que mencionas pero me sigue dando el error.

Alguna idea de como añadir el codec de xvid a libavcodec?

Ciao