December 10, 2006
Testing the Creative Live! Cam Voice with FMS2

Recently I have had the opportunity to see in action a "Creative Live! Cam Voice" attached to LiveBoard, a FMS2-based document sharing application. To efficiently show a real document or phisical object to a remote user, You need a good video device. I usually use DV-cameras or professional document cams and rarely webcams because effective resolution is rarely good in webcams.

However Live Cam Voice is an high resolution consumer webcam. It has a 1280x960 cmos sensor and a directional array microphone. Below you find an example of image quality produced by the Flash application with smoothing and deblocking setted on (click to enlarge). At the max supported resolution, overall quality is fairly good, while, strangely, at lower resolutions is not good at all.

We must however notice that at this high resolution, framerate is low. I can achieve around 5-7 Fps but in my specific application this is not an issue. The more evident limit of this webcam is a certain image fuzzyness...expecially in image borders. The glass lens are fixed focus, a manual focus would give a better image sharpness. As every webcam, zoom is digital and using it leads to a visible loss of quality.


I found this webcam to be good as document cam but poor as generic webcam. Obviously I'm talking about using it with Flash and Flash Media Server applications. Given its low cost (80-90$) it can be a reasonable alternative to very expensive professional or prosumer Document Cam.

Fabio Sonnati ::

November 22, 2006
FMS tested over SuperUMTS connections

Finally I successfully tested SuperUMTS (HSDPA) performances in terms of bandwidth, latency, websurfing, and stability. In Italy, 3 firms offer SuperUMTS: Vodafone (70% of population coverage), TIM (48%) and 3 (60%). I chose to try Vodafone because I have used extensively and with satisfaction its UMTS service.

The test sessions have given very good results:
Downloading only speed: peak 100KByte/s (800Kbit/s), average 70-80KB/s.
Uploading only speed: peak 30KB/s (250Kbit/s), average 20-26KB/s.
Download and upload at the same time: around 60-70KB/s Down + 16-20KB/s Up.
Pinging a fast server on the web: 120-130ms with sporadic lags (300-500ms).
Overall stability: very good over hours of testing in a medium-low traffic cell.
Note: websurfing could and should be more responsive. Expecially considering the low latency and the high available bandwidth.

I have also tryed the connection with a bi-directional videoconference and collaborative application of mine (FMS based). The feeling was very good. Acceptable overall latency (300ms), very good upload bandwith, good stability.

Fabio Sonnati ::

November 03, 2006

sNow I'm an Adobe Community Expert Thanks to my activities on this Blog, FMS's forums and mailing lists, and to a number of articles, Adobe has included me in the Community Experts program (formerly Team Macromedia). I'm very honoured to be part of this group of experts who share their product expertise with the world-wide Adobe community.
This is the main page of the program: this is my Bio page:

Fabio Sonnati ::

October 18, 2006
One more High Definition Video Sample

The video is extracted by Elephants Dream , the world’s first "open" movie, made entirely with open source graphics software. The video is encoded at 1024x576 - 15Fps - 650Kbit video + 96Kbit/s audio. To go FullScreen use the context menu.

HD sample 3 - 750Kbit/s

Fabio Sonnati ::

October 11, 2006
Full-Screen High Definition Flash Videos

Everybody knows that the last built of Flash Player 9 can support a full-screen mode.
Around the web you can find various examples of "simple" videos played at fullScreen.
I was just curious and I have tryed to optimize some HD footages to push the Flash Player to its limit. The two examples below are 1024x576 videos optimized with scaling interpolation and deblocking. Enter the full screen mode using the right-mouse-button menu.
The playing of this kind of video requires a P4 3GHz (Athlon 3000+) or faster CPU and a Broadband connection. Enjoy yourself.

HD sample 1 - 750Kbit/s

HD sample 2 - 750Kbit/s

Fabio Sonnati ::

October 10, 2006
A really good news on FMS2

