SGCG

…esto no es un subtítulo…

Ir a: contenido categorías calendario archivo suscripción

Volver arriba

*nix en casos prácticos: cambiar el formato de compresión de muchos vídeos

2012-04-10

Llega otra entrega de *nix en casos prácticos, la serie de artículos sobre usos y técnicas de sistemas *nix en general y de la potente línea de órdenes en particular. Hoy vamos a ver cómo convertir un montón de vídeos de un formato de compresión a otro diferente. y qué ficheros aparecen sólo en uno de los directorios.

*nix en casos prácticos no es un curso para absolutos principiantes, sino que está pensado para estimular la curiosidad de quien ya tiene una mínima capacidad de autodefensa en la línea de órdenes y puede comprender los ejemplos (¡aunque sea con la ayuda de un manual!) y, con un poquito de inventiva, crear sus propias soluciones para problemas semejantes a los presentados.

El problema

Tenemos una videocámara que produce vídeos de alta calidad… y tan pesados que es difícil compartirlos con nuestros amigos y no hay manera de verlos fluidos sin hardware dedicado y potente. Tenemos varios vídeos y nos da mucha pereza convertirlos a mano con algún lento e inflexible programa gráfico. Lo que queremos hacer es entrar en un cierto directorio y coger todos los ficheros con nombres acabados en, digamos, .MTS y convertirlos a algo más manejable, digamos el formato MPEG-2 que se encuentra en los deuvedés PAL.

La solución

Digamos que disponemos de algún programa con interfaz de línea de órdenes que podemos usar para hacer la conversión. Podemos usar, por ejemplo, ffmpeg, que viene con una opción muy concisa para hacer la conversión que tenemos en mente: -target pal-dvd. Tenemos un fichero de entrada (por ejemplo, 00001.MTS), en el formato de alta calidad pero incomodísimo de usar que produce nuestra videocámara; queremos crear un fichero de salida (en este ejemplo, 000001.mpg) en el formato de menor calidad pero más ligero y cómodo de usar. La orden que tendríamos que dar sería ésta:
ffmpeg -i 000001.MTS -target pal-dvd 000001.mpg.
¡Alto! ¿Tenemos que escribir todos los nombres de fichero como hacían los cavernícolas con sus computadores de sílex? ¡Eso no supondría muchas ventajas frente a usar una interfaz gráfica (con nuestro ratón de sílex)! No hay problema. Nuestro intérprete shell es programable y podemos recorrer con un bucle todos los ficheros que nos interesan. Haríamos algo así:
for video_pesado in *.MTS; do
video_ligero=${video_pesado%MTS}mpg
ffmpeg -i $video_pesado -target pal-dvd $video_ligero
done
Ya está. Repasemos qué hace cada línea.

for video_pesado in *.MTS; do
Con esto empezamos un bucle que recorre uno a uno todos los ficheros acabados en .MTS del directorio actual. Para cada iteración, la variable video_pesado adopta el valor del nombre de uno de los ficheros acabados en .MTS.
video_ligero=${video_pesado%MTS}mpg
Creamos una variable, video_ligero, cuyo valor es el mismo que el de video_pesado, pero con el sufijo mpg en vez de MTS. La expresión ${video_pesado%MTS} coge el valor de video_pesado y elimina la incidencia de MTS por la derecha; hemos usado un tipo de sintaxis de nuestro shell POSIX que sirve para eliminar sufijos.
ffmpeg -i $video_pesado -target pal-dvd $video_ligero
Aquí está la orden que le damos a ffmpeg. Le decimos esto: coge como fichero de entrada el que se llama como el valor de la variable video_pesado (-i $video_pesado), convierte el contenido al formato que se usa en los deuvedés PAL (-target pal-dvd) y usa el valor de la variable video_ligero como nombre del fichero de salida que contendrá el vídeo convertido ($video_ligero).
done
Terminamos con esto.

Categorías: Informática

Permalink: http://sgcg.es/articulos/2012/04/10/unix-en-casos-practicos-cambiar-el-formato-de-compresion-de-muchos-videos/