Etiquetas: bash, fotos, ipod, script, video
Bueno, como lo prometido es deuda, estuve trasteando en un script para adaptar imágenes al ipod. El script en cuestión es muy sencillito. Lo único que hace es recorrer el directorio que le indiquemos de forma recursiva, y si encuentra una imagen más alta que ancha (es decir, una imagen vertical), la inclina 90 grados para que se vea mejor en la pantalla del ipod (estamos hablando de un ipod video, con pantalla 4:3).
No hice nada más de conversión de formatos ni tamaño, ni nada por el estilo, porque de eso ya se encarga el tripod, que es un programa muy listo, así que para demás tareas, a bajárselo tocan. En fin, aquí está la obra:
#!/bin/bash #----------PARAMETROS DE EJECUCION---------- formatos='*.bmp *.BMP *.gif *.GIF *.jpeg *.JPEG *.jpg *.JPG *.png *.PNG' #------------------------------------------- #----------FORMATO DE CONVERSION------------ angulo_rotacion='90' #------------------------------------------- #-----------FUNCIONES------------------------ function recorrer_directorios { for i in $formatos ; do if [[ -a $i ]] ; then tamanho=`identify "${i}"` #Eliminamos el nombre del fichero de la salida del identify tamanho=${tamanho/"${i}"/} tamanho=`echo $tamanho | cut -d\ -f2` tamanho_h=`echo $tamanho | cut -dx -f1` tamanho_v=`echo $tamanho | cut -dx -f2` if (( $tamanho_v > $tamanho_h )) ; then convert "${i}" -rotate $angulo_rotacion "${i}" echo "Convertido: $i" else echo "No convertido: $i" fi fi done for i in * ; do if [[ -d $i ]] ; then #Si el elemento es un directorio cd "${i}" recorrer_directorios cd .. fi done } #------------------------------------------- echo 'Para poder ejecutar este script' echo 'es imprescindible tener instalado' echo 'el pograma de conversion imagemagick.' echo echo 'ATENCION: este script eliminara los ficheros' echo 'originales tras la conversion.' echo -n 'Desea continuar? (s/n): ' read orden if [ "$orden" = "s" ]; then echo -n 'Directorio: ' read directorio if [[ -d "${directorio}" ]] ; then #Si el elemento es un directorio cd "${directorio}" recorrer_directorios else echo "Directorio no valido" fi fi
También le hice unos pequeños retoques al script para pasar videos a formato ipod, para evitar que sacara unos cuantos mensajes de error inútiles que no pintaban nada y demás. Aquí está la versión definitiva:
#!/bin/bash #----------PARAMETROS DE EJECUCION---------- ejecutable='ffmpeg' formatos='*.asf *.ASF *.asx *.ASX *.avi *.AVI *.flv *.FLV *.m1v *.M1V *.m4v *.M4V *.mov *.MOV *.mp2 *.MP2 *.mpg *.MPG *.mpeg *.MPEG *.mp4 *.MP4 *.ogm *.OGM *.qt *.QT *.ra *.RA *.ram *.RAM *.swf *.SWF *.wmv *.WMV' #------------------------------------------- #----------FORMATO DE COMPRESION------------ audio_codec='libfaac' video_codec='mpeg4' formato_forzado='mp4' extension='mpg' audio_sampling_rate='44100' audio_bitrate='128kb' video_bitrate='300kb' tamanho_pantalla='320x240' #------------------------------------------- #-----------FUNCIONES------------------------ function recorrer_directorios { mkdir procesados mkdir salida echo ' ' for i in $formatos ; do if [[ -a $i ]] ; then #Comprimimos el fichero de video pasandolo a un fichero temporal sin extension de video para no alterar el funcionamiento del bucle $ejecutable -i "${i}" -acodec $audio_codec -ar $audio_sampling_rate -ab $audio_bitrate -vcodec $video_codec -b $video_bitrate -s $tamanho_pantalla -f $formato_forzado "${i}".tmp #Si el tamanho de la salida es 0 por culpa del audio, recomprimimos tamanhotemp=`ls -l $directorio/"${i}".tmp` tamanho=`echo $tamanhotemp | cut -d\ -f5` if [ "$tamanho" = "0" ] ; then rm "${i}".tmp $ejecutable -i "${i}" -vcodec $video_codec -b $video_bitrate -s $tamanho_pantalla -f $formato_forzado "${i}".tmp fi #Pasamos el fichero a comprimir al directorio de procesados y el fichero comprimido al directorio de salida, con la extension definitiva mv "${i}" procesados mv "${i}".tmp salida/"${i}".$extension fi done #Eliminamos los directorios temporales para no alterar el bucle mv salida/* . rm -fr salida rm -fr procesados for i in * ; do if [[ -d $i ]] ; then #Si el elemento es un directorio cd "${i}" recorrer_directorios cd .. fi done } #------------------------------------------- echo 'Para poder ejecutar este script' echo 'es imprescindible tener instalado' echo 'el pograma de conversion ffmpeg.' echo 'Se recomienda comprobar su correcto' echo 'funcionamiento con el comando:' echo 'ffmpeg -i fichero -acodec libfaac -ar 44100 -ab 128kb -vcodec mpeg4 -b 300kb -s 320x240 -f mp4 fichero_salida' echo 'En caso de error, es imprescindible' echo 'ajustar los parametros adecuados del ffmpeg' echo 'en el script.' echo echo 'ATENCION: este script eliminara los ficheros' echo 'originales tras la conversion.' echo -n 'Desea continuar? (s/n): ' read orden if [ "$orden" = "s" ]; then echo -n 'Directorio: ' read directorio if [[ -d "${directorio}" ]] ; then #Si el elemento es un directorio cd "${directorio}" recorrer_directorios else echo "Directorio no valido" fi fi
Ahora lo que más molaría sería que alguien además de yo mismo los usase xD. Si encontráis algún error, o alguna cosilla que se pudiese mejorar, no dudéis en decírmelo, y se hará lo que se pueda.
Busca en San Guguel
Paranoyas sobre
Nube de tormentags
Archivetes
Risas
Candelario
Paranoya estadística
Linquetes
Suéltame tus idas de olla
Hola.
Utilicé y modifiqué tu script de transformación de videos, para que sólo dejara como salida el audio de videos en formato mp3.
Lo he puesto en: http://portrait.cl/script-obtener-audio-desde-vide/
Me ha servido mucho!!!
Gracias!!!
5 enero 2013 a las 4:50 am
[...] buscando en google encontré un script que hacía algo parecido en esta dirección: http://www.inopia.net/parkito/2008/12/17/script-bash-cambiar-el-formato-de-imagenes-para-el-ipod/. Sólo tuve que modificarlo un poco para lograr lo que necesitaba. El script después del [...]