Saturday, December 1, 2012

Placeholder Image Generator Service

This morning being rather young and foolish.. I created a dynamic image generator for place-holders and backgrounds. Just a code snippet that generates PNG, GIF or JPG images of variable size and color, optionally prints the dimensions or a custom text. Images are created only once and saved to the File System.
Nothing fancy but functional for Web Development.

Default parameters:
width: 1px; height: 1px; color: #FFFFFF; text: none; type: png
http://joachimfraatz.de/images/generator



White GIF
http://joachimfraatz.de/images/generator/100x100.gif


PNG with alpha
http://joachimfraatz.de/images/generator/200x100/00ccff79


PNG with alpha and printed dimensions
http://joachimfraatz.de/images/generator/200x100/00ccffcc/


GIF with custom text
http://joachimfraatz.de/images/generator/200x100/00ccff/Hello World.gif


You have to configure mod_rewrite with the contained .htaccess file or the Apatche config to use the path syntax. Otherwise use GET vars (width, height, color, text, type)

Just download the image generator and run it on you local server!

Friday, June 10, 2011

Acoustic Echo Cancelation working

Acoustic Echo Cancellation is part of Flash Player 10.3.
Users are able to enjoy live audio/video communication without the risk of acoustic feedback. Previous post on Flash vs. AEC.

It's a bit tricky to implement yet.

First get the latest Flash Player Content Debugger 10.3.181.22, not the incubator version.

With the current Build of the Flex SDK (4.5.0.20967) that's also shipped with Flash Builder 4.5, you need to add this playerglobal.swc to the SDK's /frameworks/libs/player/10.3/ directory.

Add additional mxmlc compiler arguments with your IDE or directly to the actionscript properties file.
// Specifies the version of Flash Player that you want to target with the application, targets the correct playerglobal.swc.
-target-version=10.3

// Specifies the SWF file format version of the output SWF file.
-swf-version=12

Then use this code snippet in your ActionScript Class.
...
// Gets reference to the Microphone instance with enhanced options.
var microphone:Microphone = Microphone.getEnhancedMicrophone(deviceIndex);
microphone.codec = SoundCodec.SPEEX;
var enhancedOptions = new MicrophoneEnhancedOptions();

// Sets AEC mode for users without a headset.
enhancedOptions.mode = MicrophoneEnhancedMode.FULL_DUPLEX;
microphone.enhancedOptions = enhancedOptions;
...

Have fun!

Example ChatRoom using Red5 Media Server running on an Amazon EC2 instance and Adobe Cirrus rendezvous service. It's based on the direct RTMFP peer-to-peer connection feature of Adobe Flash Player 10

Wednesday, December 15, 2010

Acoustic Echo Cancellation support for Flash Player

If you ever developed a Flash application with live audio/video communication you probably ran into trouble with acoustic echo/feedback.
The flash.media.useEchoSuppression property doesn't solve the problem Flash Player had no AEC support.
Maybe you tried some workarounds but faced the requirement that the user had to use a headset for a good experience.

Please read my latest post about the current implementation of the AEC feature.

Fortunately AEC support will be part of a Flash Player version in 2011.
MicrophoneEnhancedOptions and MicrophoneEnhancedMode are not included in the current beta version of the Flash Player (10.2) but according to this Jira ticket from the Adobe Flash Player Bug and Issue Management System this feature is developed and will be part of an upcoming player version in 2011.

The code, when both speaker and microphone are used simultaneously, might look like this:

...
import flash.media.Microphone;
import flash.media.MicrophoneEnhancedMode;
import flash.media.MicrophoneEnhancedOptions;
import flash.media.SoundCodec;
...
var microphone:Microphone = Microphone.getEnhancedMicrophone(deviceIndex);
microphone.codec = SoundCodec.SPEEX;
var enhancedOptions = new MicrophoneEnhancedOptions();
enhancedOptions.mode = MicrophoneEnhancedMode.FULL_DUPLEX;
microphone.enhancedOptions = enhancedOptions;
...

Example chat room using Red5 and Adobe Cirrus aka Stratus rendezvous service, i created for a small ActionScript 3 VideoChatAPI in February 2009.
I developed it for a collaboration software of Dorian. It's using the direct RTMFP peer to peer connection feature of Flash Player 10, the 10.1 multicast feature is not suitable in this case.

Wednesday, November 24, 2010

Skoda Fabia RS WebRallye - Augmented Reality

After an educational and sports focused summer break I developed an Augmented Reality game for a client in Hamburg. The task was to create an unusual test drive for the new Skoda Fabia rallye sports model.

The main focus was to implement the design and navigation specifications in conjunction with the effort of level design, runtime and bandwidth performance.
To enable the favoured appearance and ability to design the levels I developed an extensible bitmap render engine. This task was easy to perform because I worked a lot with 3d engines and particle systems before.
Due to the main goal to enable navigating the car with a virtual steering wheel, printed on paper, I used the FLARToolKit, a ported version of the ARToolKit. Even though this is the fastest way to implement this feature, it took a lot of time to adjust the desired behaviours. Fortunately we won the FWA 'Site of the Day' award.

An additional, meanwhile standard feature was to enable a personalised facebook wall integration via user image and achieved result.

Project

Client

PureMVC, FLARToolKit

Tuesday, November 23, 2010

ZELLULOID - FILM OHNE KAMERA

This summer I had the chance to work on an exciting project for Scholz&Volkmer again. While Vincent Rebers focused on the live installation and multiuser drawing tool I took the load off from him by developing the rest of the microsite. We not only had a great time, it's also honored by the Bronze DMMA-OnlineStar in the category Microsites.

An integrated, viral campaign related to the “CELLULOID. Cameraless film“ exhibition at Schirn art gallery.

"Your artwork at the Schirn!": With a multiuser realtime drawing application the visitors design their own artwork and publish it both on the Website and on a live installation as part of the art exhibition.

All visitors and users can take part in the exhibition at the art gallery and present one of their own artwork next to other great artists.

Project

Client

Flash Media Interactive Server

Thursday, April 15, 2010

MXML without Flex

Yesterday while working in Paris a co-worker seamed to be a bit surprised that it's possible to use MXML whithout extensive dependencies on the Adobe Flex Framework. So I made a tiny example app. Of course it's smaller than 20kb.

Surprisingly most people are more interested in using the component framework without MXML than the oposite. Maybe they haven't mentioned the advantages of declarative language features in the right development environment for tasks like composition, skinning and configuration. Don't get me wrong - most of the things I'm developing are programmed in Actionscript!

In this case the [DefaultProperty] and [ArrayElementType] Metatags are essential. Just have a look!

source


The next step is to focus a bit more on the Databinding feature.

source

In a real world application no one would use a code block inside of his MXML file by choice. Instead of this e.g. a Presentation Model or Presenter Pattern can be applied.

If you use the additional compiler argument -keep you will mention that several classes of the mx.core.* and mx.bindings.* package are imported in the generated code. but hey! do we really care about this hand full of kb?

Thursday, November 5, 2009

AMF3 remote procedure call and class mapping without Flex / mx.rpc package

If you want to avoid dependencies to the mx.rpc package and got problems with AMF3 remote procedure calls and class mapping here's a small example.

example application, source

AMFPHP