…esto no es un subtítulo…
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.
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.
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
video_ligero=${video_pesado%MTS}mpg
${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
-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
Categorías: Informática