I can't avoid to talk about a radical change in FMS developer edition's EULA.
As anticipated by Stefan Richter on Flash Media Mailing List and confirmed by Steve Wolkoff (FMS's Product Manager), now, FMS 2.0.3 developer edition can be used COMMERCIALLY (!!!) with the restriction of 10 concurrent edition. It's also explicitly forbidded any clustered uses.
This move is a very good news.
Small projects like small 1:1 video conference applications, video surveilance appliances, video mail services with only little concurrent connections demands and a lot of other commercial applications can now use FMS legally. Excellent. A couple of project of mine can, finally, resurrect after the oblivion of the old FCS personal edition.

Fabio Sonnati

October 09, 2006
A new tutorial on Shooting Video for the web

As you know, in encoded videos there are mainly two big actors: keyframes and predicted frames. Keyframes are compressed in a JPEG-like manner, while predicted frames are compressed as differences. it's possible to reduce keyframes "weight", reducing their frequency. At the same time it's possible to reduce the size of predicted frame reducing the motion level in movies. A movie with low motion level can be encoded more efficiently (higher quality) for a given bitrate or can be smaller (lower bit-rate) for a give quality.
A new tutorial on talks about this. How to optimize video shooting when the delivery media is Internet at low/medium bandwidth.

Fabio Sonnati ::

October 05, 2006
Flash Video Technology whitepaper rev. 2 published

My first contribute to this blog was the publishing of a Technical WhitePaper about Flash Video Technology. One year is passed and a lot of changes happened...I feel the need of a revision to include VP6 and a comparison with H.264. The paper has 2 chapters, in the first I introduce the basic international standards for video compression (H.261,H.263,H.264), in the second I analyse the Flash implementation (Spark codec derives from H.263 and VP6 is comparable to H.264 ). Unlike the original whitepaper, I'll discuss extensively about real-time encoding optimization in a different document.
Here you find the paper.

Fabio Sonnati ::

September 04, 2006

Hardware Selection (V): one more professional scan-converter

In my lastest "Hardware Selection" posts, I have frequently talked about scan converter devices. A lot of developers mail me to ask about such devices because it is not so unusual to have to record or broadcast the VGA output of a computer or a laptop for training, elearning and other purpose.

Matrox MXO

Today I add to our collection of scan-converter the Matrox MXO. Matrox MXO takes the DVI output from your Mac computer or laptop and converts it to flicker-free broadcast-quality NTSC o PAL SD video. "Broadcast quality" means that the analog out signal (s-Video and composite) is good enough for professional video broadcasting.

This device can be used to acquire and stream the DVI output of a Mac to Flash Media Server using an analog frame grabber (ie: PCTV, various USB2.0 grabbers, read the posts below to find a bunch of FMS compatible grabber). Matrox MXO costs around 900€ + tax.

Fabio Sonnati ::

August 21, 2006
Some news for FMS developers

Returned from my short vacation I found a couple of interesting news:

First of all, the lastest Flash Player 8 penetration statistics. They report an 85% penetration in the US market and higher in Europe. This is a very good news for FMS and Flash Video developers because it means we can use Vp6 video without fear to exclude too much audience.

The second news is the announcement of the first Vp6 real-time encoding mid-range product. It is On2's Flix Live 8. Based on the expensive On2 Live SDK for Flash, the product is dedicated to live webcast for corporate firm and content delivery network. It generate a RTMP live stream and works with FMS. Beeing an encoder for live purpose, it can use the low latency Nelly Moser codec. The license is not very clear. They talk about 999$/year.

Fabio Sonnati ::

July 12, 2006
Dual Threshold buffering strategy in FMS2

A short post to mention my first article on Adobe's Developer Center.
Implementing a dual-threshold buffering strategy in Flash Media Server
I hope you enjoy the reading

Fabio Sonnati ::

July 5, 2006
The unstoppable rise of Flash Video

Flash Communication Server introduced for the first time, in the second half of 2002, the possibility to stream video using the Flash Player (it was the 6th edition). We know well the capabilities of this great peace of software, but for years, it has achieved only moderate market success. There may be several reasons: hard&long learning curve, expensive and limited licensing models, lack of tools to manipulate video files, and so on. The adoption rate was very very slow.

The second chapter of the story leads to the bug-fixed FCS 1.5. Nothing of (very) new under the sun on server side but the possibility, with the new Flash Player 7, to access a video file (FLV) also with a mere HTTP request and not only via FCS streaming. This has been a crucial choice. Progressive downloading has indeed strongly contributed to the launch of Flash technology as an effective video delivery platform.

The third and last chapter is the simulateneous launch of Flash Player 8 and Flash Media Server 2 in the second half of 2005. A revised streaming server and a new high quality codec (On2's Vp6) have definitively consecrated the rise of Flash Video Technology. In only a few months we have seen the birth of flash based media delivery platforms, internet tv solutions and video sharing platforms. I can mention among the others: YouTube, Google Video, ABC's video site, HGTV, Food Network, JumpCut, Maven Network, EyeSpot.
Adobe is going ahead of video-streaming veterans RealNetworks, Apple and Microsoft. Flash Player is today the second platform with a 18% of market share behind Windows Media (60%). The rate adoption is now very fast and its market share is really exploding.

Research firm IDC estimates that video content delivery is already capable to generate $230 million revenue but will jump to $1.7 billion by 2010, with a growing rate of 25% annually. According to research analysts, Adobe's server products division (which developes FMS2) is growing between 30% and 40% year-over-year with currently sales of around $50 million.

Is the long awaited "Flash Video Era" finally begun ?

Fabio Sonnati ::

June 20, 2006

Toward true mobile broadband?

I'm always been ready to try mobile connectivity solutions, but before UMTS I have been always disappointed with final performance in both bandwidth, stability and latency. I have developed in the past FMS2 applications for GPRS, EDGE and UMTS connectivity but with difficulty. Now I'm preparing to try the just announced Vodafone's Super UMTS, here in Italy. The technical name is HSDPA(High Speed Downlink Packet Access). It finally seems a true mobile broadband service with a declared peak bandwidth of 1.8Mbit/s in download and 384Kbit/s in upload and a good latency (80-100ms). If the quality of service will be confirmed, it will be possible to develope a new range of FMS2 applications. I'll keep you updated with my test's results in the near future...meanwhile, give a look at the specifications of the various mobile data connection standards. The values aren't theoretical (except the last *) but really measured in my experimentations using commercially available mobile services in Italy.

Standard DownloadUpload Latency
GSM <10Kbit/s<10Kbit/s ?
GPRS ~40Kbit/s10-20Kbit/s 800-1000ms
EDGE ~120Kbit/s30-60Kbit/s 400ms
UMTS < 300Kbit/s64Kbit/s 200ms
HSDPA up to 1.8Mbit/s *up to 384Kbit/s * 100ms *

Fabio Sonnati ::

May 22, 2006

How to stream local video clips to FMS ?

This is a question often find on FMS related mailing lists or forums.
The need is clear. Find a way to stream a local video clip (mpeg, divx etc...) to a Flash Media Server as it was a webcam feed. This may be very usefull in e-learning platform where the instructor could stream to the students all sort of learning video while maintaining a full controll of it. It may be also usefull in istant message platform where a user share his videos with other users istantly.
The answer is yes, it is possible using a software like Virtual Camera.

Virtual Camera is a software capable to mimic a webcam driver and send to it movie clips, slide shows or single image details as they was live sources. Flash Player can use it as a video sorce of any resolution and stream the content to FMS2.
The only problem is that Virtual Camera is at beta stage since 2005-5-30. Therfore it seems that unfortunately we won't be able to see a more advanced peace of sofware. In any case it is still usefull when this specific feature is needed. Bye.

Fabio Sonnati ::

May 06, 2006
Hardware Selection (IV): The definitive VGA grabber for FMS ?

I have not tryed it yet, but it seems to be really the definitive frame grabber for medical, industrial, e-learning and multimedia purpose. I'm talking about the Epiphan DVI2USB grabbing device.

Ephiphan DVI2USB grabber

In the last Hardware Selection I reviewed a very interesting Scan-Converter, a device capable to convert a VGA input to a set of target signal like S-video, Composite and DV.
Such device is very usefull if you want to grab the VGA output of a PC, console or custom device (medical, industrial, etc...) for recording or streaming, especially with our beloved FMS2. The main limit of that solution is the final image resolution. The VGA signal is converted to an analog or digital (DV) NTSC or PAL signal. Thus resolution is at best 720x576 and is interlaced. To achieve an higher resolution we would need a real frame grabber capable to sample and digitalize directly the VGA signal at native resolution, then, to be compatible with Flash Media Server, the grabber should have a WDM driver. Impossible quest ?

At the end I found it ! The Epiphan DVI2USB grabber is a real jewell. It works with VGA or DVI (!!!) input, samples it at native or lower resolution and stream the compressed (lossy or lossless) data stream to a PC using an USB 2.0 connection. They have also a (beta) WDM driver compatible with usual video grabber applications (and presumabily with FMS2). The final grabbing quality is excellent (see this page) and is inherently deinterlaced. It supports VGA resolution from 640x480 to 1600x1200. The final max grabbing frame rate is now of 20Fps at 800x600, 15Fps at 1024x768, 10Fps at 1280x1024, but Epiphan is confident to reach 30Fps in future releases of the WDM driver.

The price (999$ free world wide shipping) is high but acceptable for the high level applications that find great benefits from a device like that. I'm going to order and try it, I'll give you more impressions about it in thr future.

Fabio Sonnati ::

April 11, 2006
TechNote :: Dynamic buffering revamping

In a past and well appreciated TechNote, I explained a dynamic buffering technique which is able to take advantage of all the available bandwidth and, at the same time, is able to reduce, to the minimun, the pre-buffering time. (You find the whole article here.)

Recently I have improved the technique with a rate control code. This is the principle:

Use the prebuffering as rate control

A main advantage of the Dynamic buffering is the strong reduction of prebuffering time. This is obviously a great feature by itself, but we can find addictional value in it. We can use the prebuffering phase to measure the available bandwidth between client and server and therefore change accordingly the effective buffering depth or, if necessary, change the stream rate (between prerecorded ones).

The bandwidth measurement is indeed very simple. If we have set a prebuffer time of BT seconds, we can monitor the BufferLenght property measuring the time needed to fill the buffer to the i.e 80%. Let's call this time T80.
We calculate an available/required bandwidth ratio: R=(BT*0.8)/T80
If R>1, the available bandwidth is higher than the required. i.e: 1.2 means +20%.
If R<1, the available bandwidth is lower than the required. i.e: 0.7 means -30%.

Depending by the R ratio, we can change the preloading behaviour before the preload ends (this is why we measure the bandwidth over the 80% of buffer filling).
If R is consistently higher than 1, the behaviour remains unchanged and the prebuffering time remains very short.
If R is only a little higher than 1, it's better to enlarge the prebuffer depth. The prebuffering time becames longer but the playback more solid.
If R is lower than 1, we need to change the Stream with a scaled one. In this case, we have the great advantage of a short total buffering time, because, thanks to the Dynamic buffering, both the first (used to measure and then dropped) and the second (scaled stream) prebuffering times are inherently short.

A note to conclude:

I have created this Dynamic buffering scheme remembering of a key feature of Windows Media Player 9: Microsoft calls it "Fast-Streaming". Now, it is available also for our beloved FMS2.

FIG 1 . Standard Buffering: Bandwidth fluctuations vs Buffer time

FIG 2 . Dynamic Buffering: Bandwidth fluctuations vs Buffer time

Fabio Sonnati ::

April 3 , 2006

About the new Flash8's ScreenCapture V2 codec

Recently Adobe has released the SWF & FLV documentation updated to the last FP8 version.
Reading the document, I have discovered that FlashPlayer8 supports a new screen capture codec. It is an enhancement of the previous, mainly used by Breeze (in realtime) or by programs like Captivate and Camtasia. The old codec was very simple yet effective. It divides the screen in wide macroblocks (es: 64x64 pixels), reduces the number of colors, and transmits the changed blocks after compressing them in Zlib. This is very similar to what VNC does. The new codec can use two different types of macroblock: Iblock and Kblock. The Kblock works like a keyframe and is archived for future references. The Iblock is encoded as differences from a previous block. This new approach, similar to the usual compression of generic video content, guarantees a much better compression ratio, especially in standard "moving windows" scerio. Probably we will able to see this new codec at work in the next release of Breeze and/or Captivate.

Fabio Sonnati ::

March 21 , 2006

Hardware Selection (III) : Scan Converters

First of all: What is a ScanConverter ?
Let's start from the beginning. Have you ever tryed to acquire the video output of your personal using the video composite or s-video output signal offered by modern video-card ? If the answer is yes, You have obtained poor results for sure. The problem is the low quality scan converter integrated in the video-card. This circuitry has the duty to convert the SVGA analog output to PAL or NTSC standard. Indeed this is not an easy task. In example, to convert a non interlaced 1024x768x85Hz signal in to 720x576x25Hz interlaced signal is evidently difficult and needs appropriate resampling, scaling, decimating. A scan converter must do this in the best way it can and the more the converter is expensive, the more the quality is high.

In my Flash Media Server application development experiences, I have had to acquire the SVGA output of a personal or PC-based devices for recording or broadcasting. I have had to broadcast PC desktops during congresses, PC-based ecographers, an Hospital PACS's display, and other custom devices with SVGA output. In these cases I needed a good scan-converter capable to convert the SVGA to S-video allowing me to grab the S-video signal to make it available to a dedicated Flash - FMS application.

I tryed a lot of low-mid level products, all with very poor final results (blurryness, loss of contrast and saturation). I had also the possibility to see in action professional scan converter used in professional video broadcasting. They was perfect and also capable to generate progressive output, but was very,very expensive (starting from 30.000$). Finally, in my endless quest for video devices with an optimal performance/price ratio, I found a very good and flexible scan converter: the Canopus's TwinPact 100

TwinPact100 is indeed a multifunctional digital video converter: it provides not only a good SVGA to s-video conversion, but a SVGA to DV (Firewire) too!.
TwinPact100 is the world's first multifunctional video converter to feature SVGA to analog and digital video conversion, and bi-directional analog / digital video conversion. It has 4 inputs: SVGA, DV, Composite and S-video, and 3 output: DV, Composite, S-video. It's able to convert each input to a desired output format. Therefore it's possible to convert SVGA to DV (!) or S-video, but it's also possible to convert DV to S-video, and again S-Video to DV. The fine circuitry is able to re-generate sincronism (TBC) and signal quality; it restores colors, contrast and saturation. For this reason, the TwinPact100 can be used to clean problematic analog signals before grabbing.

Figure 1: example of screen grabbing

TwinPact100 supports an hi-quality scan conversion of resolutions up to 1600 x 1200.
At the heart of the TwinPact100 is Canopus 's proprietary DV codec chip providing picture quality preservation during analog-to-DV and DV-to-analog conversion. It employs advanced 3D Y/C separation and 3D noise reduction functions for enhancing analog video quality. Poor analog source video is filtered prior to DV conversion to provide better quality video. Only for NTSC input, its also available a 2D/3D Y/C separation function (separates the Y/C (S-Video) signal to RGB using chronological information between signals).

Concluding, for around 450-500$ (550€), TwinPact 100 is the perfect tool to acquire and transmit a SVGA output using Flash Media Server 2

Fabio Sonnati ::

March 3 , 2006

Hardware Selection (II) : Frame Grabbers

In this post, I'll present you my preferite frame grabber. It's the Terratec's Grabster AV250. In my endless quest for efficient, Flash compatible video grabbers, a couple of year ago, I found the first Grabber Family model, the AV200. It was a very good USB2.0 Audio-Video grabber but its recent successor (AV250) It's even better.

AV250 acquires the video source from a Videocomposite or S-Video connection and converts it to a YUV uncompressed stream. This huge 200Mbit/s stream is sent to the computer using USB 2.0 connection. The SNR and color separation are superb for a 150$ grabber. The grabber is perfectly compatible with Flash Player 8 and can be used with great satisfaction for Flash Media Server applications.

It offers a wide range of resolutions: 720x576 (Full Pal), 640x480, 352x288 (CIF), 320x240, 174x144 (QuarterCIF), 160x120. All up to 25 Fps. A full range of NTSC resolution is supported too.

But the really unique feature of AV250 is the possibility to deinterlace video at *Driver Level*. This means that Flash can acquires and streams a video source really deinterlaced with
high efficiency.

AV250 can deinterlace the source with
3 approach:
1. An high-motion mode,
basically a technique that fuses fields to eliminate interlacing.
2. A low-motion mode, a real progressive deinterlacing technique that preserve resolution but produce some little artifacts in high motion scene.
3. BOB algorithm, a coarse techique that eliminate every odd o even fields.

The deinterlacing performance are good. You can use the low-motion mode for talking head, document cam, or other, somewhat, static source. Otherwise you can use the high motion mode which is the one that guarantees a perfect elimination of interlacing artifacts but costs a little lost of resolution. Don't mind about BOB.

The last feature of the grabber, is the possibility to acquire audio too. As you can see in the picture above, the Grabster is suited with two BCA connection for a stereo input.
The producer site:

Fabio Sonnati ::

February 15 , 2006

Good News: a Nelly Moser ASAO transcoder from Adobe ?

FMS developers know well the topic. Today it's impossible to encode a FMS recorded FLV to something else. This because Flash Player records audio using a proprietary codec: Nelly Moser's ASAO. The lack of transcoding tools is a well known problem and it limits the interoperability of FMS. In example, it's impossible to send a FMS recorded video message to a cellphone (3gp) or to an IPod (avi or mp3).
Indeed I was working on a trancoder tool but a recent post of Steve Wolkoff (product manager of FMS) on Chattyfig's FMS mailing list has finally given a more consistent hope to all the frustrated FMS developers like me:

" We are putting some free FMS tools on Adobe Labs in the next few weeks. One of these tools is an FLV > MP3 converter. Disclaimer: When released on Adobe Labs, this software will be considered pre-Alpha, unsupported, and cannot be used in commercial applications. We are putting it on Labs to gather real world feedback and learn how people want to use this tool. However, this is a feature/tool that we would eventually like to see available in a
supported form.
" Steve Wolkoff

This is a really great news. With this moves Adobe is doing the right thing. We need these tools and a costant upgrade to push FMS on the market. After 3 year of FCS development and a little disappointment for some lacking features in the new FMS, I can assert that with the right support, Flash Media Server can make the Big Jump, expecially in the interactive streaming market. I hope Adobe will give soon solutions to other problems like Vp6 realtime encoding (or decent spark realtime encoding external to Flash Player), development tools to extend FMS features (i.e. the Java SDK), and more flexible licensing models.

Fabio Sonnati ::

February 9 , 2006

Flash Video in full-screen: a possible solution

Recently I was evaluating for a customer the possibility to build an Internet TV platform around FMS. Indeed, recently a growing number of players have chosen Flash Video and FMS to offer Internet TV streaming services.

We all know the advantages of such solution against Microsoft Media Player, Quick Time or Helix platforms. But exist an annoying and potentially devastating weak point in Flash Video playback: it's the lack of an accelerated Full Screen modality.

Media Players on modern Operative Systems, use modern video card's acceleration engines. The simplier way to accelerate a movie playback is to render the video stream in native video mode (YUV, I420, etc...) and native resolution. This decompressed video stream is then rendered on the screen directly by the DAC circuitry with appropriate color conversion, resolution scaling and interpolation. Media Players consume the same amount of processing power for showing a movie in a small windows or at full screen.

This is not the case of Flash Player. FP uses the "desktop screen space" and operates directly the set of processings necessary to properly render the movie on the screen: convertion in RGB color space, scaling and interpolation. The lack of video acceleration means that render a video with a native resolution of 320x240 over a windows of 640x480 is 4 time slower than render the same video on a 320x240 windows. Think of render it at is 16 time slower.

The result is the difficulty to keep a sufficient frame rate at full-screen, expecially with the new On2's Vp6 encoded movies. But a complete Internet TV service can not renounce to a decent Full Screen can you sell a video that the user can only see in a relatively small window ?

A possible solution is to create a specific projector based player for that Internet-TV service (as done by Google Video) to be used to play efficiently at full screen. Using MDM Zinc 2.0, in example, is possible to play a flash movie in full screen at a desired DirectX resolution: 640x480, 800x600, 1024x768 and the like. Setting the desired output resolution (ie 640x480) allow us to achieve an optimal performance independently by the specific desktop resolution.

Fabio Sonnati ::

February 4 , 2006

Hardware Selection (I) : Webcams

My preferite webcam Family is, without doubt, the Philips ToUCam Pro. Stay away from the base model (ToUcam) which is a low-priced cmos webcam and try instead the professional.

ToUCam Pro
ToUCam II Pro
ToUCam Pro 3D

Basically It is 100$ usb webcam with a good CCD sensor and a good driver. These are the main features:

- 640x480 pixels CCD.
- Frame rate up to 60fps, up to 640x480 (with Flash works well up to 30fps).
- Native resolutions: 160x120, 320x240, 640x480.
- Possible settings: fps, luminosity, contrast, saturation, gamma, white balance, esposition, gain, anti flicker, de-noising, mirror, microphone level.
- Includes Microphone
- Manual focus from 2cm to infinite
- Glass Lens
- USB 1.0 interface The quality is very good thanks to the CCD sensor, glass lens and to the manual focus (commonly, webcams use noisy CMOS sensors, fixed focus and plastic lens). It's always easy to find a good set of settings for any lighting level. The automatic setting option works well.

The driver works perfectly with Flash Player and support also the use of multiple sources. I have been succesfull in using simultaneously 3 philips webcam in the same Flash Com application at 320x240 20fps.

The first generation of the family offered also the ToUCam Pro 3D Model which was basically a ToUCam Pro webcam arm mounted. In short, It was a wonderful Document Cam with a n unbeatable Price/Performance ratio. Unfortunately Philips had stopped the production last year...

Fabio Sonnati ::

January 31, 2006

Flash Video Blog :: Hardware Selection

Some readers asked my to post a selection of audio/video hardware compatible with FMS (FCS). Indeed in 3 years of Flash Com development I have tested a lot of webcams, camcorders, audio-video grabbers, scanline converters, video scalers and other strange devices.

In a few next submissions I'll present you a selection of audio-video devices and tools which had proved to be useful in Flash Media Server application developments. I'll review a couple of webcams, a scanline converter, a coupe of frame grabbers, and a small set of software tools. All of these had been used succesfully in different Flash Media Server applications.

Stay tuned...

Fabio Sonnati ::

January 30, 2006

Thoughts about Nelly Moser's ASAO: latency & bandwidth

As you know, Flash Player uses a specific voice codec to encode audio during real-time streaming. This codec is Nelly Moser's ASAO.
Why Macromedia chose this codec instead of MP3 which is also supported by Flash Player ?
The reason is: latency. MP3 uses 576 or 1152 samples per packet depending by sampling frequency. Nelly Moser ASAO uses always 256 samples per packet instead (note that ASAO handles only monofonic audio signals).
This mean that ASAO latency is from 2 to 4 times lower than MP3 latency. This is very important because latency is a critic issue in real-time audio communication. The encoding latency must be below 50ms to produce a better users experience.

Let's make an example: at 11KHz, you need to collect 1152 samples to encode an MP3 packet. This produce not less than 100ms of encoding latency. Then, the packet is trasmitted over Internet with an additional trasmission latency. ASAO need only 256 samples to encode the packet, at any sampling rate, and therefore the encoding latency is reduced to 25ms.

Every ASAO packet are compressed of a 1 to 8 ratio. The original 256 audio samples are trasformed in frequency domain. Then is applyed an audio masking control to reduce the number of significant coefficients. A number of high amplitude frequency coefficients remained is finally quantized and Huffman encoded to reduce entropy and redundancies.

The final compressed ASAO packet is always 64 bytes long. FLV audio Tags may contain 1,2 or 4 ASAO packets. Typically there are 20-40 audio tags per second. The FLV audio tag header is 13 bytes long.

So, it's easy to calculate the exact amount of bandwidth and latency of any Flash Player's audio encoder modes:

mode (KHz) bandwidth encoding latency
44KHz92Kbit/s 6ms
22KHz47Kbit/s 12ms
11KHz26Kbit/s 25ms
8KHz19Kbit/s 32ms
5.5KHz13Kbit/s 50ms

As you see in the table above, it seems to be better to use higher sampling rate mode to achieve a lower latency. This is true only on fast enough connection because higher sampling rate means higher packet aggregation and therefore the latency of trasmission may became a critical issue. Generally this is not a problem on DSL, cable modem, etc... but can be critical on Dialup connection where probably the better modes are 11-8 KHz.

Fabio Sonnati ::

January 13 , 2006

Why I love FFMPEG (IV): Final considerations.

To conclude this set of posts dedicated to FFMPEG I want to mention the last reason why I love FFMPEG: FFMPEG is a great open source project. It's full of options, it's very fast, it's the only tool capable to re-encode the video track of an FLV recorded by FMS, and it's totally free! What do you want more ?

With these positive features, the lack of VP6 encoding capability may be easily forgiven in a wide range of projects, expecially if you consider that, today, flash 8 penetration is around 55% agaist a flash 7 penetration of 97%. On the other hand, if the primary requirement is quality, there are always the other 3 Vp6 encoders on the market (flix, sorenson, flash8 encoder) capable to encode video in the new Vp6 codec. They have less flexibility, are much slower, are obviously more expensive but generate a superior quality FLV, expecially at low bitrate.

Don't misunderstand me, I love FFMPEG, but I love VP6's quality too. It's only a matter of requirements and performances. And now the choise is up to you.

Fabio Sonnati ::

January 09, 2006

Why I love FFMPEG (III): FLV to FLV conversion.

Why I love FFMPEG ? The third reason is the possibility to encode FLV to something else, also to a new FLV (obviously with different parameters).

If you have an FLV, it may have been generated by encoding from a different file format or by realtime recording (using FMS). In the first case, there is not problem, and FLV may be converted to a lot of different target formats (DIVX, MPEG, H.264, 3GPP, etc...). Instead, in real-time recording the Flash Player uses a peculiar audio codec, Nelly Moser's Asao. The infamous Nelly Moser Asao is indeed a very interesting codec (low latency and good quality/bandwidth ratio) but it is a proprietary format.

This means that it's "impossible", by now, to convert the audio track of a real-time recorded FLV to another format, or to recompress the audio track. The only thing we can do is to re-encode the FLV video track leaving the audio track untouched.

Use this syntax:FFMPEG.EXE -i SOURCE.FLV [various setting] -acodec copy DESTINATION.FLV

with the -acodec copy we force FFMPEG to use the same audio tags of the source.

The possibility to recompress real-time encoded FLVs is very important. We can use the right bitrate to suite our quality expectation in recording with FMS and then adjust appropriately the quality/bandwidth ratio re-compressing the video track with FFMPEG.In a recent project, I acquire simultaneously different high quality video streams. I use high bitrates to achieve high qualities (Flash Player realtime video encoding has a low efficiency, therefore more bandwidth is needed to guarantee the desired quality level, this is dued also to D frames, read my articles to know more). Then I re-compressed the video track using FFMPEG with optimal parameters.

The only problem is to choose an appropriate Asao bit rate at the beginning, because it can't be changed anymore. Indeed, I'm recently working to achive a 1:2, 1:4 bandwidth reduction in Nelly Moser Asao coded audio track and even more. I'll inform you if I'll be successfull in this research.

Today exists a beta tool capable to convert ASAO to MP3, but it is poorly scalable and need more optimizations to became a must. Waiting for an appreciable (but not probable) move from NellyMoser or Adobe, it is still the only available solution.

Fabio Sonnati ::

January 04, 2006

Why I love FFMPEG (II): Encoding speed.

Why I love FFMPEG ? The second reason is encoding speed.
Using Sorenson, Flash8 standard encoder and Flix suites to convert a video to both spark and VP6 FLV is SLOW. FFMPEG converts video only to the old spark FLV format, but it is very, very, very FAST.

On my Athlon64 3500+, converting a 640x340, 30 fps, 227 seconds long DIVX music clip to a 320x170, 15 fps FLV clip takes only 32 second with FFMPEG; 42 s maintaining the original 30 fps and 50 s maintaining the original frame resolution and frame rate. Furthermore, leaving the original MP3 tags using -acodec copy parameter, almost halves these times!

Using the Flash8's encoder I need respectively 300, 325 and 280 (?) seconds for spark encoding, and 390, 480, 960 seconds for VP6 encoding. FFMPEG is 10-15 times faster than Flash8's standard video encoder... If you consider that Flix and Sorenson are slower than standard Flash8 understand that the use of good old Spark codec is still a valuable option when high encoding speed is required.

I don't think I need to spend more words on speed factor.

Fabio Sonnati ::


:: 2005

My name is Fabio Sonnati. I'm a freelance ICT consultant graduated in Electronic Engineering. I'm Lead Developer and co-founder of Progetto Sinergia, a Team of ICT consultants specialized in Internet, Video, and Multimedia applications.
This is the blog where I want to share my knowledge and tools about Flash Media Server and Flash Video. Read this to know more about Flash Video Factory, our Flash Video based streaming platform.There You'll find my Italian Blog, too.


White Paper


:: FLV D-Killer
(read more here)


:: Implementing a dual threshold buffering strategy in FMS2


:: 2008
:: 2007
:: 2006
:: 2005

RSS Feed :



MX Developer's Journal Blogger :

FlashVideo Blog - Optimizations and Tools
F:V:F - Flash Video Factory
Copyright 2005 - Progetto Sinergia