RichFLV Updated

I couldn`t resist to rush out a new version (alpha 2.0) of RichFLV that adds some nice features.
I will be of to OFFF in Barcelona tomorrow and so i will not be able to work on this for a couple of days.
All this stuff is not tested in depth but seems to work fine. New features are:

– Keyframe visualisation:

The timeline is extended to show were keyframes are located. This is important to see were it makes sense to cut the flv.

– Keyframe precise cutting
If you drag the thumbs for cutting the flv they will automatically adjust to the timestamp of the nearest keyframe in the flv.
Before this it was possible to cut a flv even on intra frames which makes no sense (or does it?). Maybe i will make it an option to allow cutting again on videoframes that are no keyframes.

– Selecting Keyframes via Keyframe Datagrid:


If you select a keyframe in the datagrid the playhead will be set to that position in the flv.

– Export/Import Cuepoint Data with the FLVCoreCuepoints Format

You can now export/import cuepoint in the new Adobe FLVCoreCuepoints xml-format. This makes it easy to save settings and apply them to different flvs.

– Finally fixed the Google/Youtube onMetadata Bug

The problem with importing youtube flvs should be solved now. Everyone who had problems with that could you confirm that?

Again all this has not been tested in depths so this is kind of an experimental update.

Download it here: RichFLV_alpha2.0 !!! New Version Available See This Post !!!
BTW: If any Flex people are at OFFF and want to meet for a chat let my know.

RichFLV – Apollo FLV Editing Tool

RichFlv can:

  • Read flv Metadata
  • read/edit/modify/delete cuepoints
  • cut flvs
  • convert the sound of the flv to mp3
  • convert flv to swf

The API i developed for RichFLV implements most of the FLV file specificaton and some parts of the SWF file specification in Actionscript.
It`s all done with pure Actionscript (Byte Array Baby!) so no external tools are used. The cool thing is that the only thing that depends on the apollo framework is the part were RichFlv actually saves the files to your desktop (FileStream.writeBytes()). The same could be done as a none apollo app in the browser and than send to the server. Imagine this as an extension to popular video sites. It would enable real flv remixing in the clients browser!

RichFlv is currently an alpha release so expect some limitations and bugs. Current known issues are:

  • All flvs will be saved with a framerate of 25/s
  • Exported SWF will only contain the Video information (no audio)
  • Cuepoint Timeline does not scale properly if application is resized
  • overall handling and accuracy needs improvements
  • I would not use files bigger than 30 mb.

These problems will be corrected until RichFlv reaches 1.0 status.
Future versions will have the ability to mix several flv together to one file. I have this all ready but need more time on the UI.

Download RichFLV Alpha 1

Updated to Alpha 2.0: See post here.

!!! New Version Available See This Post !!!

Watch a quick introduction Video here.

(Again it`s an alpha release – use on your own risk)
Here are some Screenshots:

Cue Point Editor

CuePoint Timeline

Cutting Slider

I`m always interested in your comments, bugs and suggestions. Post them here or write directly to:

Richtube=Flex Youtube Interface

I got an official statement from youtube that my youtube app does not confirm to the youtube terms of use. So i made a camtasia record to show it here. I think this app shows well how Flex and Zinc can be combined for rapid application development and it`s a nice example of an occasionally connected client. I hope that the same type of applications will also be possible with apollo. Here a the key feautures:
– Search Youtube
– Display Videos in a Custom (not Youtube) Player.
– Save Videos Offline
– Organize downloaded Videos in categories
– Export downloaded Videos to ordinary AVI files and save them on your machine.

Have a look here.

I hope that youtube will make their service more open soon. I think one big point at the moment is that they need to place their ads and such an app prevents this. Maybe they could open the service under the restriction that you display ads from them in your app. Those ads could be updated everytime the app goes online.

Microsoft MAX like Flex Image View (with source)

Yesterday i installed Microsoft MAX. It`s the first app from Microsoft that uses WPF. I really like it but the first thing i thought was: “This can all be done in Flex too!” I especially liked the way the images reorder when you scale them. So back from work i tried it in Flex. I took the hybrid store example from adobe as a starting point.

You can view the result here.
And grab the source here.

Try scaling the images with the slider on the right and use the Devider and see what happens with the images. Also try to rescale your browser window. It is really easy to do such things with flex. It took about 20 minutes to do this (can you do this in ajax in this time?). It`s really just a rough sketch and if anyone improves it please leave a comment.
What i really like about Wpf is that it will become easier to sell Flex/Flash based apps because soon (when does Vista arrives?) normal desktop apps will look like Flex/Flash apps 😉

Clone Instances and keep Class reference

While checking out the Socket class i found a cool little trick. I´m sure everyone knows of the possibility to clone an Object with the help of the ByteArray Class. This method was introduced (at least to me ;-)) by senocular here.
The function looks like this:
function clone(source:Object):* {
var copier:ByteArray = new ByteArray();
copier.position = 0;
The problem was that all the class information was lost. With class information i mean type info and thinks like methods were unavailable after cloning the object. When you try this:

var t:Test=new Test();
var newObj=clone(t);

I get the following error:

TypeError: Error #1006: sayHello ist keine Funktion.
at test/::show()
at test/___Button2_click()
But there is this nice Method registerClassAlias from the package. Using this:

registerClassAlias(“de.benz.something”, Test);
var t:Test=new Test();
var newObj=clone(t);

will keep the class information intact and the call to the method will be succesfull.
Man this is sooo cool. I´m loocking forward using this in two years when my company switches to flash 9 :-)
Anyone looking for a flex developer?




My First Steps With Flash Data Services

Today i finally got the time to install the flex data services. For me this is quite an adventure as i`m not really a server or java guy. So for me the first thing was to get tomcat. I know it would have been easier to use the integrated jrun but i think tomcat is a more common setup.

Installing Java Open Transaction Managet (JOTM)

With this decision comes the first problem. In order to use the data management features one has to install the Java Open Transaction Managet (JOTM). No big deal if you know that 😉 You can grab a version here.
Unzip the file and locate the lib folder. Now copy all of those jars into your tomcat project folder under WEB-INF/lib. Here i struggled for a moment. I thought know the CRM example that ships with FDS should work fine but it didn`t. The solution was to create a config file under TomcatInstallation/conf/Catalina/localhost/ . The file needs to be an xml file named after your webapp directory e.g. samples.xml. Assuming your webapp directory is called samples the content should look like this:
<Context docBase=”${catalina.home}/webapps/samples” privileged=”true”
antiResourceLocking=”false” antiJARLocking=”false”>
<Transaction factory=”org.objectweb.jotm.UserTransactionFactory” jotm.timeout=”60″/>

Replace ${catalina.home}/webapps/samples with your location.
With this setup i was able to run the CRM samples. Next step will be to configure everything for messaging. What would be the best messaging provider for tomcat?
As i said i`m pretty new to all this server/java stuff but i`m allready really impressed by FDS.

Anyone knows of good tutorials for starters? Any suggestions?