Convertir formatos de audio y video

Es muy común que necesitemos extraer el audio de un video, o por ejemplo pasar un archivo {es:wav} a mp3  o  reducir el peso de un video.

En el blog Nefertec encontré esta interesante info sobre como trabajar con archivos de audio y video directamente desde la consola muy fácilmente.

Se trata de {es:FFmpeg},  para instalarlo solo hace falta:

sudo apt-get install ffmpeg

en cualquien sistema de la familia {es:Debian} ( como {es:Ubuntu} ).

¿No usas software libre? empezá ahora.

Acá varios ejemplos muy útiles:

Convertir un archivo de wav a mp3
$ffmpeg -i audio.wav -f mp3 audio.mp3

Convertir un archivo de mpg a flv
ffmpeg -i video.mpg -ar 22050 video.flv

Convertir de un formato a otro archivos de audio o video:
$ ffmpeg -i archivo1.avi archivo2.mpg

Convertir videos en formato 3gp del móvil a mpeg4:
$ ffmpeg -i archivo1.3gp -vcodec mpeg4 -acodec mp3 archivo2.avi

Convertir de avi a flv:
$ ffmpeg -i movie.avi -acodec mp3 -ar 11025 movie.flv

Convertir de mp3 a amr:
$ ffmpeg -i music.mp3 -acodec amr_nb -ar 8000 -ac 1 -ab 32 music.amr

Convertir de mpeg a mp3:
$ ffmpeg -i video.mpg -f mp3 audio_track.mp3

Convertir de avi a vcd:
$ ffmpeg -i myfile.avi -target pal-vcd myfile_vcd.mpg

Convertir de wav a amr:
$ ffmpeg -i music.wav -acodec amr_nb -ar 8000 -ac 1 -ab 32 music.amr

terminator

Convertir de mpeg a 3gp:
$ ffmpeg -i archivo.mpeg -s qcif -r 12 -ac 1 -ar 8000 -b 30 -ab 12 salida.3gp

también:
$ ffmpeg -i archivo.mpeg -s qcif -r 15 -ac 1 -ar 8000 -b 256000 -ab 15 salida.3gp

Convertir de mpeg a flv:
$ ffmpeg -i pelicula.mpg -vcodec flv -y pelicula.flv

Convertir una secuencia de imagenes a video:
$ ffmpeg -f image2 -i imagenes%d.jpg video.mpeg

Convertir imagenes de un video en un .gif animado:
$ ffmpeg -i video.mpeg -pix_fmt rgb24 imagenes.gif

Unir varios videos (primero convertirlos a mpeg):
$ ffmpeg -i video1.avi -sameq video1.mpeg
$ ffmpeg -i video2.avi -sameq video2.mpeg

Unir los videos resultantes usando cat:
$ cat video1.mpeg video2.mpeg > nuevo_video.mpeg

Regresar el video resultante al formato deseado:
$ ffmpeg -i nuevo_video.mpeg -sameq nuevo_video.avi

Suprimir el audio de un video:
$ ffmpeg -i video.avi -an video_sin_sonido.avi

Separar para guardar el sonido de un video:
$ ffmpeg -i video.avi audio.mp3

HTML 5 : video y audio nativo

Por fin una buena noticia. Parece que la nueva versión de HTML, la 5, incluye un par de etiquetas que van a facilitar muchísimo la inclusión de video y audio en forma nativa en los sitios web, de la misma forma que hoy incluimos una imagen solo con una etiqueta <img>.

Las etiquetas serían <video> y <audio>. El formato libre utilizado se llama {es:OGG}, y esa  {es:extension de archivo} se usa tanto para audio como para video, es una tecnología diseñada para dar un alto grado de eficiencia en el «streaming» y la compresión de archivos.

ogg

Con esta novedad, ya no hará falta andar instalando «plugins» en el navegador para poder ver los sitios con contenido multimedia. La próxima versión del navegador Firefox (la 3.5 ) ya tendrá soporte para esto, al igual que Opera y Chrome.

Esto puede ser el comienzo del  final del formato cerrado {es:SWF} de Adobe, ya que como la companía no quiere liberarlo, no puede ser estandarizado.

Una de las espectativas más grandes es si  Google migrará Youtube a HTML5 + OGG, abandonando la actual implementación en flash.
Si esto sucede, las cosas van a cambiar bastante en el mundo web ¿no te parece?

Buscador última generación WolframAlpha

Eduardo Kuvnat me comentó acerca de WolframAlpha, se trata de un nuevo buscador, pero que en realidad es una herramienta de las más sofisticadas y poderosas que ví.

Puede ayudarte a resolver problemas como:

  • Matemática elemental, álgebra, matrices, geometría, trigonometría, matemática discreta, lógica, funciones, cálculo.
  • Estadística, probabilidad, análisis de datos.
  • Física, magnetismo, electricidad, mecánica.
  • Soluciones químicas
  • Fluidos, propiedades de los materiales
  • Comparación de unidades, medición.
  • Economía, intereses, conversión de moneda.
  • etc etc etc

Algunas de las pruebas que hice fueron:

Le pasé los colores de una resistencia eléctrónica y me informó de cuantos Ohmios era. Le puse la ecuación  32x -5Y+z = 9  y me dibujó el plano.
Le pedí que tradujera «Diegote» a código morse.
Finalmente le pedi que me compare «Necochea» y «Liverpool».

Una herramienta EXCELENTE. Me dan ganas de volver a la UTN.

edición de imágenes digitales

¿Qué pasa si no tenés photoshop? nada. Porque siempre vamos a tener GIMP

gimp_html_5a67b161

GIMP es un excelente programa de edición de imágenes digitales en forma

de mapa de bits, con la particularidad de que es un programa libre y además, gratuito.

