Acerca de
Tutoriales
Comunidad
Actualidad
Enlaces





En macprogramadores.org
En Internet

Trucos

Unir varios ficheros de vídeo



Muchas veces disponemos de varios ficheros de vídeo que queremos unir. Este truco muestra cómo hacer un pequeño programa Automator que realiza esta tarea.


El comando mencoder

El comando mencoder es un comando GPL que nos permite codificar los formatos de vídeo MPEG-1/2/4 y AVI. Por desgracia no codifica ni decodifica WMV, el formato de vídeo de Microsoft. Este comando no viene por defecto en Mac OS X, pero puede buscarlo en Internet.

En la web es muy común que los vídeos se distribuyen partidos en trozos más fáciles de bajar. Este comando permite volver a juntar varios vídeos que cumplan la condición de tener la misma resolución y formato.

Si tenemos los ficheros br01.mpg br02.mpg br03.mpg, podemos juntarlos en el fichero br_unido.mpg con el comando:

$ mencoder -oac copy -ovc copy -forceidx -of mpeg -o br_unido.mpg br01.mpg br02.mpg br03.mpg

Donde -oac copy y -ovc copy indican que no queremos transcodificar, sólo copiar los elementary stream de audio y vídeo a la salida. La opción -of indica el formato de salida al que codificar (avi o mpeg), y -o indica el fichero de salida. La opción -forceidx, aunque no suele ser necesaria, es útil porque fuerza a que se reconstruya el índice de sistema.

Un script para unir los videos

Para facilitar la ejecución de este comando (y construir el programa del siguiente apartado), podemos crear un script como el siguiente:

#!/bin/bash

# Este comando es un ejemplo escrito por Fernando López
# para macprogramadores.org

# Comprueba que se reciba al menos dos ficheros por argumento
if [ -z $2 ]; then
   echo "No se recibieron argumentos suficientes"
   exit 1
fi

# Obtiene el nombre y extension del primer fichero
# (todos los ficheros deberian tener la misma extension)
# El nombre sirve para crear el nombre del fichero final
# La extension sirve para conocer el formato a que convertir
nombre=${1%.*}
ext=${1##*.}

# Determina el tipo de la extension
case $ext in
     mpeg|mpg) ext="mpeg";;
     avi) ;;
     *) echo "Extension $ext no valida"; exit 1;;
esac

# Une los ficheros de video
nombre=${nombre}_unidos.${ext}
comando=/usr/local/bin/mencoder
if [ -x $comando ]; then
   $comando -oac copy -ovc copy -forceidx -of $ext -o $nombre $@   
else
   echo "No se encuentra $comando"
   exit 1; 
fi

Puede descargar este script de aquí. El comando supone que mencoder se encuentra en la ruta /usr/local/bin/mencoder. Como argumento recibe los ficheros de vídeo a usar, y los une en otro fichero cuyo nombre es el mismo que el del primer fichero pasado, pero con el sufijo _unidos. Por ejemplo, para unir los ficheros de vídeo anteriores, ponga el permiso de ejecución a el fichero de script, y ejecute el script de la forma:

$ chmod +x unirvideos.sh
$ unirvideos.sh br01.mpg br02.mpg br03.mpg

El script generará el fichero br01_unidos.mpg.

Puede colocar este script en algún directorio que esté en el PATH, y ya podrá unir ficheros de vídeo desde la línea de comandos. Pero en el siguiente apartado veremos cómo ejecutar este script desde Finder.

Ejecutar mencoder desde Automator

Automator, es una herramienta de programación (que se distribuye gratuitamente con las Developer Tools) la cual nos permite crear pequeñas aplicaciones, de este tipo, en muy poco tiempo.

Podemos construir fácilmente un aplicación Automator, como la de la figura, que al arrastrar sobre ella varios ficheros de vídeo los una, para lo cual se ejecuta el script anterior.

Para ello ejecute Automator, concatene las acciones Get Selected Finder Items y Run Shell Script, tal como muestra la figura. La acción Get Selected Finder Items permite conocer los ficheros seleccionados en Finder cuando se ejecuta la aplicación Automator, o también, como va a ser nuestro caso, conocer los ficheros arrastrados sobre la aplicación Automator. Los ficheros seleccionados se pasan a la acción Run Shell Script que ejecuta el script sobre ellos. Para que los ficheros seleccionados se pasen como argumento, seleccione la opción Pass input as argument.

Cuando vaya a guardar la aplicación Automator con la opción File|Save As..., verá que está se puede guardar de dos formas:

  • Como un Workflow, lo cual le permite editar a posteriori la aplicación. Es decir, sería el equivalente al código fuente de un programa.
  • Como una Application, lo cual crea un ejecutable con un icono.

Guárdela como una aplicación con el nombre unirvideos, para obtener una aplicación como la de la primera figura.

Un tercera opción es guardar la aplicación con la opción File|Save As Plug-in, en este caso puede generar un Plug-in de Finder como el de la figura que luego se podrá ejecutar sobre los ficheros de vídeo seleccionados.

Por último comentar existe una aplicación GPL llamada DropScript que también permite crear iconos que, al arrastar sobre ella ficheros, también ejecuta un script. La figura muestra la forma que tienen las aplicaciones generadas por DropScript.

Para crear la aplicación de la última figura basta con que arrastre el fichero unirvideos.sh sobre la aplicación DropScript, para obtener otra aplicación llamada Dropunirvideos.