• Archivo

Flash as3 crossdomain solucion ( fix )

Si alguna vez intentaste cargar una imagen usando flash actionscript 3 tal vez encontraste el problema de “crossdomain”,este problema aparece cuando un swf alojado en un servidor  intenta cargar una imagen que se encuentra en otro servidor.

Por ejemplo si tenemos imagen.jpg en un servidor de mediatemple y queremos que un swf que esta en un servidor de godaddy muestre esa imagen flash lanzara una excepcion (error) pidiendo un archivo de politicas de acceso, esto es el llamado “crossdomain policy file”.

La solucion usual es poner un archivo llamado “crossdomain.xml” en el directorio raiz del servidor que contiene la imagen.jpg (el servidor mediatemple del ejemplo anterior) asi flash automaticamente pedira el archivo crossdomain y si es correcto estara autorizado para descargar la imagen y mostrarla.

Este problema se complica cuando no tenemos el control del servidor que contiene las imagenes (ej. instagram) y por lo mismo no podemos crear un archivo crossdomain , para resolverlo la solucion es crear un script php asp o cualquier script que pueda ser ejecutado en el servidor en el que se encuentra nuestro swf (godaddy en nuestro ejemplo)  , este script debe de leer la imagen remota y entregarle el resultado a nuestro swf , de esta forma el swf no pedira el archivo crossdomain ya que esta realizando una solicitud a un script que esta alojado en el mismo servidor local.

Esta solucion me ha funcionado para mostrar imagenes de facebook, instagram, twitter y muchos otros.

El script php es asi para imagenes jpg (requiere de la extension curl activa en la configuracion de php) :

<?php

//www.motion.com.mx
$image_url = $_GET[‘img’];
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $image_url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);

$image = curl_exec($ch);
curl_close($ch);

header(“Content-type: image/jpeg”);
print $image;
?>

Es muy básico y seguramente deberia ser modificado para evitar problemas de seguridad.

En flash en lugar de hacer esto :

