gentoo linux, java, software libre y otras hierbas
oct, 23 2008 - 12:45 pm

Sobreponer imagen o texto en movimiento [ffmpeg] – Uso de hooks [3ra parte]

Ahora que conocemos las variables que podemos usar con la librería imlib2, vamos con dos ejemplos simples en el que vamos a sobreponer una imagen en movimiento y luego un crear un efecto de “créditos” con archivo de texto.

Ejemplo 1 – Imagen en movimiento

En este sencillo ejemplo se insertará una imagen realizando una trayectoría lineal a través del video. El comando es el siguiente:

ffmpeg -i entrada.avi -vhook ‘/usr/lib/vhook/imlib2.so -x 10+0.5*N -y 20+0.5*N -i tux.png’ salida.mpg

Explicación…

En este comando usamos las variables que se explican en la entrada pasada:

  • -vhook, activamos el uso de los hooks
  • /usr/lib/vhook/imlib2.so, indica que usaremos la librería imlib2
  • -x 10+0.5*N y -y 20+0.5*N, representa la coordenada de la imagen en cada frame. Recordemos que N es igual al número del frame actual. Por tanto, a medida que N va incrementando, las coordenadas X y Y también. Esto hace que la imagen se mueva en diagonal desde la esquina superior izquiera, hacia la esquina inferior derecha.
  • -i tux.png, es la imagen a utilizar

Ejemplo 2 – Texto en movimiento [tipo créditos]

En el siguiente ejemplo usamos imlib2 para leer un archivo de texto y mostrar su contenido en forma de créditos; el comando es:

ffmpeg -i entrada.avi -vhook ‘/usr/lib/vhook/imlib2.so -F /var/lib/defoma/gs.d/dirs/fonts/Purisa.ttf/10 -x 100 -y -1.0*N -f creditos.txt’ salida.mpg

Explicación…

  • -vhook, activamos el uso de los hooks
  • /usr/lib/vhook/imlib2.so, indica que usaremos la librería imlib2
  • -F /var/lib/defoma/gs.d/dirs/fonts/Purisa.ttf/10, indica que usaremos el tipo de letra Purisa a tamaño 10
  • -x 100 y -y -1.0*N, representa la coordenada del texto en cada frame. Recordemos que N es igual al número del frame actual. Como puedes ver el valor de X es siempre constante, puesto que no queremos que se mueva hacia los lados. Por otro lado, Y varía cada vez que pasemos al siguiente frame, o sea que, a medida que N va incrementando, las coordenadas Y también.
    En este ejemplo los créditos se mueven de abajo hacia arriba. Si quisieramos invertir dicho movimiento, bastaría con poner el parámetro de -y en positivo.
  • -f creditos.txt, es el archivo de texto que contiene los créditos

3 Comentarios | deja el tuyo

oct, 23 2008 - 5:55 am

Parámetros avanzados de los hooks y imlib2.so en ffmpeg – [2da parte]

En el anterior artículo veíamos un par de ejemplos del uso de hooks, específicamente para sobreponer imágenes o texto en un video, aunque no hicimos nada avanzado. Antes de continuar con esta serie de ejemplos, vamos a repasar un poco las opciones avanzadas para imlib2.so.

Algunas veces necesitamos sobreponer imágenes o texto en movimiento, para lo cual imlib2.so proporciona algunas variables y constantes que podemos usar al momento de fijar las coordenadas; estas son:

N Número del frame (inicia en cero)
H altura del frame
W anchura del frame
h altura de la imagen
w anchura de la imagen
X coordenada horizontal previa del texto o imagen
Y coordenada vertical previa del texto o imagen

Es posible además usar la constante PI y funciones matemáticas como por ejemplo seno (sin), valor absoluto (abs), tangente (tan), etc. (todas las que están disponibles  en el evaluador de fórmulas de ffmpeg).

Y si te preguntas para qué demonios se utilzan las fórmulas matemáticas, pues bien… resultan especialmente útiles cuando se quieren realizar efectos de movimiento con curvas, de manera automática. Vamos a ver un ejemplo en la próxima entrada; pero antes es importante que tengas claro esto.

Un comentario | deja el tuyo

oct, 22 2008 - 8:00 am

Sobreponer imagen o texto a un video con ffmpeg – Uso de hooks [1ra parte]

Ésta vez aprenderemos algo bastante útil a la hora de editar videos con ffmpeg, y es el uso de hooks. Los hooks permiten esencialmente modificar videos. Se utilizan añadiendo la opción -vhook al ffmpeg, se pueden usar cuantos sean necesarios, y se ejecutarán en el orden en que son escritos en el comando.

Los hooks utilizan módulos externos para realizar las tareas de edición del video. Dichos módulos no son más que librerías dinámicas (.so, .dll, .dylib), que por lo general se encuentran en /usr/lib/vhook/. Dependiendo de la tarea deseada, utilizamos alguno de estos módulos; para el caso de sobreponer una imagen o texto utilizaremos imlib2.so.

Uso de imlib2.so

Usando este módulo es posible sobreponer una imagen o texto a un video. Podemos especificar el texto directamente, o indicar un archivo de texto donde se encuentre.

‘-C <rgb.txt>’ Nombre de archivo para leer el tipo de colores RGB a usar
‘-c <color>’ El color del texto
‘-F <fontname>’ Tipo de fuente y tamaño
‘-t <text>’ El texto
‘-f <filename>’ El nombre del archivo desde donde se leerá el texto
‘-x <expression>’ coordenada x del texto o imagen
‘-y <expression>’ coordenada y del texto o imagen
‘-i <filename>’ Nombre del archivo de imagen
‘-R <expression>’ Valor para color R (red=rojo)
‘-G <expression>’ Valor para color G (green=verde)
‘-B <expression>’ Valor para color B (blue=azul)
‘-A <expression>’ Valor para el canal Alpha

Leer el resto de la entrada…

9 Comentarios | deja el tuyo

« Entradas anteriores
Entradas recientes »