About FlashyWrappers

Why?

As you probably know, there is no easy or practical way to capture a video of Flash / AIR stage. The most you can do is to capture webcam, and that solution demands a media server. There are ways or 3rd party libraries to capture the stage but the resulting format is usually too heavy to send over network. There are also other focused solutions which are usually closed systems and don't provide much room to be creative with the recording (have frame-by-frame control), upload videos to your own server or otherwise really "own" the video.

FlashyWrappers SDK aims to solve all of those issues in AIR and Flash Player. It is an unified collection of native libraries(ANE's) and one SWC (for Flash Player) enabling video recording of your AIR / Flash app while maintaining full control over the video content.

We think that AIR is still the best tool for quickly creating crossplatform 2D apps and games. Especially for individuals or organizations focused on creativity / design rather than "hardcore" native programming, we're trying to bring the power of native video encoding on various platforms to your fingertips. Whenever you need a quick app with webcam recording or are working on a creative app with user created content, adding video capture can either become the core of your app or provide means to promote your app through user shared videos.

How?

The job of FlashyWrappers consists of 3 parts:

FlashyWrappers SDK is built on top of various media encoding libraries, depending on your platform. If you are on iOS or Mac, it uses the native AVFoundation library. On Android, it uses the native MediaCodec library. On Windows, the modern native Windows API called MediaFoundation is being utilized. For Flash Player, we're using FFmpeg. FlashyWrappers itself, as the name suggests, is a collection of "wrappers" interfacing between the encoders and your AIR / Flash app.

But video encoding is not the only job of FlashyWrappers. It is also capable to capture directly from AIR's OpenGL context on multiple platforms, which is much faster than traditional Flash / AIR capturing methods for Stage3D or MovieClips (those often involve very slow methods to convert pixels to Bitmap, especially Stage3D).

As for audio, that is handled separately by FWSoundMixer. Capturing audio from Flash is pretty much impossible right now, so we had to build a custom mixer to achieve that. In AIR we're trying to move towards natively capturing AIR's audio. The video capture extension always expects audio data, so it is definitely possible to add sounds, music or microphone - we're working on making it more user friendly in the future though!

Background & Roadmap

FlashyWrappers was created as a solution for our own problem 2 years ago and grew since from Flash Player-only solution towards native Windows / Mac and lately iOS / Android. Currently we're focused on optimizing the encoding performance on Android (and also other platforms), and simplifying the API, while adding new features based on the needs of our customers.

Following is a roadmap for the SDK, sorted by priorities, top being the highest priorities (subject to change):

Updated November 1st 2015

  • Provide easy to use classes, such as mp4 replay class, webcam class (utilizing VideoTexure on mobile) (coming soon)
  • Stabilize Android MediaCodec based encoder (still in Alpha but much better than before)
  • Improve audio synchronization on all platforms (Improved significantly in 2.4, added realtime / non-realtime mode)
  • Provide "turnkey" apps utilizing video encoding (jukebox, kiosk etc.)
  • Implement native iOS audio realtime capture, replacing FWSoundMixer
  • Implement native Android audio realtime capture, replacing FWSoundMixer
  • Implement OpenGL / DirectX AIR capture on AIR Windows / Mac to avoid captureStage3D (which is pretty slow even on desktop)
  • Implement Windows / Mac audio realtime capture, replacing FWSoundMixer
  • Add "replay" component for OGV files and possibly for MP4's too so users don't have to implement this
  • Add "low memory" detection and mode to avoid crashes on mobile devices
  • Enable sharing videos to social media
  • Done:
  • Port FlashyWrappers iOS to OS X to get rid of the FFmpeg & embedded encoders dependency on Mac (almost there) -> free mp4's on Mac
  • Create brand new FlashyWrappers Windows utilizing OS encoders to get rid of the FFmpeg & embedded encoders dependency -> free mp4's on Windows
  • Simplify the API - this is an ongoing proccess
  • Feedback

    Your feedback is very important, often the most useful features or improvements towards stability are caused by your feedback! It's not in our power to test all the devices or various use cases for FlashyWrappers SDK. In case you've got feedback share it with us using contact form or just e-mail us directly at info (at) flashywrappers (dot) com