miércoles, 16 de enero de 2008

Comprimir videos a 3GP o MP4 para equipos móviles (Celular, PSP, IPod y otros)

Después de buscar y probar muchos programas para "transformar" (comprimir) videos a 3GP o MP4, he llegado a la conclusión de que por lejos el mejor de todos es SUPER © de eRightSoft. A continuación explico un poco como usarlo.

Lo primero es bajar el programa desde esta pagina donde el link de descarga nos llevara a otra y otra pagina antes de poder bajar el programa (el autor seguramente lo hizo para marcar varios hits y ganar algo de dinero con la publicidad), es un poco latoso pero el programa lo vale.

Cuando ya tenemos el programa instalado, lo ejecutamos y veremos una ventana así:

Super01

Para el ejemplo, lo que voy a hacer es convertir un video en formato FLV (que bajé de YouTube) a formato 3GP para ponerlo en mi K550, así que lo primero que hago es seleccionar como formato de salida el 3GP. Si tu quieres un video para un IPod, PSP, DS o incluso una imagen GIF para usar de avatar, seleccionas la opción que corresponde.

Super02

Automáticamente se harán algunos ajustes en el programa, vemos que el codec de video es MPEG-4 y el de audio es AAC. Además es muy recomendable marcar la opción DirectShow Decode para asegurarnos de que podremos usar cualquier tipo de video como origen.

Super03

Ahora selecciono la escala del video (tamaño en pixeles) y la relación de aspecto, esto depende del equipo donde se vaya a reproducir el video, para mi K550 elijo 176x144, aunque también podría ser 220x176 y como relación de aspecto 4:3.

Super04

La cantidad de cuadros por segundo también depende del equipo, para un celular con 15 estaría bien...

Super05

Pero yo prefiero ponerle 20 para que quede una animación un poco mas suave. Como en la lista no aparece 20, selecciono More y escribo 20.

Super06

El bitrate o nivel de compresión por defecto son 144 (kbps) lo que no es malo, pero para mejor calidad podría ser 240 o incluso podrías poner 1200... si 1200 y no creas que te va quedar un video gigantesco ya que el compresor interno (en este caso FFmpeg) es lo suficientemente inteligente como para no asignar mas bitrate del necesario. Entonces si quieres la máxima calidad puedes poner 1200 sin temor a que el resultado sea un video exageradamente pesado. La opción Hi Quality no se exactamente que hace, pero la dejo marcada, y la opción Top Quality yo no la activo (por las pruebas que he hecho a veces se gana o se pierde calidad y tamaño).

Super07

En el audio, la frecuencia de muestreo por defecto es 22050 pero yo la subo a 44100 (si tienes un oído exigente notaras la diferencia). La cantidad de canales depende de si vas a escuchar con audifonos o parlantes estéreo (2) o si solo escucharas con el altavoz (1) del celular.

Super08

El bitrate de audio por defecto es 48, pero (en mi opinión) lo mínimo aceptable es 96, si vas a escuchar con audifonos tendría que ser 128. La otra opción no se aplica al formato 3GP así que no la tocamos.

Super09

A continuación, en la sección Output podemos ver un resumen de la configuración.

Super10

Teniendo la configuración lista, vamos a agregar el o los videos que queremos convertir, para eso hacemos click derecho en algún lugar de la ventana y seleccionamos Add Multimedia File(s).

Super11

Y abrimos el o los videos.

Super12

Teniendo el video cargado y seleccionado en el programa, hacemos click en el botón Encode (Active Files) y esperamos unos minutos a que se complete el proceso...

Super13

... y ya tenemos listo el video en formato 3GP para colocarlo en el equipo (celular en mi caso).

Para que se hagan una idea, el video de prueba tiene una duración de 4 minutos 44 segundos (4:44) y al comprimirlo con la configuración que indiqué, queda pesando 8,97Mb.

A los usuarios avanzados quizás les interese saber que este programa es un GUI de FFmpeg y MEncoder entre otros, y lo que acabamos de hacer se resume en una simple línea de comando:

ffmpeg -y -i "ARCHIVO ORIGEN" -bitexact -vcodec mpeg4 -fixaspect -s 176:144 -aspect 4:3 -r 20 -b 240k -g 15 -hq -trell -maxrate 240k -bufsize 450k -acodec aac -ac 2 -ar 22050 -ab 96k -f 3gp "ARCHIVO DESTINO"
Y el resultado...

Super15


Ahh que es linda Amy Lee, me recuerda a...

martes, 15 de enero de 2008

Cambié celular (de L6 a K550)

 