var imageLoader:Loader = new Loader();
var image:URLRequest = new URLRequest(“http://cdn.facebook.com/algunaimagen2323423.jpg”);
imageLoader.load(image);
addChild (imageLoader);

 

Se cambia por esto :

var imageLoader:Loader = new Loader();
var puente:String = “obtenerimagen.php?img=”
var image:URLRequest = new URLRequest(puente+”http://cdn.facebook.com/algunaimagen2323423.jpg”);
imageLoader.load(image);
addChild (imageLoader);

 

Eso es todo , es posible modificar facilmente cualquier codigo en actionscript para usar este puente .

Estoy seguro que ayudara a muchos desarrolladores y les ahorrara tiempo de trabajo .

Twitter bot, crear tweets automaticos constantemente

Para realizar pruebas con un sistema web creamos este script tipo bot que genera una serie de tweets con pausas de N segundos entre la publicacion de cada uno.

Solo puede generar tweets en una cuenta de twitter teniendo el usuario y password.

Lo usamos para generar tweets durante un periodo de tiempo usando varias instancias simultaneas con diferentes cuentas para recibir tweets en tiempo real en un sistema web.

Funciona con cygwin y linux.

Utiliza el script “Twitter status update bot” de  360percents.com  Luka Pusic

 

Descarga aquí

Detectando caras (Face track) en tiempo real

Para realizar un proyecto solicitado para los juegos panamericanos 2011 creamos un sistema de deteccion de rostros usando video en vivo.

El sistema es capaz de utilizar cualquier fuente de video ya sea pregrabado o directamente desde una camara profesional de video HD y retransmitir los datos de los rostros localizados en cada frame de video a otros equipos dentro de la red para utilizar varias computadoras para crear procesamiento de video casi instantaneo con diferentes efectos como chroma key y collage de caras .

En el siguiente video se puede ver el sistema base ejecutandose en una simulacion de video en vivo de alta definicion y retransmitiendo a aplicaciones flash para enviar los datos de las caras y el video mismo a servidores RTMP :

 

Video mapping proyeccion en minicubos

 

Esta es una proyeccion dinamica que genera anillos de luz dependiendo de acciones de personas o reaccionando a musica.

El concepto es usar una superficie irregular para proyectar imagenes y animaciones aprovechando el volumen de los cubos.

 

 

 

Proyeccion en objetos ( mapping )

Para empezar con variantes a los pisosinteractivos en esta oportunidad desarrolle software propio para aplicar la técnica conocida como Mapping.

El concepto es dar vida a objetos tridimencionales usando animaciones que son proyectadas con cañones multimedia.  Similar a ponerle una nueva piel a los objetos .

La técnica es aplicada generalmente en proyecciones para fachadas de edificios y es una nueva tendencia que la publicidad aprovecha para promover marcas pero en mayor parte es para crear un espectaculo de luces y sonido con instalaciones espectaculares.

Aquí un video de la primera prueba utilizando la version 1.0 de mi propio software de mapeo :

 

 

La ventaja de utilizar un software propio es poder mezclarlo con otras tecnologías como la detección de movimiento y asi generar animaciones dinámicas que interactuen con el público.

En el video utilizo detección de los canales de audio para crear mixers visuales que responden a la música en tiempo real.

 

 

 

 

 

Nuevo website pisointeractivo.net

Recientemente cree el website pisointeractivo.net para promover y mostrar información de los pisos interactivos de motion.mx.

La dirección completa del nuevo website  es :

http://www.pisointeractivo.net/

 

 

 

 

 

away3d.swc para flash player 11

Despues de buscar por varios días,  encontre la compilacion en swc de la libreria away3d que funciona com stage3d en flash player 11, comparto el link para los que viven el mismo caso :

https://github.com/ellemenno

 

Gracias a ellemenno  que tiene varias versiones compiladas.

 

 

Video con repetición instantánea con flash

repeticion instantanea para video en vivo as3

Demo repeticion instantanea para video en vivo

Aquí esta el demo que prometí , use la misma clase que publique hace unos días aqui que permite retrasar un video pero en este demo la modifique un poco para controlar el display con un slider.

Así puedo crear repeticiones instantáneas en cualquier punto de una transmisión de video en vivo o pregrabado sin tener que recurrir a servidores de medios con funcionalidades DVR.

Ventajas técnicas:

  • menos procesamiento en servidor trasladando ese trabajo a la parte del cliente
  • control fluido del video de repeticion sin recarga de un stream de video
  • el cliente tiene la posibilidad de guardar el video
  • funciona con cualquier tipo de stream de video ya sea en vivo o grabado o webcam

Desventajas :

  • la memoria de flash limita la cantidad de tiempo de video que se puede almacenar aproximadamente a 8 segundos
  • limite de resolucion de video

 

 

 

 

 

Suelo Interactivo ( proyección interactiva )

Hace poco me pidieron hacer un proyecto en mi ciudad (Guadalajara) que involucrara detección de movimiento y proyecciones interactivas asi que decidi retomar los proyectos de pisos interactivos que había dejado a un lado por varios meses,  me concentrare en proyecciones con detección de movimiento y deteccion de personas.

Aunque también quiero empezar a experimentar con hardware touchscreen para crear experiencias que combinen las proyecciones  y sistemas touch.

Aqui estan los primeros experimentos con instalaciones donde procure economizar lo más posible manteniendo la calidad de detección.

Proyeccion en piso,  piano con animaciones de notas y logo :

 


Pronto posteare nuevos videos 😀

 

AS3 retrasando el video de la webcam ( tipo DVR )

CamDelayer as3 DVR effect

Para el proyecto que realize para los Juegos Panamericanos 2011 tuve que crear varias utilidades para controlar video en vivo y pregrabado. Una de estas utilidades fue el “CamDelayer” hecho en flash que sirve para retrasar la reproduccion del video de una webcam o stream de video para sincronizarlo con otra fuente de video y asi comparar 2 o más streams que se reproducen simultaneamente e incluso compararlos cuadro por cuadro.

Este CamDelayer también puede usarse para crear un efecto tipo DVR , parecido a lo que hace el nuevo servidor flash media, para los que no conocen el DVR es la característica que permite a los usuarios detener un video en vivo en cualquier momento y reproducir una repeticion instantanea.

Al principio no sabía como hacer este efecto pero les explico como funciona, primero WebcamDelayer captura cada cuadro de video nuevo usando “BitmapData.draw” y lo guarda en una lista (array) , cada vez que se guarda un nuevo cuadro de video se desplazan las capturas anteriores una posicion atras en la lista, asi en determinado momento se cuenta con X cantidad de cuadros de video viejos guardados y sabemos que el primero de la lista es el mas viejo de los cuadros y el ultimo es el mas nuevo (el cuadro de video actual), con esto en cuenta webcamDelayer muestra el cuadro de video más viejo al usuario.

Finalmente se me ocurrio agregar un setter/getter para definir cuantos cuadros de video almacenar asi se puede definir dinamicamente cuanto retraso se desea en el video mostrado.

En el ejemplo muestro 4 CamDelayers en la parte de arriba y 3 CamDelayers sobrepuestos con alpha en la parte de abajo.

Click en la imagen para ver el demo.

Codigo fuente   CamDelayer

Espero agregar esta funcionalidad DVR para proyectos de streaming en México en especial para live streaming en iphone.