Esta aplicación es multi-plataforma, por lo que existen versiones para Windows, para

Mac OS X, y se incluye en muchas distribuciones GNU/Linux.

screen_gimp_2

Se le puede considerar como una alternativa firme, potente y rápida a Photoshop para muchos usos, aunque no se ha desarrollado como un clon de él y posee una interfaz bastante diferente.

Posee un sistema de plugins muy efectivo, con el cual se le pueden agregar efectos de lo más variado.

Este es el sitio oficial de GIMP y si necesitas un manual en español, lo tenés.

Symfony: Paginación con sfPropelPager

Hola, luego de casi 3 días de lectura extrema e intentos fallidos, logré dominar
la técnica de paginar elementos de un sitio mediante sfPropelPager.
En el controlador tenemos la siguiente acción:

public function executeMostrar()    {
//Defino un paginador para la clase ‘Mensaje’ . Quiero 10 resultados por página.
$pager = new sfPropelPager(‘Mensaje’, 10);
//Defino ‘criteria’, en este caso traigo TIPO=’informes’ y ordenados
de mayor a menor por ID

$c = new Criteria();
$c->add(MensajePeer::TIPO, ‘informe’, Criteria::LIKE);
$c->addDescendingOrderByColumn(MensajePeer::ID);
$pager->setCriteria($c);
//Seteo la primera página a uno
$pager->setPage($this->getRequestParameter(‘page’, 1));
$pager->init();
// Preparo la información para usarla en la vista.
$this->pager = $pager;
}

Luego, en la vista debo reemplazar en el «foreach» con el que venía listando sin paginar,  la variable que traía los datos desde el controlador por  el nuevo paginador, de esta manera:

<?php foreach( $pager->getResults() as $elemento): ?>
<?php  echo «El nombre de este elemento es:».$elemento->getNombre(); ?>
<?php endforeach; ?>

Para mostrar los números y las flechas de la paginación, usamos este código:

<?php if ($pager->haveToPaginate()): ?>
<?php echo link_to(‘&laquo;’, ‘log/mostrar?page=’.$pager->getFirstPage()) ?>
<?php echo link_to(‘&lt;’, ‘log/mostrar?page=’.$pager->getPreviousPage()) ?>
<?php $links = $pager->getLinks();
foreach ($links as $page): ?>
<?php echo ($page == $pager->getPage()) ? $page : link_to($page, ‘log/mostrar?page=’.$page) ?>
<?php if ($page != $pager->getCurrentMaxLink()): ?> – <?php endif ?>
<?php endforeach ?>
<?php echo link_to(‘&gt;’, ‘log/mostrar?page=’.$pager->getNextPage()) ?>
<?php echo link_to(‘&raquo;’, ‘log/mostrar?page=’.$pager->getLastPage()) ?>
<?php endif ?>

No te olvides de reemplazar ‘Módulo/acción’ (en el ejemplo log/mostrar) con tu módulo y tu acción.
Queda muy bien mostrar un encabezado con la información total del listado, así:

<?php echo $pager->getNbResults().» Elementos encontrados. Mostrando resultados desde «.$pager->getFirstIndice().» hasta «.$pager->getLastIndice(); ?>

Costó mucho pero quedó funcionando a la perfección.
saludos.

CSS: Maquetado y pie

A pedido de un colega va este requete-mini-tuto de como hacer que el DIV de pie de página quede en donde debe (al fondo del contenedor).

Supongamos una estructura semántica como la siguiente:

<body>
<div id=»contenedor»>
<div id=»encabezado»></div>
<div id=»contenido»>Contenido de la página</div>
<div id=»pie»>Copyleft 2009</div>
</div>
</body>

Bueno, los estilos para cada parte quedarían así:

html, body {
margin: 0;
padding: 0;
height: 100%;
overflow:hidden;
}
#contenedor {
width: 100%;
height: 100%;
background: #DDD;
position: relative;
}
#encabezado {
width: 100%;
background: #CCC;
position: absolute;
top:0;
height:130px;
}
#contenido {
width: 100%;
overflow: auto;
position: absolute;
top: 130px;
bottom: 40px;
}
#pie {
width: 100%;
background: #CCC;
position: absolute;
bottom: 0;
height: 40px;
}

115 Efectos para Gimp

Fx Foundry es un paquete de efectos listos para descargar y usar en Gimp 2.6

Su instalación es muy simple:   bajamos el pack,  lo descomprimimos y copiamos todos los archivos .SCM a nuestra carpeta
/home/diego/.gimp-2.6/scripts
( donde dice ‘diego’ va tu usuario ) lo aclaro por las dudas.
Luego, abrimos GIMP y en el menú vamos a Filters » Script-Fu » Refresh Scripts y listo, se crea una nueva opción en el menu desde donde podemos aplicar todos los nuevos efectos.
Algunos ejemplos:
115_original115_cromo115_old_foto

Symfony: programando PHP

Bueno, este post lo voy a ir editando a medida que tenga más cosas útiles de Symfony para compartir. Para los que no lo conocen Symfony es un framework para programar aplicaciones web en PHP5 usando OOP (programación orientada a objetos).

# Mostrar mensajes al usuario (por ejemplo, en un formulario avisarle que los datos ingresados no son correctos)
en la acción:
// cargo un mensaje de error y
$this->getUser()->setFlash(‘error’, sprintf(‘Los datos no son v&aacute;lidos.’));
// vuelvo a la pantalla de login.
$this->forward(‘usuarios’, ‘MostrarForm’);

en la vista:
<!— Muestro posible mensaje de error –>
<?php if ($sf_user->hasFlash(‘error’)): ?>
<span class=»flash_error»><?php echo $sf_user->getFlash(‘error’) ?></span>
<?php endif; ?>