Cambié mi teléfono celular!!. Tenia un Motorola L6 que compre en junio del 2006. Es un buen teléfono, muy bonito y elegante, al ser delgado es cómodo cuando lo llevas en el bolsillo. Pero desde hace un tiempo estaba teniendo problemas, se quedaba "pegado" y se ponía la pantalla blanca, al principio me pareció curioso, casi entretenido, pero el problemilla este cada vez era mas seguido y ya me estaba molestando bastante porque perdía llamadas, se quedaba pegado al contestar o durante la conversación.

Ya muy molesto con estos problemas, me decidí a hacer efectiva la "Garantía Extendida" de Falabella... es muuuuuuuy engorroso y lento el tramite, pero cumplen. Lo fome es que estas obligado a elegir un celular de igual o mayor precio porque si eliges uno mas barato pierdes el dinero de la diferencia y no puedes completarla con un producto adicional.

No me gustaba ningún modelo de los que tenían en ese momento así que tuve que decidir por el que me pareció mas decentito... un Sony Ericsson K550... MUY BUENO el teléfono, ya llevo un par de días usando y abusando del aparatito y me tiene muy conforme.

SEK550_01SEK550_02

 

 

 

 

 

 

 

(imágenes "robadas" de http://www.gsmarena.com/)

 

Tiene un diseño bastante sobrio (muy importante para mi), es relativamente delgado por lo que se puede llevar en el bolsillo cómodamente.

Al ser de la serie Cybershot cuenta con una cámara mejor que la de un celular común corriente, la descripción dice que es de 2 megapixeles con autofocus y tiene una luz que simula ser un flash... pero no es la gran cosa, no me impresiono, con la cámara digital mas barata que puedas encontrar en estos momentos sacas fotos mil veces mejores.

Lo que me gustó mucho es... la posibilidad que colocarle tarjetas de memoria Memory Stick Micro (M2), que tiene Bluetooth 2.0, radio FM, reproductor de MP3 (no tan bueno como los de la serie Walkman, pero salva), pantalla de 256K colores y 176x220 pixeles.

En general la "máquina" y el software son bastante potentes, así que da para hacer muchas cosas entretenidas... ahora mismo estoy probando programas para comprimir videos y colocarlos en el teléfono, los que incluso se pueden configurar como tono de llamada.

En resumen... el K550 es un muy buen teléfono, potente y con características adicionales muy útiles, pero (en mi opinión) el nombre Cybershot le queda grande.

 

Aquí tienen dos reviews bastante buenas (en ingles):

http://www.gsmarena.com/sony_ericsson_k550-review-128.php

http://www.mobile-review.com/review/sonyericsson-k550-en.shtml

lunes, 24 de diciembre de 2007

MySQL lento, demora al conectar (unauthenticated user)

Uhhh mucho tiempo que no escribía nada... por falta de tiempo y porque no tenia ganas.

 

Hace un tiempo tuve un problema con MySQL que me quitó el sueño varios días porque no encontré ayuda fácilmente (seguramente estaba buscando mal).

 

Un programa que yo hice (que trabaja con una base de datos MySQL), algunas veces demoraba entre 2 y 30 segundos en completar las consultas a la base de datos... después de hacer cambios en el equipo servidor, programa, red, equipos cliente el problema continuaba; incluso había días en que la demora se producía pocas veces y era muy corta y otros días era muy frecuente. Ni se imaginan la vergüenza que me daba al ver que mi programa "se quedaba pegado".

 

mysql> show processlist; ¡¡¡Eso es lo primero que debería haber hecho!!!. Cuando se producía la demora, se podía ver en la lista de procesos, una o varias líneas que como usuario ponía: "unauthenticated user"... esa fue la palabra mágica que me ayudo a encontrar el problema y la solución.

 

Cuando un usuario se conecta, MySQL además de comprobar el nombre de usuario y la contraseña también comprueba el host, osea, resuelve a través del servicio DNS (ya sea local o remoto) la IP y/o dominio desde donde se realiza la conexión... es aquí donde se produce el problema: si el servicio DNS no responde con la rapidez necesaria (algo muy común) se retrasa el login y todo lo demás (consulta, ejecución o lo que sea que se quiera hacer en el servidor).

 

Para evitar este problema (la "incompetencia" del servicio DNS) simplemente le decimos a MySQL que NO intente resolver IP y/o dominio, para esto agregamos "skip-name-resolve" al archivo de configuración de MySQL (/etc/mysql/my.cnf) o lanzamos el servicio mysqld con la opción --skip-name-resolve.

 

Es importante mencionar que solo se podrán usar IPs como host de usuarios.

 

Ahí por fin pude demostrarle al cliente que mis programas y un servidor Linux con MySQL son una maravilla jajaja...

 

Aquí hay mas información sobre como "tunear" MySQL:

How To: Optimize MySQL response time

10 tips para Optimizar consultas MySQL

Porqué MySQL es lento con grandes tablas?