FlashyWrappers 2.4 PR2 available for download

As promised couple of days ago – download link below:


Please note that this is still prerelease mostly due to Android at this point, the rest of platforms were tested & gotten rid of most serious issues reported by various users – those issues mostly popped up with the new 2.4 API. Of course there are still issues expected & known.

The next 2.4 release is going to be standard (no more pre-releases). Android will stay in alpha though until we manage to stabilize even more & have enough proof its working reliably accross variety of devices. We’ll provide standard support for Android but including this in your product will be still at your own risk. At this point we’re looking forward working with anyone interested to include FW Android ANE in testing it & giving us feedback to fix issues.

Whats planned for the final 2.4 release?

  • Android – stabilizing audio & making grabbing GLES context more reliable.
  • Android – better error handling & start work on graceful exits, handle app suspension.
  • Android – whatever issues pile up within the next ~2 weeks.
  • iOS & Android – Fixing progress bar to not show 100% all the time but reflect the actual progress a bit better.
  • iOS – addSoundtrack ability to supply custom track time (in ms).
  • iOS – won’t be included in 2.4 but will begin to see how to implement the new native iOS9 video recording API.
  • There won’t be many changes in 2.4, which will be mostly Android focused again.
  • Website overhaul: Updated roadmap, pricing, features, adding support comments / forum.

Changelog for PR2 release:


FlashyWrappers 2.4 Prerelease 2 (unofficial)                                                                       
- !! All platforms: start was made async. As a result of that, you need to implement "started" status event. You need to catch it after start has been called and move any code which you called after start into this code block. In Flash, making start async helps to reduce the startup lag by ~80%.
- All platforms: Fixed various bugs involving things going wrong when re-initializing the recordings (connected to the changes in 2.3->2.4 API)
- All platforms: Added better logging & ability to influence logging levels (LOGGING_BASIC or LOGGING_VERBOSE) for improved debugging (still working on this).
- All platforms: Added the option to override PTS calculation mode (forcePTSMode) with the option to specify either PTS_AUTO, PTS_MONO or PTS_REALTIME. This allows to mix realtime mode features(OpenGL fullscreen capture, multithreading) with non-realtime mode or vice versa.
- All platforms: Added the option to override frame dropping mode (forceFramedropMode) with the option to specify FRAMEDROP_AUTO, FRAMEDROP_OFF or FRAMEDROP_ON. This allows to mix realtime mode features(OpenGL fullscreen capture, multithreading) with non-realtime mode or vice versa.
- Windows: Fixed a bug which caused the new MediaFoundation based Windows ANE crashing on Windows 7.
- Windows: Added better error handling and logging when unexpected error happens.
- Android: Added capturing individual DisplayObjects in the new FW Android. You can also use addVideoFrame with ByteArray.
- Android: Added non-realtime mode in the new FW Android. This influences the pts calculations and frame dropping.
- Android: Added logging to separate log file on sd card, and verbose mode for more detailed logging.
- Android: Added AUDIO_MICROPHONE audio mode. This mode uses Android native microphone recording (not AIR microphone recording as on other platforms) for faster and reliable microphone & video recording. 
- Android: Added AUDIO_MONO and AUDIO_STEREO. Beware, these are experimental. When adding audio don't add buffers larger than 32768 bytes! Currently, when adding audio using these modes the app might freeze(its a known issue with audio).
- Android: Rewritten code extensively to support draining the audio & video encoders in separate threads (ie. improved overall performance)
- Android: Fixed Android 4.4+ issue - the video file is by default saved to apps folder on sd card now instead of the device internal storage.
- Android: Improved error handling, many Java errors(including unexpected errors) will now propagate to AS3 console in addition to the device log, making it easier to spot more serious issues instantly.
- Android: The ANE class wrapper was united with the rest of the platforms, so internally they are all using the same code now (previously Android used separate class).
- Android: FW FFmpeg Android is not being supported anymore. It will be still provided upon request (with FW 2.3 API).
- Flash: The domain memory is being reset after unloading the FW SWF. You need to "load" the SWFBridge with each recording for this to work(it automatically unloads the previously loaded SWFBridge including clearing all the domain memory). This prevents any possible memory leaks / growing memory usage caused by Crossbridge & Flash memory fragmentation.
- Flash: Fixed a bug which didn't reset multithreading to false when initializing the encoder for second time with realtime = false after realtime = true.
- Flash: Added "RAM guard", which is able to modify the recording fps dynamically depending on whenever the encoder is keeping up with the frames being sent to prevent accumulation of raw frames in RAM.
- Flash: Added the ability to control how much domain memory will be preallocated when initializing FW (in getInstance as second argument, in AIR this doesn't affect anything).

FW 2.4 PR2 almost there

Right now the final testing & packaging of FW 2.4 PR2 is happening. Before the final 2.4 release there will be some changes on the website as well, so FW 2.4 PR2 will happen in the meanime to not further delay this new update.

Of course, there are still more fixes we’d like to get into the final 2.4 for Android (the other platforms are in much better shape).

The FW 2.4 PR2 release is now expected next week.

The delay in release was mostly caused by string of Flash Plugin issues which culminated in the Flash Plugin crashing when running Alchemy code(we were  trying to find workarounds). The second reason of the delays was trying to get to a state where the new FW Android could be released at least as “alpha” instead of “tech demo” it was till now. In the end we had to be satisfied with a state where there are number of issues but at least we understand some of the biggest issues we saw. As a result, we know some workarounds as well.

One example of such obscure issue on Android & AIR: if you initiate webcam and start recording right afterwards, everything will just slowly disintegrate. This is due to the fact that even AIR reports the webcam as initialized, at least on our device it was still initializing, and playing with GLES context in the encoder init seemed to throw the whole GLES off. A simple (pretty ugly) solution for now is always making sure to initialize webcam at least few seconds before allowing any video recording. We expect more “golden gems” like that to popup on Android / AIR unfortunately.

There are ongoing issues with audio, but at least we’ve got the microphone recording working using native code and also both non-realtime mode and capturing individual DisplayObjects is supported (this is new). Which makes this version very close to the iOS version in terms of features – not in terms of stability yet, but we’ll get at least somewhere at 75-80% stability of iOS in the end (not very optimistic I know, but thats the nature of Android). We’ll have to work more on workarounds & detecting issues and gracefully handling them to avoid crashes or freezes. We will be getting into that phase pretty soon(after dealing with addSoundtrack and making addAudioFrame & microphone more stable for the final 2.4 release – which will finish the new Android version feature-wise).

There has been also news about the video recording capability in iOS9 – you can be sure we’ll implement this in FlashyWrappers as soon as possible. Similar API should be present in Android 5.0 and we’ll be looking at that as well. We’ll be always trying to implement the latest of mobile video recording API’s in case it helps with stability / performance. And these might help with both, including native audio recording. Of course those API’s will only capture fullscreen(or maybe screen regions) – luckily FW still supports individual DisplayObject / ByteArray capturing (now also on Android).

Anyway, stay tuned for more news – this past one-two months have been pretty hard in terms of accumulated bugs and delays, but we’re marching on to make FW the most stable & feature rich video recording SDK for Flash & AIR.

Oh, and one last thing. When contacting us, please make sure your inbox is working 🙂 If we are not answering within 2-3 days latest(usually we reply sooner) it is not because we’d like to ignore people, but because we can’t get to you.  This is specifically for “CPH” now (but there have been others in the past), there’s no way to send e-mails to you – we’ve tried several e-mail accounts.

We’re looking to add support forums / comments after FW 2.4 is out to make sure there are no issues with e-mails in the future.