RichFLV now with autoupdate and drag`n drop

I`ve build in some more AIR specific features into RichFLV and also worked on the SWF export that now includes sound export.
Until now you could export your flv as an SWF but without the sound. I now managed to implement the SoundStreamHead and SoundStreamBlock Tags
from the SWF Specification. With some flvs there are still problems but most of the time it works fine. Don`t wonder if the SWF export now takes a bit longer i will optimize that later.

I`ve also implemented an autoupdate feature. When RichFLV is started it checks automatically if updates are available. If it finds an update it will show you a dialog that tells you something about
the changes in the new version and allows to auto update the app with one click. You can also manually check for updates by clicking the “Check for updates” item in the “About” menu.

updateMenu.gif

updateWindow.gif

One other small feature i`ve included is that if you have a video playing you can drag the video at any point to your desktop and it will make a screenshot from that position on your desktop (as a PNG).

dragImage.jpg

Get the Update:
RichFLV.air

Read/Write ID3 Tags with AIR

I found some time to improve my MP3 library. Now it allows to read and write! ID3v2 Tags.
I`ve not implemented everything but you can read basic information and edit it. You can even select a jpeg or png file that will be embedded into the mp3.
You can still trim the mp3 with the timeline. ByteArray and AIR kicks ass!

Check it out here (You`ll need the Adobe AIR Runtime)

Sources will be released as soon as i find the time to clean up the code and implement some more functionality.
id3.jpg

RichFLV now with mp3 import!

Finally i`ve a version ready with mp3 import. You can now select your favorite mp3 and swap the sound of the flv file with this mp3.
This is not the only big update. Maybe the most important thing are the performance improvements. I completely rewrote my flv classes so that it takes up much less memory and time to process flvs. Now it`s possible to analyze and modify even bigger files. For example with the old version a flv file with 150mb would eat up about 1.5Gb!!! of memory now it takes about 150mb. The only downside is that the export time has been increased slightly but not much. There is still more to find concerning performance but i think this update is quite significant and finaly makes RichFlv a really useful app.
Because i had to rewrite all classes it could be that there are some issues that i haven`t found yet. I`m absolutely busy at the moment and have no time to really test things so please get back to me with your findings and comments.

Here is a run down of how to do an mp3 import:

Choose Import>Mp3 and select an mp3 file.

mp3import.jpg

A new Timeline for the sound file will open up. The blue bar represents the flv file. You can drag the bar to alter the timestamp of the mp3.
mp3_timeline.jpg

If you want to export your flv with the new mp3 sound click the “Use Mp3 as soundtrack” checkbox. Otherwise the flv will be exported with it`s original sound.
Than just export the flv like before (Export>>FLV). You can now also decide if you want to keep the original sound were your new mp3 is not playing.
mp3controls.gif

I hope this release is useful for some of you. I have so much more things to add in the future but have to make small steps because i only find time for this late at night 😉
But all your comments, ideas and bug reports are very much welcome (benz (at) richapps.de).

Download the new version here: RichFLV.air

(You`ll need the AIR runtime. If the file downloads as a zip file just rename it`s extension to air)

Editing Mp3s with Apollo

This is just a quick sample app that allows you to cut an mp3 file and get some information about it.
It`s all implemented using the ByteArray class and allows to read the frames and their headers from an mp3 file.
With this information it`s possible to cut the mp3 and create a new one. It would even be possible to merge several mp3 files into one long file.
I`m experimenting with this because i want to enable RichFLV to change the sound and add new mp3 sound tracks to the flv.
richMp3.jpg
You can download my prove of concept Mp3 tool here. (You`ll need the alpha Apollo Runtime)

RichFLV – Apollo app updated

This is the biggest update to RichFLV since it`s release.

Download RichFLV (Rename extension to .air if it downloads as a zip file)
Download Apollo Runtime (Alpha Version)

Here is a brief description what has been changed.

Performance:
The biggest improvement is the performance boost. This version should analyse flvs up to 10 times faster than the old version.
I was able to analyse a 140Mb file also i would not recommend this but files up to 80 Mb should be ok.
The biggest problem currently is the memory consumption. With the 140Mb file my RAM could easily eat up 1GB. I will look into that for a next update.
One thing i will also invastigate is to change the analysis of the flv when it`s loaded. Maybe it would make more sense to do the major part of the analysis when the file is saved.
This will keep memory usage low while working on the file and the import would be much faster but than it will take longer to save changes.

Progress Information:
I finally found a way to add a progress bar while importing a flv file. I was motivated to do this by the book “The Laws Of Simplicity” by John Maeda.
I can really recommend this book! The progress information is given in two chunks. First it shows how much of the file has been read and than it shows you how much of the flv has been analysed.
While analysing the flv it will also output how many tags of the different kinds (Video, Sound, Metadata) it has found.
Progress

New Improved Timeline:

The timeline is now more compact and easier to handle (i hope!?). I`ve build custom components for the sliders because i was not happy with the Slider component.
The keyframe and cutter handling should be much more precise now.

Timeline

Export Still Image As Jpeg:
I`ve added the ability to export still images from the video player. They will be saved as jpeg files at the moment. Later i will add different formats (PNG,BMP).
In the options menu you have the ability to change the quality settings for the jpegs.

jpegExport.jpg

Improved Layout Handling:

You can now hide the info panel and the timeline panel and get different views of the editor.
layout.jpg

More Options

I`ve included an option to set the aspect ration handling of the video and one for creating new cuepoints at the current timestamp of the video.
options.jpg

Chrome changed
I have changed the chrome settings from a custom chrome with transparency to the standard chrome because of performance issues.
Espacially when you had the application in fullscreen mode the app became quite sluggish. Now with the standard chrome it behaves much better.
I haven`t noticed a big performance hit with transparency in other apps i`ve build with apollo but when it comes to video this definetely has a huge impact.
Will see if that improves i the upcoming beta of apollo.

Please give comments if you like the changes, have suggestions or bug reports.

Download RichFLV (Rename extension to .air if it downloads as a zip file)
Download Apollo Runtime (Alpha Version)

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:
Timeline_RichFLV

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:

KeyframeDataGrid

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

Export
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.

Save file dialog with apollo hack

One thing that is currently missing from the Apollo Filesystem-API is the ability to get a native save file dialog.
It`s easy to create a file open dialog with the open()-Method of the File Object. So until the File Object gets a save() method i use the download()-Method.
The File class extends FileReference and so inherits its download()-Method. The problem is that the download Method takes a URLRequest Object as a parameter.
So after the OPEN event make sure to cancel the download request with file.cancel(). Now you can access the url via the normal File attributes.
Here is some example code:

private function saveFile():void
{
file=new File();
file.download(new URLRequest(“http://www.nourl.de”),”exported.swf”);
file.addEventListener(Event.OPEN,swfSavePathSelected);
file.addEventListener(IOErrorEvent.IO_ERROR,savePathSelected);
}

private function savePathSelected(evt:Event) : void
{
file.cancel();
fileStream = new FileStream();
fileStream.openAsync(file, FileMode.WRITE);
fileStream.writeBytes(b);
fileStream.close()
}

This worked great for me in earlier projects. At some point i got some errors which seem to be related to the nonexisting url and the app would just hang. In order to avoid this
i did an quich and ugly hack. I also added an event listener for the IO_ERROR event and did all the saving stuff their. Not nice but temporarily fixed it. I got confirmation that
the missing save()-method will be somehow implemented in later builds, so i can live with this hack in the meantime.
Anyone got a better solution?

UPDATE:
Found this post by Robots w/Lasers that has more about this

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: info@richapps.de